{"components":{"schemas":{"app.AWSAccount":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"iam_role_arn":{"type":"string"},"id":{"type":"string"},"region":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.AWSECRImageConfig":{"properties":{"aws_region":{"type":"string"},"component_config_id":{"description":"connection to parent model","type":"string"},"component_config_type":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"iam_role_arn":{"description":"actual configuration","type":"string"},"id":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.AWSIAMRoleType":{"enum":["runner_provision","runner_deprovision","runner_maintenance","breakglass","custom","runner_breakglass"],"type":"string"},"app.AWSStackOutputs":{"properties":{"account_id":{"type":"string"},"break_glass_role_arns":{"additionalProperties":{"type":"string"},"type":"object"},"custom_role_arns":{"additionalProperties":{"type":"string"},"type":"object"},"deprovision_iam_role_arn":{"type":"string"},"install_inputs":{"additionalProperties":{"type":"string"},"type":"object"},"maintenance_iam_role_arn":{"type":"string"},"private_subnets":{"items":{"type":"string"},"type":"array"},"provision_iam_role_arn":{"type":"string"},"public_subnets":{"items":{"type":"string"},"type":"array"},"region":{"type":"string"},"runner_iam_role_arn":{"type":"string"},"runner_subnet":{"type":"string"},"vpc_id":{"type":"string"}},"type":"object"},"app.Account":{"properties":{"account_type":{"$ref":"#/components/schemas/app.AccountType"},"created_at":{"type":"string"},"email":{"type":"string"},"id":{"type":"string"},"org_ids":{"description":"ReadOnly Fields","items":{"type":"string"},"type":"array"},"permissions":{"$ref":"#/components/schemas/permissions.Set"},"roles":{"items":{"$ref":"#/components/schemas/app.Role"},"type":"array"},"subject":{"type":"string"},"updated_at":{"type":"string"},"user_journeys":{"items":{"$ref":"#/components/schemas/app.UserJourney"},"type":"array"}},"type":"object"},"app.AccountType":{"enum":["auth","auth0","service","canary","integration"],"type":"string"},"app.ActionWorkflow":{"properties":{"app_id":{"type":"string"},"config_count":{"type":"integer"},"configs":{"items":{"$ref":"#/components/schemas/app.ActionWorkflowConfig"},"type":"array"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"labels":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_labels.Labels"},"name":{"description":"metadata","type":"string"},"status":{"description":"TODO: change to default null after migration \u0026 after initial pr","type":"string"},"status_description":{"type":"string"},"status_v2":{"$ref":"#/components/schemas/app.CompositeStatus"},"updated_at":{"type":"string"}},"type":"object"},"app.ActionWorkflowConfig":{"properties":{"action_workflow_id":{"type":"string"},"app_config_id":{"type":"string"},"app_id":{"type":"string"},"break_glass_role_arn":{"type":"string"},"component_dependency_ids":{"items":{"type":"string"},"type":"array"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"enable_kube_config":{"$ref":"#/components/schemas/sql.NullBool"},"id":{"type":"string"},"references":{"items":{"type":"string"},"type":"array"},"refs":{"items":{"$ref":"#/components/schemas/refs.Ref"},"type":"array"},"role":{"type":"string"},"steps":{"items":{"$ref":"#/components/schemas/app.ActionWorkflowStepConfig"},"type":"array"},"timeout":{"type":"integer"},"triggers":{"description":"INFO: if adding new associations here, ensure they are added to the batch delete activity","items":{"$ref":"#/components/schemas/app.ActionWorkflowTriggerConfig"},"type":"array"},"updated_at":{"type":"string"}},"type":"object"},"app.ActionWorkflowStepConfig":{"properties":{"action_workflow_config_id":{"type":"string"},"app_config_id":{"description":"this belongs to an app config id","type":"string"},"app_id":{"type":"string"},"command":{"type":"string"},"connected_github_vcs_config":{"$ref":"#/components/schemas/app.ConnectedGithubVCSConfig"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"id":{"type":"string"},"idx":{"type":"integer"},"inline_contents":{"type":"string"},"name":{"description":"metadata","type":"string"},"previous_step_id":{"type":"string"},"public_git_vcs_config":{"allOf":[{"$ref":"#/components/schemas/app.PublicGitVCSConfig"}],"description":"all the details needed for a step"},"references":{"items":{"type":"string"},"type":"array"},"updated_at":{"type":"string"}},"type":"object"},"app.ActionWorkflowTriggerConfig":{"properties":{"action_workflow_config_id":{"type":"string"},"app_config_id":{"description":"this belongs to an app config id","type":"string"},"app_id":{"type":"string"},"component":{"$ref":"#/components/schemas/app.Component"},"component_id":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"cron_schedule":{"type":"string"},"id":{"type":"string"},"index":{"type":"integer"},"type":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.ActionWorkflowTriggerType":{"enum":["manual","cron","adhoc","pre-deploy-component","post-deploy-component","pre-teardown-component","post-teardown-component","pre-secrets-sync","post-secrets-sync","pre-provision","post-provision","pre-reprovision","post-reprovision","pre-deprovision","post-deprovision","pre-deploy-all-components","post-deploy-all-components","pre-teardown-all-components","post-teardown-all-components","pre-deprovision-sandbox","post-deprovision-sandbox","pre-reprovision-sandbox","post-reprovision-sandbox","pre-update-inputs","post-update-inputs"],"type":"string"},"app.AdHocStepConfig":{"properties":{"action_workflow_config_id":{"type":"string"},"app_config_id":{"description":"this belongs to an app config id","type":"string"},"app_id":{"type":"string"},"command":{"type":"string"},"connected_github_vcs_config":{"$ref":"#/components/schemas/app.ConnectedGithubVCSConfig"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"id":{"type":"string"},"idx":{"type":"integer"},"inline_contents":{"type":"string"},"name":{"description":"metadata","type":"string"},"previous_step_id":{"type":"string"},"public_git_vcs_config":{"allOf":[{"$ref":"#/components/schemas/app.PublicGitVCSConfig"}],"description":"all the details needed for a step"},"references":{"items":{"type":"string"},"type":"array"},"updated_at":{"type":"string"}},"type":"object"},"app.App":{"properties":{"app_configs":{"items":{"$ref":"#/components/schemas/app.AppConfig"},"type":"array"},"cloud_platform":{"type":"string"},"config_count":{"description":"Transient field for config count (not persisted to database)","type":"integer"},"config_directory":{"type":"string"},"config_repo":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"description":{"type":"string"},"display_name":{"type":"string"},"id":{"type":"string"},"input_config":{"allOf":[{"$ref":"#/components/schemas/app.AppInputConfig"}],"description":"fields set via after query"},"links":{"additionalProperties":{},"type":"object"},"name":{"type":"string"},"notifications_config":{"$ref":"#/components/schemas/app.NotificationsConfig"},"org_id":{"type":"string"},"permissions_config":{"$ref":"#/components/schemas/app.AppPermissionsConfig"},"queue_id":{"type":"string"},"runner_config":{"$ref":"#/components/schemas/app.AppRunnerConfig"},"runner_type":{"type":"string"},"sandbox_config":{"$ref":"#/components/schemas/app.AppSandboxConfig"},"status":{"type":"string"},"status_description":{"type":"string"},"status_v2":{"$ref":"#/components/schemas/app.CompositeStatus"},"updated_at":{"type":"string"}},"type":"object"},"app.AppAWSIAMPolicyConfig":{"properties":{"app_aws_iam_role_config_id":{"type":"string"},"app_config_id":{"type":"string"},"cloudformation_stack_name":{"type":"string"},"contents":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"gcp_permissions":{"items":{"type":"string"},"type":"array"},"gcp_predefined_role":{"type":"string"},"id":{"type":"string"},"managed_policy_name":{"type":"string"},"name":{"type":"string"},"org_id":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.AppAWSIAMRoleConfig":{"properties":{"app_config_id":{"type":"string"},"cloud_platform":{"type":"string"},"cloudformation_param_name":{"type":"string"},"cloudformation_stack_name":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"description":{"type":"string"},"display_name":{"type":"string"},"enabled_in_stack":{"$ref":"#/components/schemas/sql.NullBool"},"id":{"type":"string"},"name":{"type":"string"},"org_id":{"type":"string"},"owner_id":{"type":"string"},"owner_type":{"type":"string"},"permissions_boundary":{"type":"string"},"policies":{"items":{"$ref":"#/components/schemas/app.AppAWSIAMPolicyConfig"},"type":"array"},"type":{"$ref":"#/components/schemas/app.AWSIAMRoleType"},"updated_at":{"type":"string"}},"type":"object"},"app.AppBranch":{"properties":{"app_id":{"type":"string"},"configs":{"items":{"$ref":"#/components/schemas/app.AppBranchConfig"},"type":"array"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"org_id":{"type":"string"},"queue":{"$ref":"#/components/schemas/app.Queue"},"updated_at":{"type":"string"},"workflows":{"items":{"$ref":"#/components/schemas/app.Workflow"},"type":"array"}},"type":"object"},"app.AppBranchConfig":{"properties":{"action_ids":{"items":{"type":"string"},"type":"array"},"app_branch_id":{"type":"string"},"component_ids":{"items":{"type":"string"},"type":"array"},"config_number":{"description":"generated view field","type":"integer"},"connected_github_vcs_config":{"$ref":"#/components/schemas/app.ConnectedGithubVCSConfig"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"install_groups":{"items":{"$ref":"#/components/schemas/app.AppBranchInstallGroup"},"type":"array"},"org_id":{"type":"string"},"public_git_vcs_config":{"$ref":"#/components/schemas/app.PublicGitVCSConfig"},"updated_at":{"type":"string"},"workflows":{"items":{"$ref":"#/components/schemas/app.Workflow"},"type":"array"}},"type":"object"},"app.AppBranchInstallGroup":{"properties":{"app_branch_config_id":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"install_ids":{"items":{"type":"string"},"type":"array"},"max_parallel":{"type":"integer"},"name":{"type":"string"},"order":{"type":"integer"},"org_id":{"type":"string"},"requires_approval":{"type":"boolean"},"rollback_on_failure":{"type":"boolean"},"updated_at":{"type":"string"}},"type":"object"},"app.AppBranchRun":{"properties":{"app_branch":{"$ref":"#/components/schemas/app.AppBranch"},"app_branch_config":{"$ref":"#/components/schemas/app.AppBranchConfig"},"app_config_id":{"description":"AppConfigID is the app config that was created/synced during this run","type":"string"},"commit_sha":{"description":"CommitSHA is the VCS commit that triggered or is associated with this run\nDEPRECATED: Use VCSConnectionCommit relationship instead","type":"string"},"completed_at":{"description":"CompletedAt tracks when execution finished","type":"string"},"created_at":{"type":"string"},"created_by":{"$ref":"#/components/schemas/app.Account"},"created_by_id":{"type":"string"},"error_message":{"description":"ErrorMessage stores any error that occurred during execution","type":"string"},"force":{"description":"Force indicates if this run was forced (bypassing change detection)","type":"boolean"},"id":{"type":"string"},"log_stream":{"$ref":"#/components/schemas/app.LogStream"},"log_stream_id":{"description":"LogStreamID is the log stream created during this run for event tracking","type":"string"},"queue_signal":{"allOf":[{"$ref":"#/components/schemas/app.QueueSignal"}],"description":"QueueSignal is the signal that was enqueued to trigger this run"},"started_at":{"description":"StartedAt tracks when execution actually began","type":"string"},"status":{"description":"Status tracks the current state of the run\nValues: pending, running, success, failed, cancelled","type":"string"},"updated_at":{"type":"string"},"vcs_connection_commit":{"$ref":"#/components/schemas/app.VCSConnectionCommit"},"workflow":{"$ref":"#/components/schemas/app.Workflow"},"workflow_id":{"type":"string"}},"type":"object"},"app.AppBreakGlassConfig":{"properties":{"app_config_id":{"type":"string"},"app_id":{"type":"string"},"aws_iam_roles":{"items":{"$ref":"#/components/schemas/app.AppAWSIAMRoleConfig"},"type":"array"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"org_id":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.AppConfig":{"properties":{"action_ids":{"items":{"type":"string"},"type":"array"},"action_workflow_configs":{"items":{"$ref":"#/components/schemas/app.ActionWorkflowConfig"},"type":"array"},"app_branch":{"$ref":"#/components/schemas/app.AppBranch"},"app_branch_id":{"type":"string"},"app_id":{"type":"string"},"break_glass":{"$ref":"#/components/schemas/app.AppBreakGlassConfig"},"checksum":{"type":"string"},"cli_version":{"type":"string"},"component_config_connections":{"items":{"$ref":"#/components/schemas/app.ComponentConfigConnection"},"type":"array"},"component_ids":{"items":{"type":"string"},"type":"array"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"input":{"$ref":"#/components/schemas/app.AppInputConfig"},"intermediate_config":{"$ref":"#/components/schemas/blobstore.Blob"},"operation_role_config":{"$ref":"#/components/schemas/app.AppOperationRoleConfig"},"org_id":{"type":"string"},"permissions":{"$ref":"#/components/schemas/app.AppPermissionsConfig"},"policies":{"$ref":"#/components/schemas/app.AppPoliciesConfig"},"readme":{"type":"string"},"runner":{"$ref":"#/components/schemas/app.AppRunnerConfig"},"sandbox":{"$ref":"#/components/schemas/app.AppSandboxConfig"},"secrets":{"$ref":"#/components/schemas/app.AppSecretsConfig"},"stack":{"$ref":"#/components/schemas/app.AppStackConfig"},"state":{"type":"string"},"status":{"$ref":"#/components/schemas/app.AppConfigStatus"},"status_description":{"type":"string"},"status_v2":{"$ref":"#/components/schemas/app.CompositeStatus"},"updated_at":{"type":"string"},"vcs_connection_commit":{"$ref":"#/components/schemas/app.VCSConnectionCommit"},"version":{"description":"fields that are filled in via after query or views","type":"integer"}},"type":"object"},"app.AppConfigStatus":{"enum":["active","pending","syncing","error","outdated"],"type":"string"},"app.AppConfigVersion":{"enum":["","v2"],"type":"string"},"app.AppInput":{"properties":{"app_input_id":{"type":"string"},"cloudformation_stack_name":{"description":"CloudFormation configuration (computed fields, not stored in DB)","type":"string"},"cloudformation_stack_parameter_name":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"default":{"type":"string"},"description":{"type":"string"},"display_name":{"type":"string"},"group":{"$ref":"#/components/schemas/app.AppInputGroup"},"group_id":{"type":"string"},"id":{"type":"string"},"index":{"type":"integer"},"internal":{"description":"Deprecated: this field was never enforced and has no effect.","type":"boolean"},"name":{"type":"string"},"org_id":{"type":"string"},"required":{"type":"boolean"},"sensitive":{"type":"boolean"},"source":{"type":"string"},"type":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.AppInputConfig":{"properties":{"app_config_id":{"type":"string"},"app_id":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"input_groups":{"items":{"$ref":"#/components/schemas/app.AppInputGroup"},"type":"array"},"inputs":{"items":{"$ref":"#/components/schemas/app.AppInput"},"type":"array"},"install_inputs":{"items":{"$ref":"#/components/schemas/app.InstallInputs"},"type":"array"},"org_id":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.AppInputGroup":{"properties":{"app_input_id":{"type":"string"},"app_inputs":{"items":{"$ref":"#/components/schemas/app.AppInput"},"type":"array"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"description":{"type":"string"},"display_name":{"type":"string"},"id":{"type":"string"},"index":{"type":"integer"},"name":{"type":"string"},"org_id":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.AppInputSource":{"enum":["vendor","customer"],"type":"string"},"app.AppOperationRoleConfig":{"properties":{"app_config_id":{"type":"string"},"app_id":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"org_id":{"type":"string"},"rules":{"items":{"$ref":"#/components/schemas/app.AppOperationRoleRule"},"type":"array"},"updated_at":{"type":"string"}},"type":"object"},"app.AppOperationRoleRule":{"properties":{"app_operation_role_config_id":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"operation":{"type":"string"},"org":{"$ref":"#/components/schemas/app.Org"},"org_id":{"type":"string"},"principal_name":{"type":"string"},"principal_type":{"type":"string"},"role":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.AppPermissionsConfig":{"properties":{"app_config_id":{"type":"string"},"app_id":{"type":"string"},"aws_iam_roles":{"items":{"$ref":"#/components/schemas/app.AppAWSIAMRoleConfig"},"type":"array"},"break_glass_aws_iam_role":{"$ref":"#/components/schemas/app.AppAWSIAMRoleConfig"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"custom_aws_iam_roles":{"items":{"$ref":"#/components/schemas/app.AppAWSIAMRoleConfig"},"type":"array"},"deprovision_aws_iam_role":{"$ref":"#/components/schemas/app.AppAWSIAMRoleConfig"},"id":{"type":"string"},"maintenance_aws_iam_role":{"$ref":"#/components/schemas/app.AppAWSIAMRoleConfig"},"org_id":{"type":"string"},"provision_aws_iam_role":{"allOf":[{"$ref":"#/components/schemas/app.AppAWSIAMRoleConfig"}],"description":"loaded via an after query"},"updated_at":{"type":"string"}},"type":"object"},"app.AppPoliciesConfig":{"properties":{"app_config_id":{"type":"string"},"app_id":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"org_id":{"type":"string"},"policies":{"items":{"$ref":"#/components/schemas/app.AppPolicyConfig"},"type":"array"},"updated_at":{"type":"string"}},"type":"object"},"app.AppPolicyConfig":{"properties":{"app_config_id":{"type":"string"},"app_id":{"type":"string"},"app_policies_config":{"type":"string"},"components":{"items":{"type":"string"},"type":"array"},"contents":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"description":{"type":"string"},"engine":{"$ref":"#/components/schemas/config.AppPolicyEngine"},"id":{"type":"string"},"name":{"type":"string"},"org_id":{"type":"string"},"type":{"$ref":"#/components/schemas/config.AppPolicyType"},"updated_at":{"type":"string"}},"type":"object"},"app.AppRunnerConfig":{"properties":{"app_config_id":{"type":"string"},"app_id":{"type":"string"},"app_runner_type":{"$ref":"#/components/schemas/app.AppRunnerType"},"cloud_platform":{"$ref":"#/components/schemas/app.CloudPlatform"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"helm_driver":{"type":"string"},"id":{"type":"string"},"init_script":{"description":"takes a URL to a bash script ⤵  which will be `curl | bash`-ed on the VM. usually via user-data or equivalent.","type":"string"},"org_id":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.AppRunnerConfigHelmDriverType":{"enum":["secret","configmap",""],"type":"string"},"app.AppRunnerType":{"enum":["unknown","aws-ecs","aws-eks","azure-aks","azure-acs","gcp-gke","local","aws","azure","gcp"],"type":"string"},"app.AppSandboxBuild":{"properties":{"app_config_id":{"type":"string"},"app_id":{"type":"string"},"app_sandbox_config_id":{"type":"string"},"created_at":{"type":"string"},"created_by":{"$ref":"#/components/schemas/app.Account"},"created_by_id":{"type":"string"},"id":{"type":"string"},"log_stream":{"$ref":"#/components/schemas/app.LogStream"},"runner_job":{"$ref":"#/components/schemas/app.RunnerJob"},"status":{"type":"string"},"status_description":{"type":"string"},"status_v2":{"$ref":"#/components/schemas/app.CompositeStatus"},"updated_at":{"type":"string"},"vcs_connection_commit":{"$ref":"#/components/schemas/app.VCSConnectionCommit"},"vcs_connection_commit_id":{"type":"string"}},"type":"object"},"app.AppSandboxConfig":{"properties":{"app_config_id":{"type":"string"},"app_id":{"type":"string"},"aws_region_type":{"description":"cloud specific fields","type":"string"},"cloud_platform":{"description":"fields set via after query","type":"string"},"connected_github_vcs_config":{"$ref":"#/components/schemas/app.ConnectedGithubVCSConfig"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"drift_schedule":{"type":"string"},"env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"id":{"type":"string"},"operation_roles":{"additionalProperties":{"type":"string"},"description":"Operation roles map: operation type -\u003e role name","type":"object"},"org_id":{"type":"string"},"public_git_vcs_config":{"$ref":"#/components/schemas/app.PublicGitVCSConfig"},"references":{"items":{"type":"string"},"type":"array"},"refs":{"items":{"$ref":"#/components/schemas/refs.Ref"},"type":"array"},"terraform_version":{"type":"string"},"updated_at":{"type":"string"},"variables":{"additionalProperties":{"type":"string"},"type":"object"},"variables_files":{"items":{"type":"string"},"type":"array"}},"type":"object"},"app.AppSecret":{"properties":{"app_id":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"length":{"description":"after query fields","type":"integer"},"name":{"type":"string"},"org_id":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.AppSecretConfig":{"properties":{"app_config_id":{"type":"string"},"app_id":{"type":"string"},"app_secrets_config_id":{"type":"string"},"auto_generate":{"type":"boolean"},"cloudformation_param_name":{"type":"string"},"cloudformation_stack_name":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"default":{"type":"string"},"description":{"type":"string"},"display_name":{"type":"string"},"format":{"type":"string"},"id":{"type":"string"},"kubernetes_secret_name":{"type":"string"},"kubernetes_secret_namespace":{"type":"string"},"kubernetes_sync":{"description":"for syncing into kubernetes","type":"boolean"},"name":{"type":"string"},"org_id":{"type":"string"},"required":{"type":"boolean"},"updated_at":{"type":"string"}},"type":"object"},"app.AppSecretsConfig":{"properties":{"app_config_id":{"type":"string"},"app_id":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"org_id":{"type":"string"},"secrets":{"items":{"$ref":"#/components/schemas/app.AppSecretConfig"},"type":"array"},"updated_at":{"type":"string"}},"type":"object"},"app.AppStackConfig":{"properties":{"app_config_id":{"type":"string"},"app_id":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"custom_nested_stacks":{"items":{"$ref":"#/components/schemas/config.CustomNestedStack"},"type":"array"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"org_id":{"type":"string"},"runner_nested_template_url":{"type":"string"},"type":{"$ref":"#/components/schemas/app.StackType"},"updated_at":{"type":"string"},"vpc_nested_template_url":{"type":"string"}},"type":"object"},"app.AzureACRImageConfig":{"properties":{"client_id":{"type":"string"},"component_config_id":{"description":"connection to parent model","type":"string"},"component_config_type":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"registry_url":{"description":"actual configuration","type":"string"},"tenant_id":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.AzureAccount":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"location":{"type":"string"},"service_principal_app_id":{"type":"string"},"service_principal_password":{"type":"string"},"subscription_id":{"type":"string"},"subscription_tenant_id":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.AzureStackOutputs":{"properties":{"key_vault_id":{"type":"string"},"key_vault_name":{"type":"string"},"network_id":{"type":"string"},"network_name":{"type":"string"},"private_subnet_ids":{"items":{"type":"string"},"type":"array"},"private_subnet_names":{"items":{"type":"string"},"type":"array"},"public_subnet_ids":{"items":{"type":"string"},"type":"array"},"public_subnet_names":{"items":{"type":"string"},"type":"array"},"resource_group_id":{"type":"string"},"resource_group_location":{"type":"string"},"resource_group_name":{"type":"string"},"subscription_id":{"type":"string"},"subscription_tenant_id":{"type":"string"}},"type":"object"},"app.CloudPlatform":{"enum":["aws","azure","gcp","unknown"],"type":"string"},"app.CloudPlatformRegion":{"properties":{"display_name":{"type":"string"},"icon":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"}},"type":"object"},"app.Component":{"properties":{"app_id":{"type":"string"},"config_versions":{"type":"integer"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"dependencies":{"items":{"type":"string"},"type":"array"},"id":{"type":"string"},"labels":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_labels.Labels"},"latest_build":{"$ref":"#/components/schemas/app.ComponentBuild"},"links":{"additionalProperties":{},"type":"object"},"name":{"type":"string"},"resolved_var_name":{"type":"string"},"status":{"type":"string"},"status_description":{"type":"string"},"status_v2":{"$ref":"#/components/schemas/app.CompositeStatus"},"type":{"$ref":"#/components/schemas/app.ComponentType"},"updated_at":{"type":"string"},"var_name":{"type":"string"}},"type":"object"},"app.ComponentBuild":{"properties":{"checksum":{"description":"checksum of our intermediate component config","type":"string"},"component_config_connection":{"$ref":"#/components/schemas/app.ComponentConfigConnection"},"component_config_connection_id":{"description":"DEPRECATED: will retain the field to connect against the last component config connection that set this build","type":"string"},"component_config_version":{"type":"integer"},"component_id":{"description":"Read-only fields set on the object to de-nest data","type":"string"},"component_name":{"type":"string"},"created_at":{"type":"string"},"created_by":{"$ref":"#/components/schemas/app.Account"},"created_by_id":{"type":"string"},"git_ref":{"type":"string"},"id":{"type":"string"},"install_deploys":{"items":{"$ref":"#/components/schemas/app.InstallDeploy"},"type":"array"},"log_stream":{"$ref":"#/components/schemas/app.LogStream"},"policy_reports":{"items":{"$ref":"#/components/schemas/app.PolicyReport"},"type":"array"},"queue_signal":{"allOf":[{"$ref":"#/components/schemas/app.QueueSignal"}],"description":"QueueSignal is the signal enqueued when this build was created via the queue path"},"releases":{"items":{"$ref":"#/components/schemas/app.ComponentRelease"},"type":"array"},"runner_job":{"allOf":[{"$ref":"#/components/schemas/app.RunnerJob"}],"description":"runner details"},"status":{"type":"string"},"status_description":{"type":"string"},"status_v2":{"$ref":"#/components/schemas/app.CompositeStatus"},"updated_at":{"type":"string"},"vcs_connection_commit":{"$ref":"#/components/schemas/app.VCSConnectionCommit"}},"type":"object"},"app.ComponentConfigConnection":{"properties":{"app_config_id":{"type":"string"},"app_config_version":{"type":"integer"},"build_timeout":{"description":"Duration string for build operations (e.g., \"30m\", \"1h\"). Max 1h.","type":"string"},"checksum":{"type":"string"},"component_dependency_ids":{"items":{"type":"string"},"type":"array"},"component_id":{"type":"string"},"component_name":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"deploy_timeout":{"description":"Duration string for deploy operations (e.g., \"30m\", \"1h\"). Max 1h.","type":"string"},"docker_build":{"$ref":"#/components/schemas/app.DockerBuildComponentConfig"},"drift_schedule":{"type":"string"},"external_image":{"$ref":"#/components/schemas/app.ExternalImageComponentConfig"},"helm":{"$ref":"#/components/schemas/app.HelmComponentConfig"},"id":{"type":"string"},"job":{"$ref":"#/components/schemas/app.JobComponentConfig"},"kubernetes_manifest":{"$ref":"#/components/schemas/app.KubernetesManifestComponentConfig"},"max_auto_retries":{"type":"integer"},"operation_roles":{"additionalProperties":{"type":"string"},"description":"Operation roles map: operation type -\u003e role name","type":"object"},"pulumi":{"$ref":"#/components/schemas/app.PulumiComponentConfig"},"references":{"items":{"type":"string"},"type":"array"},"refs":{"items":{"$ref":"#/components/schemas/refs.Ref"},"type":"array"},"terraform_module":{"$ref":"#/components/schemas/app.TerraformModuleComponentConfig"},"type":{"$ref":"#/components/schemas/app.ComponentType"},"updated_at":{"type":"string"},"version":{"type":"integer"}},"type":"object"},"app.ComponentRelease":{"properties":{"build_id":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"release_steps":{"items":{"$ref":"#/components/schemas/app.ComponentReleaseStep"},"type":"array"},"status":{"type":"string"},"status_description":{"type":"string"},"total_release_steps":{"type":"integer"},"updated_at":{"type":"string"}},"type":"object"},"app.ComponentReleaseStep":{"properties":{"component_release_id":{"description":"parent release ID","type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"delay":{"description":"fields to control the delay of the individual step, as this is set based on the parent strategy","type":"string"},"id":{"type":"string"},"install_deploys":{"items":{"$ref":"#/components/schemas/app.InstallDeploy"},"type":"array"},"requested_install_ids":{"description":"When a step is created, a set of installs are targeted. However, by the time the release step goes out, the\ninstall might have been setup in any order of ways.","items":{"type":"string"},"type":"array"},"status":{"type":"string"},"status_description":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.ComponentType":{"enum":["terraform_module","helm_chart","docker_build","external_image","job","kubernetes_manifest","pulumi","unknown"],"type":"string"},"app.CompositeStatus":{"properties":{"created_at_ts":{"type":"integer"},"created_by_id":{"type":"string"},"history":{"items":{"$ref":"#/components/schemas/app.CompositeStatus"},"type":"array"},"metadata":{"additionalProperties":{},"type":"object"},"status":{"$ref":"#/components/schemas/app.Status"},"status_human_description":{"type":"string"}},"type":"object"},"app.ConnectedGithubVCSConfig":{"properties":{"branch":{"type":"string"},"component_config_id":{"description":"parent component","type":"string"},"component_config_type":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"directory":{"type":"string"},"id":{"type":"string"},"path_filter":{"type":"string"},"repo":{"type":"string"},"repo_name":{"type":"string"},"repo_owner":{"type":"string"},"updated_at":{"type":"string"},"vcs_connection":{"$ref":"#/components/schemas/app.VCSConnection"},"vcs_connection_id":{"type":"string"}},"type":"object"},"app.DockerBuildComponentConfig":{"properties":{"build_args":{"items":{"type":"string"},"type":"array"},"component_config_connection_id":{"description":"value","type":"string"},"connected_github_vcs_config":{"$ref":"#/components/schemas/app.ConnectedGithubVCSConfig"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"dockerfile":{"type":"string"},"env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"id":{"type":"string"},"public_git_vcs_config":{"$ref":"#/components/schemas/app.PublicGitVCSConfig"},"target":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.DriftedObject":{"properties":{"app_sandbox_config_id":{"type":"string"},"component_build_id":{"type":"string"},"component_name":{"type":"string"},"install_component_id":{"type":"string"},"install_id":{"type":"string"},"install_sandbox_id":{"type":"string"},"install_workflow_id":{"type":"string"},"org_id":{"type":"string"},"target_id":{"type":"string"},"target_type":{"description":"These fields will be populated from the drifts_view","type":"string"}},"type":"object"},"app.EmptyResponse":{"type":"object"},"app.ExternalImageComponentConfig":{"properties":{"aws_ecr_image_config":{"$ref":"#/components/schemas/app.AWSECRImageConfig"},"azure_acr_image_config":{"$ref":"#/components/schemas/app.AzureACRImageConfig"},"component_config_connection_id":{"description":"value","type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"gcp_gar_image_config":{"$ref":"#/components/schemas/app.GCPGARImageConfig"},"id":{"type":"string"},"image_url":{"type":"string"},"tag":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.GCPAccount":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"project_id":{"type":"string"},"region":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.GCPGARImageConfig":{"properties":{"component_config_id":{"type":"string"},"component_config_type":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"gcp_project_id":{"type":"string"},"gcp_region":{"type":"string"},"id":{"type":"string"},"service_account_email":{"type":"string"},"updated_at":{"type":"string"},"workload_identity_provider":{"type":"string"}},"type":"object"},"app.GCPStackOutputs":{"properties":{"break_glass_sa_emails":{"additionalProperties":{"type":"string"},"type":"object"},"custom_sa_emails":{"additionalProperties":{"type":"string"},"type":"object"},"deprovision_sa_email":{"type":"string"},"install_inputs":{"additionalProperties":{"type":"string"},"type":"object"},"maintenance_sa_email":{"type":"string"},"network_id":{"type":"string"},"network_name":{"type":"string"},"private_subnet_name":{"type":"string"},"project_id":{"type":"string"},"provision_sa_email":{"type":"string"},"public_subnet_name":{"type":"string"},"region":{"type":"string"},"runner_service_account_email":{"type":"string"},"runner_subnet_name":{"type":"string"}},"type":"object"},"app.HelmChart":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"helmReleases":{"items":{"$ref":"#/components/schemas/app.HelmRelease"},"type":"array"},"id":{"type":"string"},"org_id":{"type":"string"},"owner_id":{"type":"string"},"owner_type":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.HelmComponentConfig":{"properties":{"chart_name":{"description":"Helm specific configurations","type":"string"},"component_config_connection_id":{"description":"parent reference","type":"string"},"connected_github_vcs_config":{"$ref":"#/components/schemas/app.ConnectedGithubVCSConfig"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"helm_config_json":{"$ref":"#/components/schemas/app.HelmConfig"},"id":{"type":"string"},"namespace":{"type":"string"},"public_git_vcs_config":{"$ref":"#/components/schemas/app.PublicGitVCSConfig"},"storage_driver":{"type":"string"},"take_ownership":{"description":"Newer config fields that we don't need a column for","type":"boolean"},"updated_at":{"type":"string"},"values":{"additionalProperties":{"type":"string"},"type":"object"},"values_files":{"items":{"type":"string"},"type":"array"}},"type":"object"},"app.HelmConfig":{"properties":{"chart_name":{"type":"string"},"helm_repo_config":{"$ref":"#/components/schemas/app.HelmRepoConfig"},"namespace":{"type":"string"},"storage_driver":{"type":"string"},"take_ownership":{"description":"Newer fields that we don't need to store as columns in the database","type":"boolean"},"values":{"additionalProperties":{"type":"string"},"type":"object"},"values_files":{"items":{"type":"string"},"type":"array"}},"type":"object"},"app.HelmRelease":{"properties":{"body":{"description":"The rspb.Release body, as a base64-encoded string","type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"helmChart":{"$ref":"#/components/schemas/app.HelmChart"},"helmChartID":{"type":"string"},"key":{"type":"string"},"labels":{"$ref":"#/components/schemas/app.JSONMap"},"name":{"description":"Release \"labels\" that can be used as filters in the storage.Query(labels map[string]string)\nwe implemented. Note that allowing Helm users to filter against new dimensions will require a\nnew migration to be added, and the Create and/or update functions to be updated accordingly.","type":"string"},"namespace":{"type":"string"},"org_id":{"type":"string"},"owner":{"type":"string"},"status":{"type":"string"},"type":{"description":"See https://github.com/helm/helm/blob/c9fe3d118caec699eb2565df9838673af379ce12/pkg/storage/driver/secrets.go#L231","type":"string"},"updated_at":{"type":"string"},"version":{"type":"integer"}},"type":"object"},"app.HelmRepoConfig":{"properties":{"chart":{"type":"string"},"repo_url":{"type":"string"},"version":{"type":"string"}},"type":"object"},"app.Install":{"properties":{"app_config_id":{"type":"string"},"app_id":{"type":"string"},"app_runner_config":{"$ref":"#/components/schemas/app.AppRunnerConfig"},"app_sandbox_config":{"$ref":"#/components/schemas/app.AppSandboxConfig"},"aws_account":{"$ref":"#/components/schemas/app.AWSAccount"},"azure_account":{"$ref":"#/components/schemas/app.AzureAccount"},"cloud_platform":{"type":"string"},"component_statuses":{"additionalProperties":{"type":"string"},"type":"object"},"composite_component_status":{"type":"string"},"composite_component_status_description":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"drifted_objects":{"items":{"$ref":"#/components/schemas/app.DriftedObject"},"type":"array"},"gcp_account":{"$ref":"#/components/schemas/app.GCPAccount"},"id":{"type":"string"},"install_action_workflows":{"items":{"$ref":"#/components/schemas/app.InstallActionWorkflow"},"type":"array"},"install_components":{"items":{"$ref":"#/components/schemas/app.InstallComponent"},"type":"array"},"install_config":{"$ref":"#/components/schemas/app.InstallConfig"},"install_events":{"items":{"$ref":"#/components/schemas/app.InstallEvent"},"type":"array"},"install_inputs":{"items":{"$ref":"#/components/schemas/app.InstallInputs"},"type":"array"},"install_number":{"type":"integer"},"install_roles":{"description":"InstallRoles is a list of roles associated with that install at given app config ID","items":{"$ref":"#/components/schemas/app.InstallRoles"},"type":"array"},"install_sandbox_runs":{"items":{"$ref":"#/components/schemas/app.InstallSandboxRun"},"type":"array"},"install_stack":{"$ref":"#/components/schemas/app.InstallStack"},"install_states":{"items":{"$ref":"#/components/schemas/app.InstallState"},"type":"array"},"labels":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_labels.Labels"},"links":{"additionalProperties":{},"type":"object"},"metadata":{"additionalProperties":{"type":"string"},"type":"object"},"name":{"type":"string"},"queues":{"items":{"$ref":"#/components/schemas/app.Queue"},"type":"array"},"runner_id":{"type":"string"},"runner_status":{"type":"string"},"runner_status_description":{"type":"string"},"runner_type":{"type":"string"},"sandbox":{"$ref":"#/components/schemas/app.InstallSandbox"},"sandbox_mode":{"$ref":"#/components/schemas/sql.NullBool"},"sandbox_status":{"type":"string"},"sandbox_status_description":{"type":"string"},"status":{"description":"TODO(jm): deprecate these fields once the terraform provider has been updated","type":"string"},"status_description":{"type":"string"},"updated_at":{"type":"string"},"workflow_id":{"description":"WorkflowID is populated by handlers that create a workflow. Not persisted.","type":"string"},"workflows":{"items":{"$ref":"#/components/schemas/app.Workflow"},"type":"array"}},"type":"object"},"app.InstallActionWorkflow":{"properties":{"action_workflow":{"$ref":"#/components/schemas/app.ActionWorkflow"},"action_workflow_id":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"install_id":{"type":"string"},"runs":{"items":{"$ref":"#/components/schemas/app.InstallActionWorkflowRun"},"type":"array"},"status":{"description":"after query fields filled in after querying","type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.InstallActionWorkflowRun":{"properties":{"action_workflow_config_id":{"type":"string"},"config":{"$ref":"#/components/schemas/app.ActionWorkflowConfig"},"created_at":{"type":"string"},"created_by":{"$ref":"#/components/schemas/app.Account"},"created_by_id":{"type":"string"},"enable_kube_config":{"$ref":"#/components/schemas/sql.NullBool"},"execution_time":{"description":"after query","type":"integer"},"id":{"type":"string"},"install_action_workflow":{"$ref":"#/components/schemas/app.InstallActionWorkflow"},"install_action_workflow_id":{"type":"string"},"install_id":{"type":"string"},"install_workflow_id":{"type":"string"},"log_stream":{"$ref":"#/components/schemas/app.LogStream"},"outputs":{"additionalProperties":true,"type":"object"},"role":{"description":"Role to be used when running this action","type":"string"},"run_env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"runner_job":{"$ref":"#/components/schemas/app.RunnerJob"},"status":{"type":"string"},"status_description":{"type":"string"},"status_v2":{"$ref":"#/components/schemas/app.CompositeStatus"},"steps":{"items":{"$ref":"#/components/schemas/app.InstallActionWorkflowRunStep"},"type":"array"},"timeout":{"type":"integer"},"trigger_type":{"$ref":"#/components/schemas/app.ActionWorkflowTriggerType"},"triggered_by_id":{"type":"string"},"triggered_by_type":{"type":"string"},"updated_at":{"type":"string"},"workflow":{"$ref":"#/components/schemas/app.Workflow"},"workflow_id":{"type":"string"}},"type":"object"},"app.InstallActionWorkflowRunStatus":{"enum":["finished","queued","in-progress","error","timed-out","cancelled","unknown"],"type":"string"},"app.InstallActionWorkflowRunStep":{"properties":{"adhoc_config":{"$ref":"#/components/schemas/app.AdHocStepConfig"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"execution_duration":{"type":"integer"},"id":{"type":"string"},"install_action_workflow_run_id":{"type":"string"},"status":{"$ref":"#/components/schemas/app.InstallActionWorkflowRunStepStatus"},"status_v2":{"$ref":"#/components/schemas/app.CompositeStatus"},"step_id":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.InstallActionWorkflowRunStepStatus":{"enum":["finished","pending","in-progress","timed-out","error"],"type":"string"},"app.InstallApprovalOption":{"enum":["approve-all","prompt"],"type":"string"},"app.InstallAuditLog":{"properties":{"install_id":{"type":"string"},"log_line":{"type":"string"},"time_stamp":{"type":"string"},"type":{"type":"string"}},"type":"object"},"app.InstallComponent":{"properties":{"component":{"$ref":"#/components/schemas/app.Component"},"component_id":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"drifted_object":{"$ref":"#/components/schemas/app.DriftedObject"},"helm_chart":{"$ref":"#/components/schemas/app.HelmChart"},"id":{"type":"string"},"install_deploys":{"items":{"$ref":"#/components/schemas/app.InstallDeploy"},"type":"array"},"install_id":{"type":"string"},"links":{"additionalProperties":{},"type":"object"},"status":{"type":"string"},"status_description":{"type":"string"},"status_v2":{"$ref":"#/components/schemas/app.CompositeStatus"},"terraform_workspace":{"$ref":"#/components/schemas/app.TerraformWorkspace"},"updated_at":{"type":"string"}},"type":"object"},"app.InstallConfig":{"properties":{"approval_option":{"$ref":"#/components/schemas/app.InstallApprovalOption"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"custom_nested_stacks":{"items":{"$ref":"#/components/schemas/config.CustomNestedStack"},"type":"array"},"id":{"type":"string"},"install_id":{"type":"string"},"labels":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_labels.Labels"},"org_id":{"type":"string"},"runner_nested_template_url":{"type":"string"},"updated_at":{"type":"string"},"vpc_nested_template_url":{"description":"Per-install stack template overrides (nil = use app config default)","type":"string"}},"type":"object"},"app.InstallDeploy":{"properties":{"action_workflow_runs":{"items":{"$ref":"#/components/schemas/app.InstallActionWorkflowRun"},"type":"array"},"build_id":{"type":"string"},"component_build":{"$ref":"#/components/schemas/app.ComponentBuild"},"component_config_version":{"type":"integer"},"component_id":{"type":"string"},"component_name":{"type":"string"},"created_at":{"type":"string"},"created_by":{"$ref":"#/components/schemas/app.Account"},"created_by_id":{"type":"string"},"id":{"type":"string"},"install_component_id":{"type":"string"},"install_deploy_type":{"$ref":"#/components/schemas/app.InstallDeployType"},"install_id":{"description":"Fields that are de-nested at read time using AfterQuery","type":"string"},"install_workflow_id":{"description":"DEPRECATED: use WorkflowID","type":"string"},"log_stream":{"$ref":"#/components/schemas/app.LogStream"},"oci_artifact":{"$ref":"#/components/schemas/app.OCIArtifact"},"outputs":{"additionalProperties":{},"type":"object"},"plan_only":{"type":"boolean"},"policy_reports":{"items":{"$ref":"#/components/schemas/app.PolicyReport"},"type":"array"},"queue_signals":{"items":{"$ref":"#/components/schemas/app.QueueSignal"},"type":"array"},"release_id":{"type":"string"},"role":{"description":"Role to be used when running this component","type":"string"},"runner_jobs":{"description":"runner details","items":{"$ref":"#/components/schemas/app.RunnerJob"},"type":"array"},"status":{"type":"string"},"status_description":{"type":"string"},"status_v2":{"$ref":"#/components/schemas/app.CompositeStatus"},"updated_at":{"type":"string"},"workflow":{"$ref":"#/components/schemas/app.Workflow"},"workflow_id":{"type":"string"}},"type":"object"},"app.InstallDeployType":{"enum":["sync-image","apply","teardown"],"type":"string"},"app.InstallEvent":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"install_id":{"type":"string"},"operation":{"type":"string"},"operation_name":{"type":"string"},"operation_status":{"$ref":"#/components/schemas/app.OperationStatus"},"org_id":{"type":"string"},"payload":{"additionalProperties":{"type":"string"},"type":"object"},"updated_at":{"type":"string"}},"type":"object"},"app.InstallInputs":{"properties":{"app_input_config_id":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"install_id":{"type":"string"},"org_id":{"type":"string"},"redacted_values":{"additionalProperties":{"type":"string"},"type":"object"},"updated_at":{"type":"string"},"values":{"additionalProperties":{"type":"string"},"type":"object"},"workflow_id":{"description":"WorkflowID is populated by handlers that create a workflow. Not persisted.","type":"string"}},"type":"object"},"app.InstallRoleSelectionRecord":{"properties":{"available":{"type":"boolean"},"role_id":{"type":"string"},"role_name":{"type":"string"},"role_source":{"type":"string"},"selected":{"type":"boolean"}},"type":"object"},"app.InstallRoleUsage":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"install_role_id":{"type":"string"},"org_id":{"type":"string"},"role_name":{"type":"string"},"role_selection_trace":{"items":{"$ref":"#/components/schemas/app.InstallRoleSelectionRecord"},"type":"array"},"role_source":{"type":"string"},"runner_job":{"$ref":"#/components/schemas/app.RunnerJob"},"runner_job_id":{"type":"string"},"updated_at":{"type":"string"},"workflow":{"$ref":"#/components/schemas/app.Workflow"},"workflow_step_id":{"type":"string"}},"type":"object"},"app.InstallRoles":{"properties":{"app_role_config":{"$ref":"#/components/schemas/app.AppAWSIAMRoleConfig"},"app_role_config_id":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"enabled":{"type":"boolean"},"id":{"type":"string"},"install_id":{"type":"string"},"last_used_at":{"type":"string"},"org_id":{"type":"string"},"provisioned":{"type":"boolean"},"role_id":{"description":"cloud specific role identifier","type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.InstallSandbox":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"install_id":{"type":"string"},"install_sandbox_runs":{"items":{"$ref":"#/components/schemas/app.InstallSandboxRun"},"type":"array"},"status":{"type":"string"},"status_description":{"type":"string"},"status_v2":{"$ref":"#/components/schemas/app.CompositeStatus"},"terraform_workspace":{"$ref":"#/components/schemas/app.TerraformWorkspace"},"updated_at":{"type":"string"}},"type":"object"},"app.InstallSandboxRun":{"properties":{"action_workflow_runs":{"items":{"$ref":"#/components/schemas/app.InstallActionWorkflowRun"},"type":"array"},"app_sandbox_config":{"$ref":"#/components/schemas/app.AppSandboxConfig"},"created_at":{"type":"string"},"created_by":{"$ref":"#/components/schemas/app.Account"},"created_by_id":{"type":"string"},"id":{"type":"string"},"install_id":{"type":"string"},"install_sandbox_id":{"description":"TODO: once we run a backfill we can make this non pointer","type":"string"},"install_workflow_id":{"type":"string"},"log_stream":{"$ref":"#/components/schemas/app.LogStream"},"outputs":{"additionalProperties":{},"type":"object"},"policy_reports":{"items":{"$ref":"#/components/schemas/app.PolicyReport"},"type":"array"},"role":{"description":"Role to be used when planning and applying sandbox runs","type":"string"},"run_type":{"$ref":"#/components/schemas/app.SandboxRunType"},"runner_jobs":{"description":"runner details","items":{"$ref":"#/components/schemas/app.RunnerJob"},"type":"array"},"status":{"type":"string"},"status_description":{"type":"string"},"status_v2":{"$ref":"#/components/schemas/app.CompositeStatus"},"updated_at":{"type":"string"},"workflow":{"$ref":"#/components/schemas/app.Workflow"},"workflow_id":{"description":"Fields that are de-nested at read time using AfterQuery","type":"string"}},"type":"object"},"app.InstallStack":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"install_id":{"type":"string"},"install_stack_outputs":{"$ref":"#/components/schemas/app.InstallStackOutputs"},"org_id":{"type":"string"},"updated_at":{"type":"string"},"versions":{"items":{"$ref":"#/components/schemas/app.InstallStackVersion"},"type":"array"}},"type":"object"},"app.InstallStackOutputs":{"properties":{"aws":{"$ref":"#/components/schemas/app.AWSStackOutputs"},"azure":{"$ref":"#/components/schemas/app.AzureStackOutputs"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"data":{"additionalProperties":{"type":"string"},"type":"object"},"data_contents":{"additionalProperties":{},"type":"object"},"gcp":{"$ref":"#/components/schemas/app.GCPStackOutputs"},"id":{"type":"string"},"install_stack_id":{"type":"string"},"install_version_run_id":{"type":"string"},"org_id":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.InstallStackVersion":{"properties":{"app_config_id":{"type":"string"},"aws_bucket_key":{"type":"string"},"aws_bucket_name":{"description":"aws configuration parameters","type":"string"},"checksum":{"type":"string"},"composite_status":{"$ref":"#/components/schemas/app.CompositeStatus"},"contents":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"install_id":{"type":"string"},"install_stack_id":{"type":"string"},"org_id":{"type":"string"},"phone_home_id":{"type":"string"},"phone_home_url":{"type":"string"},"quick_link_url":{"type":"string"},"runs":{"items":{"$ref":"#/components/schemas/app.InstallStackVersionRun"},"type":"array"},"template_url":{"type":"string"},"terraform_checksum":{"type":"string"},"terraform_contents":{"description":"On AWS, the install workflow renders BOTH a CloudFormation template and\na Terraform tfvars envelope. The CFN artifact lives in Contents/Checksum\n(and is uploaded to S3 with TemplateURL/QuickLinkURL); the Terraform\nartifact lives below. The dashboard shows both during the await step.","type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.InstallStackVersionRun":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"data":{"additionalProperties":{"type":"string"},"type":"object"},"data_contents":{"additionalProperties":{},"type":"object"},"id":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.InstallState":{"properties":{"archived":{"type":"boolean"},"contents":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"install_id":{"type":"string"},"stale_at":{"$ref":"#/components/schemas/generics.NullTime"},"triggered_by_id":{"type":"string"},"triggered_by_type":{"type":"string"},"updated_at":{"type":"string"},"version":{"type":"integer"}},"type":"object"},"app.JSONMap":{"additionalProperties":{"type":"string"},"type":"object"},"app.JobComponentConfig":{"properties":{"args":{"items":{"type":"string"},"type":"array"},"cmd":{"items":{"type":"string"},"type":"array"},"component_config_connection_id":{"description":"value","type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"id":{"type":"string"},"image_url":{"description":"Image attributes, copied from a docker_buid or external_image component.","type":"string"},"tag":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.KubernetesManifestComponentConfig":{"properties":{"component_config_connection_id":{"description":"value","type":"string"},"connected_github_vcs_config":{"$ref":"#/components/schemas/app.ConnectedGithubVCSConfig"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"kustomize":{"allOf":[{"$ref":"#/components/schemas/app.KustomizeConfig"}],"description":"Kustomize configuration (mutually exclusive with Manifest)"},"manifest":{"description":"Primary fields - used for inline manifests (fully supported)","type":"string"},"namespace":{"type":"string"},"public_git_vcs_config":{"allOf":[{"$ref":"#/components/schemas/app.PublicGitVCSConfig"}],"description":"VCS configuration for kustomize sources (similar to HelmComponentConfig)"},"updated_at":{"type":"string"}},"type":"object"},"app.KustomizeConfig":{"properties":{"enable_helm":{"description":"Enable Helm chart inflation during kustomize build","type":"boolean"},"load_restrictor":{"description":"Load restrictor: \"none\" or \"rootOnly\" (default: \"rootOnly\")","type":"string"},"patches":{"description":"Additional patch files to apply after kustomize build","items":{"type":"string"},"type":"array"},"path":{"description":"Path to kustomization directory (relative to source root)","type":"string"}},"type":"object"},"app.LatestRunnerHeartBeat":{"properties":{"alive_time":{"type":"integer"},"created_at":{"type":"string"},"process":{"type":"string"},"process_id":{"type":"string"},"runner_id":{"type":"string"},"started_at":{"type":"string"},"version":{"type":"string"}},"type":"object"},"app.LogStream":{"properties":{"attrs":{"additionalProperties":{"type":"string"},"type":"object"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"open":{"type":"boolean"},"org_id":{"type":"string"},"owner_id":{"type":"string"},"owner_type":{"type":"string"},"runner_api_url":{"type":"string"},"updated_at":{"type":"string"},"write_token":{"type":"string"}},"type":"object"},"app.NotificationsConfig":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"org_id":{"type":"string"},"owner_id":{"type":"string"},"owner_type":{"type":"string"},"slack_webhook_url":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.OCIArtifact":{"properties":{"annotations":{"additionalProperties":{"type":"string"},"type":"object"},"architecture":{"type":"string"},"artifact_type":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"digest":{"type":"string"},"id":{"type":"string"},"media_type":{"type":"string"},"org_id":{"type":"string"},"os":{"description":"Platform fields","type":"string"},"os_features":{"items":{"type":"string"},"type":"array"},"os_version":{"type":"string"},"owner_id":{"type":"string"},"owner_type":{"type":"string"},"repository":{"type":"string"},"size":{"type":"integer"},"tag":{"type":"string"},"updated_at":{"type":"string"},"urls":{"items":{"type":"string"},"type":"array"},"variant":{"type":"string"}},"type":"object"},"app.Onboarding":{"properties":{"account_id":{"type":"string"},"app_attributes":{"items":{"type":"string"},"type":"array"},"app_branch_id":{"type":"string"},"app_config":{"type":"object"},"app_id":{"type":"string"},"app_type":{"description":"Step 2: Your Stack","type":"string"},"cloud_provider":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"current_step":{"type":"string"},"example_app_slug":{"type":"string"},"id":{"type":"string"},"install_id":{"type":"string"},"install_mode":{"description":"Step 3: Install","type":"string"},"org_id":{"description":"Step 1: Organization","type":"string"},"status":{"type":"string"},"status_v2":{"$ref":"#/components/schemas/app.CompositeStatus"},"step_error":{"type":"string"},"step_status":{"description":"Async step status (for queue-based signal processing)","type":"string"},"updated_at":{"type":"string"},"workflow_id":{"type":"string"}},"type":"object"},"app.OperationStatus":{"enum":["started","finished","noop","failed"],"type":"string"},"app.OperationType":{"enum":["provision","deprovision","deploy","teardown","reprovision","trigger"],"type":"string"},"app.Org":{"properties":{"app_count":{"description":"Transient fields for counts (not persisted to database)","type":"integer"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"features":{"$ref":"#/components/schemas/types.StringBoolMap"},"id":{"type":"string"},"install_count":{"type":"integer"},"labels":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_labels.Labels"},"links":{"additionalProperties":{},"type":"object"},"logo_url":{"type":"string"},"name":{"type":"string"},"notifications_config":{"$ref":"#/components/schemas/app.NotificationsConfig"},"runner_group":{"$ref":"#/components/schemas/app.RunnerGroup"},"sandbox_mode":{"type":"boolean"},"status":{"type":"string"},"status_description":{"type":"string"},"status_v2":{"$ref":"#/components/schemas/app.CompositeStatus"},"tags":{"items":{"type":"string"},"type":"array"},"updated_at":{"type":"string"},"vcs_connections":{"items":{"$ref":"#/components/schemas/app.VCSConnection"},"type":"array"}},"type":"object"},"app.OrgFeatureInfo":{"properties":{"description":{"type":"string"},"name":{"type":"string"}},"type":"object"},"app.OrgInvite":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"email":{"type":"string"},"id":{"type":"string"},"org_id":{"description":"parent relationship","type":"string"},"role_type":{"$ref":"#/components/schemas/app.RoleType"},"status":{"$ref":"#/components/schemas/app.OrgInviteStatus"},"status_v2":{"$ref":"#/components/schemas/app.CompositeStatus"},"updated_at":{"type":"string"}},"type":"object"},"app.OrgInviteStatus":{"enum":["pending","accepted"],"type":"string"},"app.OtelLogRecord":{"properties":{"body":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"log_attributes":{"additionalProperties":{"type":"string"},"type":"object"},"log_stream_id":{"type":"string"},"org_id":{"description":"internal attributes","type":"string"},"resource_attributes":{"additionalProperties":{"type":"string"},"type":"object"},"resource_schema_url":{"type":"string"},"runner_group_id":{"type":"string"},"runner_id":{"type":"string"},"runner_job_execution_id":{"type":"string"},"runner_job_execution_step":{"type":"string"},"runner_job_id":{"type":"string"},"scope_attributes":{"additionalProperties":{"type":"string"},"type":"object"},"scope_name":{"type":"string"},"scope_schema_url":{"type":"string"},"scope_version":{"type":"string"},"service_name":{"type":"string"},"severity_number":{"type":"integer"},"severity_text":{"type":"string"},"span_id":{"type":"string"},"timestamp":{"description":"OTEL log message attributes","type":"string"},"timestamp_date":{"type":"string"},"timestamp_time":{"type":"string"},"trace_flags":{"type":"integer"},"trace_id":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.Policy":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"name":{"$ref":"#/components/schemas/app.PolicyName"},"permissions":{"additionalProperties":{"type":"string"},"description":"Permissions are used to track granular permissions for each domain","type":"object"},"role_id":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.PolicyInputRef":{"properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"}},"type":"object"},"app.PolicyName":{"enum":["org_admin","org_support","installer","runner","hosted_installer"],"type":"string"},"app.PolicyReport":{"properties":{"app_id":{"description":"Denormalized context for filtering","type":"string"},"app_name":{"type":"string"},"component_id":{"type":"string"},"component_name":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"deny_count":{"description":"Summary counts for list views","type":"integer"},"evaluated_at":{"description":"Canonical policy evaluation data","type":"string"},"id":{"type":"string"},"inputs":{"items":{"$ref":"#/components/schemas/app.PolicyInputRef"},"type":"array"},"install_id":{"type":"string"},"install_name":{"type":"string"},"org_name":{"description":"Denormalized display names for human-readable reports","type":"string"},"owner_id":{"description":"Polymorphic relationship to the impacted Nuon resource (indexes defined in Indexes())","type":"string"},"owner_type":{"$ref":"#/components/schemas/app.PolicyReportOwnerType"},"pass_count":{"type":"integer"},"policies":{"items":{"$ref":"#/components/schemas/app.PolicyResult"},"type":"array"},"policy_ids":{"items":{"type":"string"},"type":"array"},"runner_job_id":{"type":"string"},"status":{"$ref":"#/components/schemas/app.CompositeStatus"},"updated_at":{"type":"string"},"violations":{"items":{"$ref":"#/components/schemas/app.PolicyViolation"},"type":"array"},"warn_count":{"type":"integer"},"workflow_step_policy_validation_id":{"description":"Optional context references (indexes defined in Indexes())","type":"string"}},"type":"object"},"app.PolicyReportOwnerType":{"enum":["install_deploys","install_sandbox_runs","component_builds"],"type":"string"},"app.PolicyResult":{"properties":{"deny_count":{"type":"integer"},"input_count":{"type":"integer"},"pass_count":{"type":"integer"},"policy_id":{"type":"string"},"policy_name":{"type":"string"},"status":{"description":"\"deny\", \"warn\", or \"pass\"","type":"string"},"warn_count":{"type":"integer"}},"type":"object"},"app.PolicyViolation":{"properties":{"input_identity":{"description":"Human-readable input reference (e.g., \"Deployment/default/nginx\")","type":"string"},"input_index":{"type":"integer"},"message":{"type":"string"},"policy_id":{"type":"string"},"policy_name":{"type":"string"},"severity":{"description":"\"deny\" or \"warn\"","type":"string"}},"type":"object"},"app.ProviderType":{"enum":["oidc","google","github"],"type":"string"},"app.PublicGitVCSConfig":{"properties":{"branch":{"type":"string"},"component_config_id":{"type":"string"},"component_config_type":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"directory":{"type":"string"},"id":{"type":"string"},"path_filter":{"type":"string"},"repo":{"description":"actual configuration","type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.PulumiComponentConfig":{"properties":{"component_config_connection_id":{"description":"parent reference","type":"string"},"config":{"additionalProperties":{"type":"string"},"type":"object"},"connected_github_vcs_config":{"$ref":"#/components/schemas/app.ConnectedGithubVCSConfig"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"id":{"type":"string"},"public_git_vcs_config":{"$ref":"#/components/schemas/app.PublicGitVCSConfig"},"runtime":{"description":"pulumi configuration values","type":"string"},"updated_at":{"type":"string"},"version":{"type":"string"}},"type":"object"},"app.Queue":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"emitters":{"items":{"$ref":"#/components/schemas/app.QueueEmitter"},"type":"array"},"id":{"type":"string"},"idle_timeout":{"type":"integer"},"max_depth":{"type":"integer"},"max_in_flight":{"type":"integer"},"metadata":{"additionalProperties":{"type":"string"},"type":"object"},"name":{"type":"string"},"org_id":{"type":"string"},"owner_id":{"type":"string"},"owner_type":{"type":"string"},"queue_signal":{"items":{"$ref":"#/components/schemas/app.QueueSignal"},"type":"array"},"status_v2":{"$ref":"#/components/schemas/app.CompositeStatus"},"updated_at":{"type":"string"},"workflow":{"$ref":"#/components/schemas/signaldb.WorkflowRef"}},"type":"object"},"app.QueueEmitter":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"cron_schedule":{"description":"Schedule configuration\nFor cron mode: cron expression (e.g., \"0 * * * *\")","type":"string"},"description":{"type":"string"},"emit_count":{"type":"integer"},"fired":{"description":"For scheduled mode: whether the signal has been fired","type":"boolean"},"id":{"type":"string"},"jitter_window":{"description":"For cron mode: spread emitter ticks deterministically across this window\nto avoid thundering-herd when many emitters share a schedule. A hash of the\nemitter ID determines each emitter's static offset within the window. Zero\ndisables jitter (default).","type":"integer"},"last_emitted_at":{"type":"string"},"mode":{"allOf":[{"$ref":"#/components/schemas/app.QueueEmitterMode"}],"description":"Emitter mode: \"cron\" for recurring, \"scheduled\" for one-shot"},"name":{"description":"Emitter identity","type":"string"},"next_emit_at":{"type":"string"},"org_id":{"type":"string"},"queue_id":{"description":"Many-to-one: each emitter belongs to exactly one queue","type":"string"},"scheduled_at":{"description":"For scheduled mode: the time to fire the signal","type":"string"},"signal_template":{"$ref":"#/components/schemas/signaldb.SignalData"},"signal_type":{"description":"Signal template - the signal to emit on each tick","type":"string"},"status":{"allOf":[{"$ref":"#/components/schemas/app.CompositeStatus"}],"description":"Runtime state using shared CompositeStatus"},"updated_at":{"type":"string"},"workflow":{"allOf":[{"$ref":"#/components/schemas/signaldb.WorkflowRef"}],"description":"Workflow reference for the emitter's cron workflow"}},"type":"object"},"app.QueueEmitterMode":{"enum":["cron","scheduled","fire_once"],"type":"string"},"app.QueueSignal":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"emitter_id":{"description":"Optional: if this signal was emitted by an emitter","type":"string"},"enqueued":{"type":"boolean"},"execution_count":{"type":"integer"},"id":{"type":"string"},"org_id":{"type":"string"},"owner_id":{"type":"string"},"owner_type":{"type":"string"},"queue":{"$ref":"#/components/schemas/app.Queue"},"queue_id":{"type":"string"},"signal":{"$ref":"#/components/schemas/signaldb.SignalData"},"signal_context":{"$ref":"#/components/schemas/cctx.SignalContext"},"status":{"$ref":"#/components/schemas/app.CompositeStatus"},"type":{"type":"string"},"updated_at":{"type":"string"},"workflow":{"$ref":"#/components/schemas/signaldb.WorkflowRef"}},"type":"object"},"app.Role":{"properties":{"createdBy":{"$ref":"#/components/schemas/app.Account"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"policies":{"items":{"$ref":"#/components/schemas/app.Policy"},"type":"array"},"role_type":{"$ref":"#/components/schemas/app.RoleType"},"updated_at":{"type":"string"}},"type":"object"},"app.RoleType":{"enum":["org_admin","org_support","installer","runner","hosted-installer"],"type":"string"},"app.Runner":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"display_name":{"type":"string"},"id":{"type":"string"},"jobs":{"items":{"$ref":"#/components/schemas/app.RunnerJob"},"type":"array"},"name":{"type":"string"},"operations":{"items":{"$ref":"#/components/schemas/app.RunnerOperation"},"type":"array"},"org_id":{"type":"string"},"queues":{"description":"Queues holds per-job-group queues created when parallel-runner-jobs feature flag is enabled.","items":{"$ref":"#/components/schemas/app.Queue"},"type":"array"},"restart_requested":{"type":"boolean"},"runner_group":{"$ref":"#/components/schemas/app.RunnerGroup"},"runner_group_id":{"type":"string"},"runner_job":{"$ref":"#/components/schemas/app.RunnerJob"},"status":{"type":"string"},"status_description":{"type":"string"},"status_v2":{"$ref":"#/components/schemas/app.CompositeStatus"},"updated_at":{"type":"string"},"warnings":{"items":{"type":"string"},"type":"array"}},"type":"object"},"app.RunnerGroup":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"org_id":{"type":"string"},"owner_id":{"description":"parent can org, install or in the future, builtin runner group","type":"string"},"owner_type":{"type":"string"},"platform":{"$ref":"#/components/schemas/app.AppRunnerType"},"runners":{"items":{"$ref":"#/components/schemas/app.Runner"},"type":"array"},"settings":{"$ref":"#/components/schemas/app.RunnerGroupSettings"},"type":{"$ref":"#/components/schemas/app.RunnerGroupType"},"updated_at":{"type":"string"}},"type":"object"},"app.RunnerGroupSettings":{"properties":{"aws_auth_method":{"enum":["iid","sts"],"type":"string"},"aws_cloudformation_stack_type":{"type":"string"},"aws_instance_type":{"description":"aws runner specifics runner-v2","type":"string"},"aws_max_instance_lifetime":{"description":"Deprecated: instance refresh is now handled by a backend cron, not ASG MaxInstanceLifetime.","type":"integer"},"aws_tags":{"additionalProperties":{"type":"string"},"type":"object"},"binary_version":{"description":"configuration for managing the runner binary version (for mng mode, not the install runner)","type":"string"},"container_image_tag":{"type":"string"},"container_image_url":{"description":"configuration for deploying the runner","type":"string"},"container_max_uptime":{"type":"integer"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"enable_logging":{"type":"boolean"},"enable_metrics":{"type":"boolean"},"enable_sentry":{"type":"boolean"},"groups":{"description":"the job loop groups the runner should poll for","items":{"type":"string"},"type":"array"},"heart_beat_timeout":{"description":"Various settings for the runner to handle internally","type":"integer"},"id":{"type":"string"},"job_group_parallelism":{"additionalProperties":{"type":"string"},"description":"JobGroupParallelism maps RunnerJobGroup names to max-in-flight counts for queue-based job routing.\ne.g., {\"build\": \"2\", \"deploy\": \"1\"}. Only used when parallel-runner-jobs feature flag is on.","type":"object"},"local_aws_iam_role_arn":{"type":"string"},"logging_level":{"type":"string"},"metadata":{"additionalProperties":{"type":"string"},"description":"Metadata is used as both log and metric tags/attributes in the runner when emitting data","type":"object"},"org_aws_iam_role_arn":{"description":"org runner specifics","type":"string"},"org_azure_client_id":{"type":"string"},"org_gcp_service_account":{"type":"string"},"org_id":{"type":"string"},"org_k8s_service_account_name":{"type":"string"},"otel_collector_config":{"type":"string"},"platform":{"description":"platform variable for use in the runner","type":"string"},"runner_api_url":{"type":"string"},"runner_binary_url":{"description":"RunnerBinaryURL overrides the URL used to download the runner binary onto the\nhost for mng mode. When empty, defaults to the S3 artifacts URL.","type":"string"},"runner_group_id":{"type":"string"},"sandbox_mode":{"description":"configuration for managing the runner server side","type":"boolean"},"updated_at":{"type":"string"},"vm_max_uptime":{"type":"integer"}},"type":"object"},"app.RunnerGroupType":{"enum":["install","org"],"type":"string"},"app.RunnerHealthCheck":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"minute_bucket":{"type":"string"},"process":{"type":"string"},"process_id":{"type":"string"},"runner_id":{"type":"string"},"runner_job":{"$ref":"#/components/schemas/app.RunnerJob"},"status":{"$ref":"#/components/schemas/app.RunnerStatus"},"status_code":{"type":"integer"},"updated_at":{"type":"string"}},"type":"object"},"app.RunnerHeartBeat":{"properties":{"alive_time":{"type":"integer"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"process":{"type":"string"},"process_id":{"type":"string"},"runner_id":{"type":"string"},"started_at":{"type":"string"},"updated_at":{"type":"string"},"version":{"type":"string"}},"type":"object"},"app.RunnerJob":{"properties":{"available_timeout":{"description":"available timeout is how long a job can be marked as \"available\" before being requeued","type":"integer"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"execution_count":{"type":"integer"},"execution_time":{"type":"integer"},"execution_timeout":{"description":"execution timeout is how long a job can be marked as \"exeucuting\" before being requeued","type":"integer"},"executions":{"items":{"$ref":"#/components/schemas/app.RunnerJobExecution"},"type":"array"},"final_runner_job_execution_id":{"type":"string"},"finished_at":{"type":"string"},"group":{"$ref":"#/components/schemas/app.RunnerJobGroup"},"id":{"type":"string"},"install_role_usage":{"$ref":"#/components/schemas/app.InstallRoleUsage"},"json":{"$ref":"#/components/schemas/app.RunnerJobPlan"},"log_stream_id":{"type":"string"},"max_executions":{"type":"integer"},"metadata":{"additionalProperties":{"type":"string"},"type":"object"},"operation":{"$ref":"#/components/schemas/app.RunnerJobOperationType"},"org_id":{"type":"string"},"outputs":{"additionalProperties":true,"type":"object"},"outputs_json":{"type":"string"},"overall_timeout":{"description":"overall timeout is how long a job can be attempted, before being cancelled","type":"integer"},"owner_id":{"type":"string"},"owner_type":{"type":"string"},"queue_timeout":{"description":"queue timeout is how long a job can be queued, before being made available","type":"integer"},"runner_id":{"type":"string"},"runner_process_id":{"type":"string"},"started_at":{"type":"string"},"status":{"$ref":"#/components/schemas/app.RunnerJobStatus"},"status_description":{"type":"string"},"status_v2":{"$ref":"#/components/schemas/app.CompositeStatus"},"type":{"$ref":"#/components/schemas/app.RunnerJobType"},"updated_at":{"type":"string"}},"type":"object"},"app.RunnerJobExecution":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"metadata":{"additionalProperties":{"type":"string"},"description":"Metadata is used to store additional information about the execution {e.g., client version.}","type":"object"},"org_id":{"type":"string"},"outputs":{"$ref":"#/components/schemas/app.RunnerJobExecutionOutputs"},"result":{"$ref":"#/components/schemas/app.RunnerJobExecutionResult"},"runner_job_id":{"type":"string"},"status":{"$ref":"#/components/schemas/app.RunnerJobExecutionStatus"},"status_v2":{"$ref":"#/components/schemas/app.CompositeStatus"},"updated_at":{"type":"string"}},"type":"object"},"app.RunnerJobExecutionOutputs":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"org_id":{"type":"string"},"outputs":{"additionalProperties":{"type":"object"},"type":"object"},"outputs_json":{"type":"string"},"runner_job_execution_id":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.RunnerJobExecutionResult":{"properties":{"contents":{"type":"string"},"contents_display":{"type":"string"},"contents_display_gzip":{"type":"string"},"contents_gzip":{"description":"columns for storage of gzipped contents and plans","type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"error_code":{"type":"integer"},"error_metadata":{"additionalProperties":{"type":"string"},"type":"object"},"id":{"type":"string"},"org_id":{"type":"string"},"runner_job_execution_id":{"type":"string"},"success":{"type":"boolean"},"updated_at":{"type":"string"}},"type":"object"},"app.RunnerJobExecutionStatus":{"enum":["pending","initializing","in-progress","cleaning-up","finished","failed","timed-out","not-attempted","cancelled","unknown"],"type":"string"},"app.RunnerJobGroup":{"enum":["health-checks","sync","build","deploy","sandbox","runner","operations","management","actions","","any"],"type":"string"},"app.RunnerJobOperationType":{"enum":["exec","build","create-apply-plan","create-teardown-plan","apply-plan","unknown"],"type":"string"},"app.RunnerJobPlan":{"properties":{"composite_plan":{"$ref":"#/components/schemas/plantypes.CompositePlan"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"org_id":{"type":"string"},"plan_json":{"type":"string"},"runner_job_id":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.RunnerJobStatus":{"enum":["queued","available","in-progress","finished","failed","timed-out","not-attempted","cancelled","unknown"],"type":"string"},"app.RunnerJobType":{"enum":["health-check","docker-build","container-image-build","terraform-module-build","helm-chart-build","kubernetes-manifest-build","pulumi-build","noop-build","sandbox-build","oci-sync","noop-sync","fetch-image-metadata","terraform-deploy","helm-chart-deploy","job-deploy","kubernetes-manifest-deploy","pulumi-deploy","noop-deploy","shut-down","update-version","noop","mng-vm-shut-down","mng-shut-down","mng-runner-update-version","mng-runner-restart","mng-fetch-token","sandbox-terraform","sandbox-terraform-plan","sandbox-pulumi","sandbox-sync-secrets","runner-helm","runner-terraform","runner-local","actions-workflow"],"type":"string"},"app.RunnerOperation":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"log_stream":{"allOf":[{"$ref":"#/components/schemas/app.LogStream"}],"description":"job details"},"operation_type":{"$ref":"#/components/schemas/app.RunnerOperationType"},"runner_id":{"type":"string"},"status":{"type":"string"},"status_description":{"type":"string"},"status_v2":{"$ref":"#/components/schemas/app.CompositeStatus"},"updated_at":{"type":"string"}},"type":"object"},"app.RunnerOperationType":{"enum":["provision","provision_service_account","reprovision","deprovision"],"type":"string"},"app.RunnerProcess":{"properties":{"composite_status":{"$ref":"#/components/schemas/app.CompositeStatus"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"initial_health_check":{"type":"boolean"},"labels":{"description":"Labels are computed server-side and not persisted.","items":{"type":"string"},"type":"array"},"log_stream_id":{"type":"string"},"org_id":{"type":"string"},"restart_requested":{"type":"boolean"},"runner_id":{"type":"string"},"shutdowns":{"items":{"$ref":"#/components/schemas/app.RunnerProcessShutdown"},"type":"array"},"started_at":{"type":"string"},"type":{"$ref":"#/components/schemas/app.RunnerProcessType"},"updated_at":{"type":"string"},"uptime":{"type":"integer"},"version":{"type":"string"},"warnings":{"description":"Warnings are computed server-side and not persisted.","items":{"type":"string"},"type":"array"}},"type":"object"},"app.RunnerProcessShutdown":{"properties":{"composite_status":{"$ref":"#/components/schemas/app.CompositeStatus"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"metadata":{"$ref":"#/components/schemas/pgtype.Hstore"},"org_id":{"type":"string"},"runner_process_id":{"type":"string"},"status":{"description":"Status and StatusDescription are computed from CompositeStatus via AfterQuery.","type":"string"},"status_description":{"type":"string"},"type":{"$ref":"#/components/schemas/app.RunnerProcessShutdownType"},"updated_at":{"type":"string"}},"type":"object"},"app.RunnerProcessShutdownType":{"enum":["graceful","force","restart"],"type":"string"},"app.RunnerProcessType":{"enum":["mng","install","build","org",""],"type":"string"},"app.RunnerStatus":{"enum":["error","active","pending","provisioning","deprovisioning","deprovisioned","reprovisioning","offline","awaiting-install-stack-run","unknown"],"type":"string"},"app.SandboxRunType":{"enum":["provision","reprovision","deprovision"],"type":"string"},"app.StackType":{"enum":["aws-cloudformation","azure-bicep","gcp-terraform"],"type":"string"},"app.Status":{"enum":["error","pending","in-progress","checking-plan","success","not-attempted","cancelled","retrying","discarded","user-skipped","auto-skipped","planning","applying","queued","warning","generating","awaiting-user-run","provisioning","active","outdated","expired","approved","drifted","no-drift","approval-expired","approval-denied","approval-retry","building","deleting","noop","approval-awaiting"],"type":"string"},"app.TerraformLock":{"properties":{"created":{"type":"string"},"id":{"type":"string"},"info":{"type":"string"},"operation":{"type":"string"},"path":{"type":"string"},"version":{},"who":{"type":"string"}},"type":"object"},"app.TerraformModuleComponentConfig":{"properties":{"component_config_connection_id":{"description":"parent reference","type":"string"},"connected_github_vcs_config":{"$ref":"#/components/schemas/app.ConnectedGithubVCSConfig"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"id":{"type":"string"},"public_git_vcs_config":{"$ref":"#/components/schemas/app.PublicGitVCSConfig"},"updated_at":{"type":"string"},"variables":{"additionalProperties":{"type":"string"},"type":"object"},"variables_files":{"items":{"type":"string"},"type":"array"},"version":{"description":"terraform configuration values","type":"string"}},"type":"object"},"app.TerraformStateInstance":{"properties":{"attributes":{"additionalProperties":{},"type":"object"},"schema_version":{"type":"integer"},"sensitive_attributes":{"items":{},"type":"array"}},"type":"object"},"app.TerraformStateResource":{"properties":{"instances":{"items":{"$ref":"#/components/schemas/app.TerraformStateInstance"},"type":"array"},"mode":{"type":"string"},"name":{"type":"string"},"provider":{"type":"string"},"type":{"type":"string"}},"type":"object"},"app.TerraformWorkspace":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"org_id":{"type":"string"},"owner_id":{"type":"string"},"owner_type":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.TerraformWorkspaceLock":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"lock":{"$ref":"#/components/schemas/app.TerraformLock"},"org_id":{"type":"string"},"runner_job":{"$ref":"#/components/schemas/app.RunnerJob"},"runner_job_id":{"type":"string"},"updated_at":{"type":"string"},"workspace_id":{"description":"Foreign key to TerraformWorkspace with unique constraint to prevent multiple active locks","type":"string"}},"type":"object"},"app.TerraformWorkspaceState":{"properties":{"contents":{"items":{"type":"integer"},"type":"array"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"org_id":{"type":"string"},"revision":{"type":"integer"},"runner_job":{"$ref":"#/components/schemas/app.RunnerJob"},"runner_job_id":{"type":"string"},"terraform_workspace":{"$ref":"#/components/schemas/app.TerraformWorkspace"},"terraform_workspace_id":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.TerraformWorkspaceStateJSON":{"properties":{"contents":{"items":{"type":"integer"},"type":"array"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"org_id":{"type":"string"},"runner_job":{"$ref":"#/components/schemas/app.RunnerJob"},"runner_job_id":{"type":"string"},"updated_at":{"type":"string"},"workspace_id":{"description":"Foreign key to TerraformWorkspace with unique constraint to prevent conflicting states for a workspace","type":"string"}},"type":"object"},"app.UserJourney":{"properties":{"name":{"type":"string"},"steps":{"items":{"$ref":"#/components/schemas/app.UserJourneyStep"},"type":"array"},"title":{"type":"string"}},"type":"object"},"app.UserJourneyStep":{"properties":{"complete":{"type":"boolean"},"completed_at":{"description":"Top-level completion tracking fields","type":"string"},"completion_method":{"type":"string"},"completion_source":{"type":"string"},"metadata":{"additionalProperties":true,"description":"Flexible metadata for business data","type":"object"},"name":{"type":"string"},"title":{"type":"string"}},"type":"object"},"app.VCSConnection":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"github_account_id":{"type":"string"},"github_account_name":{"type":"string"},"github_install_id":{"type":"string"},"id":{"type":"string"},"queues":{"items":{"$ref":"#/components/schemas/app.Queue"},"type":"array"},"status":{"$ref":"#/components/schemas/app.CompositeStatus"},"updated_at":{"type":"string"},"vcs_connection_commit":{"items":{"$ref":"#/components/schemas/app.VCSConnectionCommit"},"type":"array"}},"type":"object"},"app.VCSConnectionCommit":{"properties":{"author_email":{"type":"string"},"author_name":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"message":{"type":"string"},"owner_id":{"description":"Polymorphic ownership - references VCS config that owns this commit","type":"string"},"owner_type":{"type":"string"},"sha":{"type":"string"},"updated_at":{"type":"string"},"vcs_connection_id":{"type":"string"}},"type":"object"},"app.VCSEvent":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"event_type":{"type":"string"},"id":{"type":"string"},"payload":{"$ref":"#/components/schemas/app.VCSEventPayload"},"status":{"$ref":"#/components/schemas/app.CompositeStatus"},"updated_at":{"type":"string"},"vcs_connection_id":{"type":"string"}},"type":"object"},"app.VCSEventPayload":{"additionalProperties":{},"type":"object"},"app.Waitlist":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"org_name":{"type":"string"},"updated_at":{"type":"string"}},"type":"object"},"app.Workflow":{"properties":{"app_branch_runs":{"items":{"$ref":"#/components/schemas/app.AppBranchRun"},"type":"array"},"approval_option":{"$ref":"#/components/schemas/app.InstallApprovalOption"},"created_at":{"type":"string"},"created_by":{"$ref":"#/components/schemas/app.Account"},"created_by_id":{"type":"string"},"execution_time":{"type":"integer"},"finished":{"type":"boolean"},"finished_at":{"type":"string"},"generate_steps_signal":{"allOf":[{"$ref":"#/components/schemas/signaldb.SignalData"}],"description":"GenerateStepsSignal is an optional queue signal that generates workflow steps.\nWhen set, the conductor enqueues this signal and calls its \"FetchSteps\" update\nhandler instead of using the hardcoded Generators map."},"id":{"type":"string"},"install_action_workflow_runs":{"items":{"$ref":"#/components/schemas/app.InstallActionWorkflowRun"},"type":"array"},"install_deploys":{"items":{"$ref":"#/components/schemas/app.InstallDeploy"},"type":"array"},"install_sandbox_runs":{"items":{"$ref":"#/components/schemas/app.InstallSandboxRun"},"type":"array"},"links":{"additionalProperties":{},"type":"object"},"metadata":{"additionalProperties":{"type":"string"},"type":"object"},"name":{"type":"string"},"owner_id":{"type":"string"},"owner_name":{"description":"OwnerName is a derived, non-persisted convenience field. It is\npopulated by activities that need a human-readable owner label\n(e.g. workflow lifecycle webhooks) via a small switch on OwnerType\n— see PkgWorkflowsFlowGetFlow. Empty unless the loading path\nexplicitly fills it.","type":"string"},"owner_type":{"type":"string"},"plan_only":{"type":"boolean"},"result_directive":{"description":"ResultDirective is set by the currently executing group signal to communicate\nthe group outcome back to the flow signal. Values: continue, stop, retry-group,\nskip-group, await-approval.","type":"string"},"role":{"type":"string"},"started_at":{"type":"string"},"status":{"$ref":"#/components/schemas/app.CompositeStatus"},"step_error_behavior":{"description":"DEPRECATED: for now we always abort on step errors","type":"string"},"step_groups":{"description":"step groups represent logical groupings of steps within the workflow","items":{"$ref":"#/components/schemas/app.WorkflowStepGroup"},"type":"array"},"steps":{"description":"steps represent each piece of the workflow","items":{"$ref":"#/components/schemas/app.WorkflowStep"},"type":"array"},"type":{"$ref":"#/components/schemas/app.WorkflowType"},"updated_at":{"type":"string"},"workflow_runs":{"items":{"$ref":"#/components/schemas/app.WorkflowRun"},"type":"array"}},"type":"object"},"app.WorkflowResponse":{"properties":{"workflow_id":{"type":"string"}},"type":"object"},"app.WorkflowRun":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"finished_at":{"type":"string"},"id":{"type":"string"},"start_from_idx":{"description":"StartFromIdx is the step index to start execution from.","type":"integer"},"started_at":{"type":"string"},"status":{"$ref":"#/components/schemas/app.CompositeStatus"},"trigger_step_id":{"description":"TriggerStepID is the step that triggered this run (empty for initial runs).","type":"string"},"type":{"$ref":"#/components/schemas/app.WorkflowRunType"},"updated_at":{"type":"string"},"workflow_id":{"type":"string"}},"type":"object"},"app.WorkflowRunType":{"enum":["initial","retry","skip","resume"],"type":"string"},"app.WorkflowStep":{"properties":{"approval":{"$ref":"#/components/schemas/app.WorkflowStepApproval"},"created_at":{"type":"string"},"created_by":{"$ref":"#/components/schemas/app.Account"},"created_by_id":{"type":"string"},"execution_time":{"type":"integer"},"execution_type":{"$ref":"#/components/schemas/app.WorkflowStepExecutionType"},"finished":{"type":"boolean"},"finished_at":{"type":"string"},"group_idx":{"description":"to group steps which belong to same logical group, eg, plan/apply","type":"integer"},"group_parallel":{"description":"GroupParallel indicates whether steps in this group should execute in parallel.","type":"boolean"},"group_retry_idx":{"description":"counter for every retry attempted on a group","type":"integer"},"id":{"type":"string"},"idx":{"type":"integer"},"install_workflow_id":{"description":"DEPRECATED: this is the install workflow ID, which is now the workflow ID.","type":"string"},"links":{"additionalProperties":{},"type":"object"},"log_stream":{"allOf":[{"$ref":"#/components/schemas/app.LogStream"}],"description":"LogStream is the log stream associated with this workflow step (when step_target_type is install_workflow_steps)."},"metadata":{"additionalProperties":{"type":"string"},"type":"object"},"name":{"type":"string"},"owner_id":{"type":"string"},"owner_type":{"type":"string"},"policy_validation":{"$ref":"#/components/schemas/app.WorkflowStepPolicyValidation"},"result_directive":{"description":"ResultDirective is set by the execute-workflow-step signal to communicate\nthe step's outcome directive back to the group signal. Values: continue,\nstop, retry, retry-group, skip-group, await-approval.","type":"string"},"retried":{"type":"boolean"},"retry_index":{"type":"integer"},"retryable":{"type":"boolean"},"skippable":{"type":"boolean"},"started_at":{"type":"string"},"status":{"$ref":"#/components/schemas/app.CompositeStatus"},"step_queue_id":{"description":"StepQueueID is the queue where the execute-workflow-step signal runs.\nWhen empty, the group's default step queue is used.","type":"string"},"step_target_id":{"description":"the following fields are set _once_ a step is in flight, and are orchestrated via the step's signal.\n\nthis is a polymorphic gorm relationship to one of the following objects:\n\ninstall_cloudformation_stack\ninstall_sandbox_run\ninstall_runner_update\ninstall_deploy\ninstall_action_workflow_run (can be many of these)","type":"string"},"step_target_type":{"type":"string"},"target_queue_id":{"description":"TargetQueueID is the queue where the inner signal (the actual work)\ngets dispatched. When empty, the step signal's TargetQueueName is used.","type":"string"},"updated_at":{"type":"string"},"workflow_id":{"description":"Fields that are de-nested at read time using AfterQuery","type":"string"},"workflow_step_group_id":{"description":"WorkflowStepGroupID links this step to its parent WorkflowStepGroup.","type":"string"}},"type":"object"},"app.WorkflowStepApproval":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"installWorkflowStep":{"$ref":"#/components/schemas/app.WorkflowStep"},"installWorkflowStepID":{"description":"the step that this approval belongs too","type":"string"},"owner_id":{"type":"string"},"owner_type":{"type":"string"},"response":{"additionalProperties":{"type":"string"},"type":"object"},"runner_job":{"$ref":"#/components/schemas/app.RunnerJob"},"runner_job_id":{"description":"the runner job where this approval was created","type":"string"},"type":{"$ref":"#/components/schemas/app.WorkflowStepApprovalType"},"updated_at":{"type":"string"},"workflow_step":{"$ref":"#/components/schemas/app.WorkflowStep"},"workflow_step_id":{"description":"afterquery","type":"string"}},"type":"object"},"app.WorkflowStepApprovalType":{"enum":["noop","approve-all","terraform_plan","kubernetes_manifest_approval","helm_approval","pulumi_plan"],"type":"string"},"app.WorkflowStepExecutionType":{"enum":["system","user","approval","skipped","hidden"],"type":"string"},"app.WorkflowStepGroup":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"eager_execution":{"description":"EagerExecution marks this group for early execution during step generation.\nWhen set, the group is returned via the \"eager-step-groups\" update handler\nbefore all groups have been generated, allowing execution to start sooner.\nThis field is not persisted to DB — it is only used during generation.","type":"boolean"},"group_idx":{"type":"integer"},"id":{"type":"string"},"name":{"type":"string"},"parallel":{"type":"boolean"},"queue_signal":{"$ref":"#/components/schemas/app.QueueSignal"},"result_directive":{"type":"string"},"status":{"$ref":"#/components/schemas/app.CompositeStatus"},"steps":{"items":{"$ref":"#/components/schemas/app.WorkflowStep"},"type":"array"},"updated_at":{"type":"string"},"workflow_id":{"type":"string"}},"type":"object"},"app.WorkflowStepPolicyValidation":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"id":{"type":"string"},"install_workflow_step_id":{"description":"install workflow step is the install step that this was performed within","type":"string"},"response":{"description":"response is the kyverno response (deprecated: use Reports for detailed results)","type":"string"},"runner_job_id":{"description":"runnerJobID is the runner job that this was performed within","type":"string"},"status":{"allOf":[{"$ref":"#/components/schemas/app.CompositeStatus"}],"description":"status denotes whether this passed, or whether it failed the job."},"updated_at":{"type":"string"}},"type":"object"},"app.WorkflowStepResponseType":{"enum":["deny","approve","deny-skip-current","deny-skip-current-and-dependents","retry","auto-approve"],"type":"string"},"app.WorkflowType":{"enum":["provision","deprovision","deprovision_sandbox","manual_deploy","input_update","deploy_components","teardown_component","teardown_components","reprovision_sandbox","drift_run_reprovision_sandbox","action_workflow_run","sync_secrets","drift_run","app_branches_manual_update","app_branches_config_repo_update","app_branches_component_repo_update","reprovision","app_config_build"],"type":"string"},"blobstore.Blob":{"type":"object"},"cctx.SignalContext":{"properties":{"account_id":{"type":"string"},"log_stream_id":{"type":"string"},"org_id":{"type":"string"},"trace_id":{"type":"string"}},"type":"object"},"config.AppPolicyEngine":{"enum":["kyverno","opa"],"type":"string"},"config.AppPolicyType":{"enum":["kubernetes_cluster","terraform_module","helm_chart","kubernetes_manifest","docker_build","container_image","pulumi","sandbox"],"type":"string"},"config.CustomNestedStack":{"properties":{"contents":{"type":"string"},"contents_hash":{"type":"string"},"index":{"type":"integer"},"name":{"type":"string"},"parameters":{"additionalProperties":{"type":"string"},"type":"object"},"template_url":{"type":"string"}},"type":"object"},"config.HelmRepoConfig":{"properties":{"chart":{"type":"string"},"repoURL":{"type":"string"},"version":{"type":"string"}},"type":"object"},"configs.OCIRegistryAuth":{"properties":{"password":{"type":"string"},"username":{"type":"string"}},"type":"object"},"configs.OCIRegistryRepository":{"properties":{"acrauth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_azure_credentials.Config"},"ecrauth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_aws_credentials.Config"},"loginServer":{"type":"string"},"ociauth":{"$ref":"#/components/schemas/configs.OCIRegistryAuth"},"plugin":{"type":"string"},"region":{"type":"string"},"registryType":{"$ref":"#/components/schemas/configs.OCIRegistryType"},"repository":{"description":"based on the type of access, either the repository (ecr) or login server (acr) will be provided.","type":"string"},"serviceAccountEmail":{"type":"string"},"workloadIdentityProvider":{"type":"string"}},"type":"object"},"configs.OCIRegistryType":{"enum":["ecr","acr","gar","private_oci","public_oci"],"type":"string"},"credentials.AssumeRoleConfig":{"properties":{"role_arn":{"type":"string"},"session_duration_seconds":{"type":"integer"},"session_name":{"type":"string"},"two_step_config":{"allOf":[{"$ref":"#/components/schemas/iam.TwoStepConfig"}],"description":"configuration for two stepping before assuming this role"},"use_gcp_oidc":{"type":"boolean"},"use_github_oidc":{"type":"boolean"}},"required":["role_arn","session_name"],"type":"object"},"credentials.ServicePrincipalCredentials":{"properties":{"subscription_id":{"type":"string"},"subscription_tenant_id":{"type":"string"}},"type":"object"},"credentials.StaticCredentials":{"properties":{"access_key_id":{"type":"string"},"secret_access_key":{"type":"string"},"session_token":{"type":"string"}},"required":["access_key_id","secret_access_key","session_token"],"type":"object"},"generics.NullTime":{"properties":{"time":{"type":"string"},"valid":{"description":"Valid is true if Time is not NULL","type":"boolean"}},"type":"object"},"github.Match":{"properties":{"indices":{"items":{"type":"integer"},"type":"array"},"text":{"type":"string"}},"type":"object"},"github.Plan":{"properties":{"collaborators":{"type":"integer"},"filled_seats":{"type":"integer"},"name":{"type":"string"},"private_repos":{"type":"integer"},"seats":{"type":"integer"},"space":{"type":"integer"}},"type":"object"},"github.TextMatch":{"properties":{"fragment":{"type":"string"},"matches":{"items":{"$ref":"#/components/schemas/github.Match"},"type":"array"},"object_type":{"type":"string"},"object_url":{"type":"string"},"property":{"type":"string"}},"type":"object"},"github.Timestamp":{"properties":{"time.Time":{"type":"string"}},"type":"object"},"github.User":{"properties":{"avatar_url":{"type":"string"},"bio":{"type":"string"},"blog":{"type":"string"},"collaborators":{"type":"integer"},"company":{"type":"string"},"created_at":{"$ref":"#/components/schemas/github.Timestamp"},"disk_usage":{"type":"integer"},"email":{"type":"string"},"events_url":{"type":"string"},"followers":{"type":"integer"},"followers_url":{"type":"string"},"following":{"type":"integer"},"following_url":{"type":"string"},"gists_url":{"type":"string"},"gravatar_id":{"type":"string"},"hireable":{"type":"boolean"},"html_url":{"type":"string"},"id":{"type":"integer"},"ldap_dn":{"type":"string"},"location":{"type":"string"},"login":{"type":"string"},"name":{"type":"string"},"node_id":{"type":"string"},"organizations_url":{"type":"string"},"owned_private_repos":{"type":"integer"},"permissions":{"additionalProperties":{"type":"boolean"},"description":"Permissions and RoleName identify the permissions and role that a user has on a given\nrepository. These are only populated when calling Repositories.ListCollaborators.","type":"object"},"plan":{"$ref":"#/components/schemas/github.Plan"},"private_gists":{"type":"integer"},"public_gists":{"type":"integer"},"public_repos":{"type":"integer"},"received_events_url":{"type":"string"},"repos_url":{"type":"string"},"role_name":{"type":"string"},"site_admin":{"type":"boolean"},"starred_url":{"type":"string"},"subscriptions_url":{"type":"string"},"suspended_at":{"$ref":"#/components/schemas/github.Timestamp"},"text_matches":{"description":"TextMatches is only populated from search results that request text matches\nSee: search.go and https://docs.github.com/en/rest/search/#text-match-metadata","items":{"$ref":"#/components/schemas/github.TextMatch"},"type":"array"},"total_private_repos":{"type":"integer"},"twitter_username":{"type":"string"},"two_factor_authentication":{"type":"boolean"},"type":{"type":"string"},"updated_at":{"$ref":"#/components/schemas/github.Timestamp"},"url":{"description":"API URLs","type":"string"}},"type":"object"},"github_com_nuonco_nuon_pkg_aws_credentials.Config":{"properties":{"assume_role":{"$ref":"#/components/schemas/credentials.AssumeRoleConfig"},"cache_id":{"description":"when cache ID is set, these credentials will be reused, up to the duration of the sessionTimeout (or default)","type":"string"},"profile":{"description":"If profile is provided, we'll use that profile over the default credentials","type":"string"},"region":{"type":"string"},"static":{"$ref":"#/components/schemas/credentials.StaticCredentials"},"use_default":{"type":"boolean"}},"type":"object"},"github_com_nuonco_nuon_pkg_azure_credentials.Config":{"properties":{"service_principal":{"$ref":"#/components/schemas/credentials.ServicePrincipalCredentials"},"use_default":{"type":"boolean"}},"type":"object"},"github_com_nuonco_nuon_pkg_gcp_credentials.Config":{"properties":{"impersonate_service_account":{"type":"string"},"project_id":{"type":"string"},"region":{"type":"string"}},"type":"object"},"github_com_nuonco_nuon_pkg_labels.Labels":{"additionalProperties":{"type":"string"},"type":"object"},"github_com_nuonco_nuon_pkg_types_state.State":{"properties":{"actions":{"$ref":"#/components/schemas/state.ActionsState"},"app":{"$ref":"#/components/schemas/state.AppState"},"cloud_account":{"$ref":"#/components/schemas/state.CloudAccount"},"components":{"additionalProperties":{},"type":"object"},"domain":{"$ref":"#/components/schemas/state.DomainState"},"id":{"type":"string"},"inputs":{"$ref":"#/components/schemas/state.InputsState"},"install":{"allOf":[{"$ref":"#/components/schemas/state.InstallState"}],"description":"NOTE: for backwards compatibility, these are remaining in place."},"install_stack":{"$ref":"#/components/schemas/state.InstallStackState"},"labels":{"additionalProperties":{"type":"string"},"type":"object"},"name":{"type":"string"},"org":{"$ref":"#/components/schemas/state.OrgState"},"runner":{"$ref":"#/components/schemas/state.RunnerState"},"sandbox":{"$ref":"#/components/schemas/state.SandboxState"},"secrets":{"$ref":"#/components/schemas/state.SecretsState"},"stale_at":{"description":"loaded from the database but not part of the state itself","type":"string"}},"type":"object"},"helpers.ConnectedGithubVCSConfigRequest":{"properties":{"branch":{"type":"string"},"directory":{"type":"string"},"gitRef":{"type":"string"},"pathFilter":{"type":"string"},"repo":{"type":"string"}},"required":["directory","repo"],"type":"object"},"helpers.CreateInstallConfigParams":{"properties":{"approval_option":{"$ref":"#/components/schemas/app.InstallApprovalOption"},"custom_nested_stacks":{"items":{"$ref":"#/components/schemas/config.CustomNestedStack"},"type":"array"},"labels":{"additionalProperties":{"type":"string"},"type":"object"},"runner_nested_template_url":{"type":"string"},"vpc_nested_template_url":{"type":"string"}},"type":"object"},"helpers.InstallMetadata":{"properties":{"managed_by":{"type":"string"}},"type":"object"},"helpers.PublicGitVCSConfigRequest":{"properties":{"branch":{"type":"string"},"directory":{"type":"string"},"pathFilter":{"type":"string"},"repo":{"type":"string"}},"required":["branch","directory","repo"],"type":"object"},"iam.StaticCredentials":{"properties":{"access_key_id":{"type":"string"},"secret_access_key":{"type":"string"},"session_token":{"type":"string"}},"type":"object"},"iam.TwoStepConfig":{"properties":{"iam_role_arn":{"type":"string"},"src_iam_role_arn":{"type":"string"},"src_static_credentials":{"allOf":[{"$ref":"#/components/schemas/iam.StaticCredentials"}],"description":"Root Credentials"}},"type":"object"},"kube.ClusterInfo":{"properties":{"aws_auth":{"allOf":[{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_aws_credentials.Config"}],"description":"If either an AWS auth or Azure auth is passed in, we will automatically use it to resolve credentials and set\nthem in the environment."},"azure_auth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_azure_credentials.Config"},"ca_data":{"description":"CAData is the base64 encoded public certificate","type":"string"},"endpoint":{"description":"Endpoint is the URL of the k8s api server","type":"string"},"env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"gcp_auth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_gcp_credentials.Config"},"id":{"description":"ID is the ID of the EKS cluster","type":"string"},"inline":{"description":"If this is set, we will _not_ use aws-iam-authenticator, but rather inline create the token","type":"boolean"},"kube_config":{"description":"KubeConfig will override the kube config, and be parsed instead of generating a new one","type":"string"},"trusted_role_arn":{"description":"TrustedRoleARN is the arn of the role that should be assumed to interact with the cluster\nNOTE(JM): we are deprecating this","type":"string"}},"type":"object"},"outputs.SecretSyncOutput":{"properties":{"arn":{"type":"string"},"azure_key_vault_secret_id":{"type":"string"},"exists":{"type":"boolean"},"gcp_secret_name":{"type":"string"},"kubernetes_key":{"type":"string"},"kubernetes_name":{"type":"string"},"kubernetes_namespace":{"type":"string"},"length":{"type":"integer"},"name":{"type":"string"},"timestamp":{"type":"string"}},"type":"object"},"permissions.Permission":{"enum":["unknown","all","create","read","update","delete"],"type":"string"},"permissions.Set":{"additionalProperties":{"$ref":"#/components/schemas/permissions.Permission"},"type":"object"},"pgtype.Hstore":{"additionalProperties":{"type":"string"},"type":"object"},"plantypes.ActionWorkflowRunPlan":{"properties":{"attrs":{"additionalProperties":{"type":"string"},"type":"object"},"aws_auth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_aws_credentials.Config"},"azure_auth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_azure_credentials.Config"},"builtin_env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"cluster_info":{"allOf":[{"$ref":"#/components/schemas/kube.ClusterInfo"}],"description":"optional fields based on the configuration"},"gcp_auth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_gcp_credentials.Config"},"id":{"type":"string"},"install_id":{"type":"string"},"override_env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"sandbox_mode":{"$ref":"#/components/schemas/plantypes.SandboxMode"},"steps":{"items":{"$ref":"#/components/schemas/plantypes.ActionWorkflowRunStepPlan"},"type":"array"},"timeout":{"type":"integer"}},"type":"object"},"plantypes.ActionWorkflowRunStepPlan":{"properties":{"attrs":{"additionalProperties":{"type":"string"},"type":"object"},"git_source":{"$ref":"#/components/schemas/plantypes.GitSource"},"interpolated_command":{"type":"string"},"interpolated_env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"interpolated_inline_contents":{"type":"string"},"run_id":{"type":"string"}},"type":"object"},"plantypes.BuildPlan":{"properties":{"component_build_id":{"type":"string"},"component_id":{"type":"string"},"container_image_pull_plan":{"$ref":"#/components/schemas/plantypes.ContainerImagePullPlan"},"docker_build_plan":{"$ref":"#/components/schemas/plantypes.DockerBuildPlan"},"dst_registry":{"$ref":"#/components/schemas/configs.OCIRegistryRepository"},"dst_tag":{"type":"string"},"git_source":{"$ref":"#/components/schemas/plantypes.GitSource"},"helm_build_plan":{"$ref":"#/components/schemas/plantypes.HelmBuildPlan"},"kubernetes_manifest_build_plan":{"$ref":"#/components/schemas/plantypes.KubernetesManifestBuildPlan"},"pulumi_build_plan":{"$ref":"#/components/schemas/plantypes.PulumiBuildPlan"},"sandbox_mode":{"$ref":"#/components/schemas/plantypes.SandboxMode"},"terraform_build_plan":{"$ref":"#/components/schemas/plantypes.TerraformBuildPlan"}},"required":["dst_registry","dst_tag"],"type":"object"},"plantypes.CompositePlan":{"properties":{"action_workflow_run_plan":{"$ref":"#/components/schemas/plantypes.ActionWorkflowRunPlan"},"build_plan":{"$ref":"#/components/schemas/plantypes.BuildPlan"},"deploy_plan":{"$ref":"#/components/schemas/plantypes.DeployPlan"},"fetch_image_metadata_plan":{"$ref":"#/components/schemas/plantypes.FetchImageMetadataPlan"},"sandbox_run_plan":{"$ref":"#/components/schemas/plantypes.SandboxRunPlan"},"sync_oci_plan":{"$ref":"#/components/schemas/plantypes.SyncOCIPlan"},"sync_secrets_plan":{"$ref":"#/components/schemas/plantypes.SyncSecretsPlan"}},"type":"object"},"plantypes.ContainerImagePullPlan":{"properties":{"image":{"type":"string"},"repo_config":{"$ref":"#/components/schemas/configs.OCIRegistryRepository"},"tag":{"type":"string"}},"type":"object"},"plantypes.DeployPlan":{"properties":{"app_config_id":{"type":"string"},"app_id":{"type":"string"},"apply_plan_contents":{"description":"The following field is for applying a plan that is already save","type":"string"},"apply_plan_display":{"description":"This field is for storing a human legible plan or corollary representation","type":"string"},"component_id":{"type":"string"},"component_name":{"type":"string"},"helm":{"$ref":"#/components/schemas/plantypes.HelmDeployPlan"},"install_id":{"type":"string"},"kubernetes_manifest":{"$ref":"#/components/schemas/plantypes.KubernetesManifestDeployPlan"},"noop":{"$ref":"#/components/schemas/plantypes.NoopDeployPlan"},"pulumi":{"$ref":"#/components/schemas/plantypes.PulumiDeployPlan"},"sandbox_mode":{"$ref":"#/components/schemas/plantypes.SandboxMode"},"src_registry":{"$ref":"#/components/schemas/configs.OCIRegistryRepository"},"src_tag":{"type":"string"},"terraform":{"$ref":"#/components/schemas/plantypes.TerraformDeployPlan"}},"required":["src_registry","src_tag"],"type":"object"},"plantypes.DockerBuildPlan":{"properties":{"build_args":{"additionalProperties":{"type":"string"},"type":"object"},"context":{"type":"string"},"dockerfile":{"type":"string"},"target":{"type":"string"}},"type":"object"},"plantypes.FetchImageMetadataPlan":{"properties":{"include_attestation_layers":{"type":"boolean"},"include_attestation_manifests":{"type":"boolean"},"include_index":{"description":"Options for metadata fetching","type":"boolean"},"registry":{"allOf":[{"$ref":"#/components/schemas/configs.OCIRegistryRepository"}],"description":"Registry configuration for the source image"},"sandbox_mode":{"$ref":"#/components/schemas/plantypes.SandboxMode"},"tag":{"description":"Tag is the image tag to fetch metadata for","type":"string"}},"required":["registry","tag"],"type":"object"},"plantypes.GitSource":{"properties":{"path":{"type":"string"},"recurse_submodules":{"type":"boolean"},"ref":{"type":"string"},"url":{"type":"string"}},"required":["path","ref","url"],"type":"object"},"plantypes.HelmBuildPlan":{"properties":{"helmRepoConfig":{"$ref":"#/components/schemas/config.HelmRepoConfig"},"labels":{"additionalProperties":{"type":"string"},"type":"object"},"values":{"items":{"$ref":"#/components/schemas/plantypes.HelmValue"},"type":"array"},"valuesFiles":{"items":{"type":"string"},"type":"array"}},"type":"object"},"plantypes.HelmDeployPlan":{"properties":{"aws_auth":{"allOf":[{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_aws_credentials.Config"}],"description":"Auth for cloud providers"},"azure_auth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_azure_credentials.Config"},"cluster_info":{"$ref":"#/components/schemas/kube.ClusterInfo"},"create_namespace":{"type":"boolean"},"gcp_auth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_gcp_credentials.Config"},"helm_chart_id":{"type":"string"},"name":{"description":"NOTE(jm): these fields should probably just come from the app config, however we keep them around for\ndebuggability","type":"string"},"namespace":{"type":"string"},"storage_driver":{"type":"string"},"take_ownership":{"type":"boolean"},"values":{"items":{"$ref":"#/components/schemas/plantypes.HelmValue"},"type":"array"},"values_files":{"items":{"type":"string"},"type":"array"}},"type":"object"},"plantypes.HelmSandboxMode":{"properties":{"plan_contents":{"type":"string"},"plan_display_contents":{"type":"string"}},"type":"object"},"plantypes.HelmValue":{"properties":{"name":{"type":"string"},"type":{"type":"string"},"value":{"type":"string"}},"type":"object"},"plantypes.KubernetesManifestBuildPlan":{"properties":{"inline_manifest":{"description":"InlineManifest contains the raw manifest YAML (for inline source type)","type":"string"},"kustomize_config":{"allOf":[{"$ref":"#/components/schemas/plantypes.KustomizeBuildConfig"}],"description":"KustomizeConfig contains additional kustomize build options"},"kustomize_path":{"description":"KustomizePath is the path to the kustomization directory (for kustomize source type)\nRelative to the repository root","type":"string"},"labels":{"additionalProperties":{"type":"string"},"description":"Labels for the OCI artifact","type":"object"},"source_type":{"description":"SourceType indicates how manifests are sourced: \"inline\" or \"kustomize\"","type":"string"}},"type":"object"},"plantypes.KubernetesManifestDeployPlan":{"properties":{"aws_auth":{"allOf":[{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_aws_credentials.Config"}],"description":"Auth for cloud providers"},"azure_auth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_azure_credentials.Config"},"cluster_info":{"$ref":"#/components/schemas/kube.ClusterInfo"},"gcp_auth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_gcp_credentials.Config"},"manifest":{"description":"Manifest is populated at runtime from the OCI artifact.\nThis field is no longer set during plan creation - it's populated by the runner\nafter pulling the OCI artifact during Initialize().","type":"string"},"namespace":{"type":"string"},"oci_artifact":{"allOf":[{"$ref":"#/components/schemas/plantypes.OCIArtifactReference"}],"description":"OCIArtifact reference (set during plan creation, used by runner to pull manifest)"}},"type":"object"},"plantypes.KubernetesSandboxMode":{"properties":{"plan_contents":{"type":"string"},"plan_display_contents":{"type":"string"}},"type":"object"},"plantypes.KubernetesSecretSync":{"properties":{"azure_key_vault_secret_id":{"description":"https://{vault-name}.vault.azure.net/secrets/{secret-name}","type":"string"},"format":{"description":"NOTE(jm): this should probably come from the app config, but for now we just use string parsing to avoid\nupdating the runner job and save time.","type":"string"},"gcp_secret_name":{"description":"projects/{project}/secrets/{id}/versions/latest","type":"string"},"key_name":{"type":"string"},"name":{"type":"string"},"namespace":{"type":"string"},"secret_arn":{"type":"string"},"secret_name":{"description":"the name of the secret from the config","type":"string"}},"type":"object"},"plantypes.KustomizeBuildConfig":{"properties":{"enable_helm":{"description":"EnableHelm enables Helm chart inflation during kustomize build","type":"boolean"},"load_restrictor":{"description":"LoadRestrictor controls file loading: \"none\" or \"rootOnly\" (default)","type":"string"},"patches":{"description":"Patches are additional patch files to apply after kustomize build","items":{"type":"string"},"type":"array"}},"type":"object"},"plantypes.NoopDeployPlan":{"type":"object"},"plantypes.OCIArtifactReference":{"properties":{"digest":{"description":"Digest is the immutable artifact digest (e.g., sha256:abc123...)","type":"string"},"tag":{"description":"Tag is the artifact tag (typically the build ID)","type":"string"},"url":{"description":"URL is the full artifact URL (e.g., registry.nuon.co/org_id/app_id)","type":"string"}},"type":"object"},"plantypes.PulumiBuildPlan":{"properties":{"labels":{"additionalProperties":{"type":"string"},"type":"object"}},"type":"object"},"plantypes.PulumiDeployPlan":{"properties":{"aws_auth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_aws_credentials.Config"},"azure_auth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_azure_credentials.Config"},"cluster_info":{"$ref":"#/components/schemas/kube.ClusterInfo"},"config":{"additionalProperties":{"type":"string"},"type":"object"},"destroy":{"description":"Destroy indicates this is a teardown operation (pulumi destroy instead of up)","type":"boolean"},"env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"gcp_auth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_gcp_credentials.Config"},"plan_json":{"items":{"type":"integer"},"type":"array"},"pulumi_version":{"type":"string"},"runtime":{"type":"string"},"stack_name":{"type":"string"},"state":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_types_state.State"},"workspace_id":{"description":"Reuse workspace concept for state storage","type":"string"}},"type":"object"},"plantypes.PulumiSandboxMode":{"properties":{"plan_contents":{"type":"string"},"plan_display_contents":{"type":"string"}},"type":"object"},"plantypes.SandboxMode":{"properties":{"enabled":{"type":"boolean"},"helm":{"$ref":"#/components/schemas/plantypes.HelmSandboxMode"},"kubernetes_manifest":{"$ref":"#/components/schemas/plantypes.KubernetesSandboxMode"},"outputs":{"additionalProperties":{},"type":"object"},"pulumi":{"$ref":"#/components/schemas/plantypes.PulumiSandboxMode"},"terraform":{"$ref":"#/components/schemas/plantypes.TerraformSandboxMode"}},"type":"object"},"plantypes.SandboxRunPlan":{"properties":{"app_config_id":{"type":"string"},"app_id":{"type":"string"},"apply_plan_contents":{"description":"The following field is for applying a plan that is already saved","type":"string"},"apply_plan_display":{"description":"This field is for storing a human legible plan or corollary representation","items":{"type":"integer"},"type":"array"},"aws_auth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_aws_credentials.Config"},"azure_auth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_azure_credentials.Config"},"env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"gcp_auth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_gcp_credentials.Config"},"git_source":{"$ref":"#/components/schemas/plantypes.GitSource"},"hooks":{"$ref":"#/components/schemas/plantypes.TerraformDeployHooks"},"install_id":{"type":"string"},"local_archive":{"$ref":"#/components/schemas/plantypes.TerraformLocalArchive"},"policies":{"additionalProperties":{"type":"string"},"type":"object"},"sandbox_mode":{"$ref":"#/components/schemas/plantypes.SandboxMode"},"state":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_types_state.State"},"terraform_backend":{"$ref":"#/components/schemas/plantypes.TerraformBackend"},"vars":{"additionalProperties":{},"type":"object"},"vars_files":{"items":{"type":"string"},"type":"array"}},"type":"object"},"plantypes.SyncOCIPlan":{"properties":{"dst_registry":{"$ref":"#/components/schemas/configs.OCIRegistryRepository"},"dst_tag":{"type":"string"},"sandbox_mode":{"$ref":"#/components/schemas/plantypes.SandboxMode"},"src_registry":{"$ref":"#/components/schemas/configs.OCIRegistryRepository"},"src_tag":{"type":"string"}},"required":["dst_registry","dst_tag","src_registry","src_tag"],"type":"object"},"plantypes.SyncSecretsPlan":{"properties":{"aws_auth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_aws_credentials.Config"},"azure_auth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_azure_credentials.Config"},"cluster_info":{"$ref":"#/components/schemas/kube.ClusterInfo"},"gcp_auth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_gcp_credentials.Config"},"kubernetes_secrets":{"items":{"$ref":"#/components/schemas/plantypes.KubernetesSecretSync"},"type":"array"},"sandbox_mode":{"$ref":"#/components/schemas/plantypes.SandboxMode"}},"type":"object"},"plantypes.TerraformBackend":{"properties":{"workspaceID":{"type":"string"}},"required":["workspaceID"],"type":"object"},"plantypes.TerraformBuildPlan":{"properties":{"labels":{"additionalProperties":{"type":"string"},"type":"object"},"terraform_version":{"description":"TerraformVersion is the version of the terraform CLI the build runner\nshould install in order to vendor providers via\n`terraform providers mirror`. When empty the build runner falls back\nto a sane default. Should mirror the version configured for the\ncomponent's deploy plan so init resolves the same provider bytes the\nbuild vendored. Only consulted when VendorProviders is true.","type":"string"},"vendor_providers":{"description":"VendorProviders enables build-time vendoring of terraform providers\nvia `terraform providers mirror`. Gated by the\n`terraform-provider-mirror` org feature flag in ctl-api so we can\nroll the change out gradually without coupling install-runner\nbehaviour to the flag (the install runner auto-detects whether a\nmirror is present in the OCI artifact).","type":"boolean"}},"type":"object"},"plantypes.TerraformDeployHooks":{"properties":{"enabled":{"type":"boolean"},"envVars":{"additionalProperties":{"type":"string"},"type":"object"},"runAuth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_aws_credentials.Config"}},"type":"object"},"plantypes.TerraformDeployPlan":{"properties":{"aws_auth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_aws_credentials.Config"},"azure_auth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_azure_credentials.Config"},"cluster_info":{"$ref":"#/components/schemas/kube.ClusterInfo"},"env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"gcp_auth":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_gcp_credentials.Config"},"hooks":{"$ref":"#/components/schemas/plantypes.TerraformDeployHooks"},"plan_json":{"items":{"type":"integer"},"type":"array"},"policies":{"additionalProperties":{"type":"string"},"type":"object"},"state":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_types_state.State"},"terraform_backend":{"$ref":"#/components/schemas/plantypes.TerraformBackend"},"vars":{"additionalProperties":{},"type":"object"},"vars_files":{"items":{"type":"string"},"type":"array"}},"type":"object"},"plantypes.TerraformLocalArchive":{"properties":{"local_archive":{"type":"string"}},"type":"object"},"plantypes.TerraformSandboxMode":{"properties":{"plan_contents":{"description":"create the plan output","type":"string"},"plan_display_contents":{"type":"string"},"state_json":{"description":"needs to be the outputs of `terraform show -json`","items":{"type":"integer"},"type":"array"},"workspace_id":{"type":"string"}},"type":"object"},"queue.StatusResponse":{"properties":{"inFlight":{"items":{"type":"string"},"type":"array"},"inFlightCount":{"type":"integer"},"paused":{"type":"boolean"},"queueDepthCount":{"type":"integer"},"ready":{"type":"boolean"},"stopped":{"type":"boolean"}},"type":"object"},"refs.Ref":{"properties":{"input":{"type":"string"},"name":{"type":"string"},"type":{"$ref":"#/components/schemas/refs.RefType"},"value":{"type":"string"}},"type":"object"},"refs.RefType":{"enum":["sandbox","install_stack","component","inputs","install_inputs","secrets","actions"],"type":"string"},"service.AddActionLabelsRequest":{"properties":{"labels":{"additionalProperties":{"type":"string"},"type":"object"}},"required":["labels"],"type":"object"},"service.AddComponentLabelsRequest":{"properties":{"labels":{"additionalProperties":{"type":"string"},"type":"object"}},"required":["labels"],"type":"object"},"service.AddInstallLabelsRequest":{"properties":{"labels":{"additionalProperties":{"type":"string"},"type":"object"}},"required":["labels"],"type":"object"},"service.AppAWSIAMPolicyConfig":{"properties":{"contents":{"type":"string"},"gcp_permissions":{"items":{"type":"string"},"type":"array"},"gcp_predefined_role":{"type":"string"},"managed_policy_name":{"type":"string"},"name":{"type":"string"}},"type":"object"},"service.AppAWSIAMRoleConfig":{"properties":{"cloud_platform":{"enum":["aws","gcp","azure"],"type":"string"},"description":{"type":"string"},"display_name":{"type":"string"},"enabled_in_stack":{"nullable":true,"type":"boolean"},"name":{"type":"string"},"permissions_boundary":{"type":"string"},"policies":{"items":{"$ref":"#/components/schemas/service.AppAWSIAMPolicyConfig"},"minItems":1,"type":"array"}},"required":["description","display_name","name"],"type":"object"},"service.AppConfigTemplate":{"properties":{"content":{"type":"string"},"filename":{"type":"string"},"format":{"$ref":"#/components/schemas/app.AppConfigVersion"},"type":{"$ref":"#/components/schemas/service.AppConfigTemplateType"}},"type":"object"},"service.AppConfigTemplateType":{"enum":["aws-ecs","aws-ecs-byovpc","aws-eks","aws-eks-byovpc","azure-aks","flat","top-level","installer","runner","sandbox","inputs","terraform","terraformInfra","helm","docker-build","job","container-image","ecr-container-image"],"type":"string"},"service.AppGroupRequest":{"properties":{"description":{"type":"string"},"display_name":{"type":"string"},"index":{"type":"integer"}},"required":["description","display_name","index"],"type":"object"},"service.AppInputRequest":{"properties":{"default":{"type":"string"},"description":{"type":"string"},"display_name":{"type":"string"},"group":{"type":"string"},"index":{"type":"integer"},"required":{"type":"boolean"},"sensitive":{"type":"boolean"},"source":{"$ref":"#/components/schemas/app.AppInputSource"},"type":{"description":"New, optional fields","type":"string"}},"required":["description","display_name","group","index"],"type":"object"},"service.AppPolicyConfig":{"properties":{"components":{"items":{"type":"string"},"type":"array"},"contents":{"type":"string"},"description":{"type":"string"},"engine":{"$ref":"#/components/schemas/config.AppPolicyEngine"},"name":{"type":"string"},"type":{"$ref":"#/components/schemas/config.AppPolicyType"}},"required":["contents","type"],"type":"object"},"service.AppSecretConfig":{"properties":{"auto_generate":{"type":"boolean"},"default":{"type":"string"},"description":{"type":"string"},"display_name":{"type":"string"},"format":{"type":"string"},"kubernetes_secret_name":{"type":"string"},"kubernetes_secret_namespace":{"type":"string"},"kubernetes_sync":{"type":"boolean"},"name":{"type":"string"},"required":{"type":"boolean"}},"required":["description","display_name","name"],"type":"object"},"service.AuthMeIdentity":{"properties":{"name":{"type":"string"},"picture":{"type":"string"},"provider_type":{"$ref":"#/components/schemas/app.ProviderType"}},"type":"object"},"service.AuthMeResponse":{"properties":{"account_type":{"$ref":"#/components/schemas/app.AccountType"},"created_at":{"type":"string"},"email":{"type":"string"},"id":{"type":"string"},"identities":{"items":{"$ref":"#/components/schemas/service.AuthMeIdentity"},"type":"array"},"org_ids":{"description":"ReadOnly Fields","items":{"type":"string"},"type":"array"},"permissions":{"$ref":"#/components/schemas/permissions.Set"},"roles":{"items":{"$ref":"#/components/schemas/app.Role"},"type":"array"},"subject":{"type":"string"},"updated_at":{"type":"string"},"user_journeys":{"items":{"$ref":"#/components/schemas/app.UserJourney"},"type":"array"}},"type":"object"},"service.AvailableRole":{"properties":{"arn":{"type":"string"},"default":{"type":"boolean"},"name":{"type":"string"},"role_type":{"type":"string"}},"type":"object"},"service.AvailableRolesResponse":{"properties":{"roles":{"items":{"$ref":"#/components/schemas/service.AvailableRole"},"type":"array"}},"type":"object"},"service.Branch":{"properties":{"name":{"type":"string"}},"type":"object"},"service.BreakdownEntry":{"properties":{"denies":{"type":"integer"},"evaluations":{"type":"integer"},"key":{"type":"string"},"passes":{"type":"integer"},"warns":{"type":"integer"}},"type":"object"},"service.BuildAllComponentsRequest":{"type":"object"},"service.CLIConfig":{"properties":{"auth_audience":{"type":"string"},"auth_client_id":{"type":"string"},"auth_domain":{"type":"string"},"dashboard_url":{"type":"string"},"nuon_auth_enabled":{"type":"boolean"},"root_domain":{"type":"string"}},"type":"object"},"service.CancelRunnerJobRequest":{"type":"object"},"service.CancelWorkflowError":{"properties":{"error":{"type":"string"},"workflow_id":{"type":"string"}},"type":"object"},"service.CancelWorkflowStepResponse":{"properties":{"workflow_id":{"type":"string"}},"type":"object"},"service.CancelWorkflowsRequest":{"properties":{"workflow_ids":{"items":{"type":"string"},"type":"array"}},"required":["workflow_ids"],"type":"object"},"service.CancelWorkflowsResponse":{"properties":{"cancelled":{"items":{"type":"string"},"type":"array"},"errors":{"items":{"$ref":"#/components/schemas/service.CancelWorkflowError"},"type":"array"}},"type":"object"},"service.CompleteInstallStepRequest":{"properties":{"aws_account":{"properties":{"region":{"type":"string"}},"type":"object"},"azure_account":{"properties":{"location":{"type":"string"}},"type":"object"},"inputs":{"additionalProperties":{"type":"string"},"type":"object"},"install_mode":{"enum":["cloud","sandbox"],"type":"string"},"metadata":{"properties":{"managed_by":{"type":"string"}},"type":"object"},"name":{"type":"string"}},"required":["name"],"type":"object"},"service.CompleteOrganizationStepRequest":{"properties":{"name":{"type":"string"},"org_id":{"type":"string"}},"type":"object"},"service.CompleteYourStackStepRequest":{"properties":{"app_attributes":{"items":{"type":"string"},"type":"array"},"app_type":{"enum":["custom","example"],"type":"string"},"cloud_provider":{"type":"string"},"example_app_slug":{"type":"string"}},"required":["app_type"],"type":"object"},"service.ComponentChildren":{"properties":{"children":{"items":{"$ref":"#/components/schemas/app.Component"},"type":"array"}},"type":"object"},"service.ConnectedGithubVCSActionWorkflowConfigRequest":{"properties":{"branch":{"type":"string"},"directory":{"type":"string"},"gitRef":{"type":"string"},"repo":{"type":"string"}},"required":["directory","repo"],"type":"object"},"service.ConnectedGithubVCSConfigRequest":{"properties":{"branch":{"type":"string"},"directory":{"type":"string"},"gitRef":{"type":"string"},"repo":{"type":"string"}},"required":["directory","repo"],"type":"object"},"service.CreateActionWorkflowConfigRequest":{"properties":{"app_config_id":{"type":"string"},"break_glass_role_arn":{"type":"string"},"dependencies":{"items":{"type":"string"},"type":"array"},"enable_kube_config":{"nullable":true,"type":"boolean"},"references":{"items":{"type":"string"},"type":"array"},"role":{"type":"string"},"steps":{"items":{"$ref":"#/components/schemas/service.CreateActionWorkflowConfigStepRequest"},"type":"array"},"timeout":{"type":"integer"},"triggers":{"items":{"$ref":"#/components/schemas/service.CreateActionWorkflowConfigTriggerRequest"},"type":"array"}},"required":["app_config_id","steps","triggers"],"type":"object"},"service.CreateActionWorkflowConfigStepRequest":{"properties":{"command":{"type":"string"},"connected_github_vcs_config":{"$ref":"#/components/schemas/service.ConnectedGithubVCSActionWorkflowConfigRequest"},"env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"inline_contents":{"type":"string"},"name":{"type":"string"},"public_git_vcs_config":{"$ref":"#/components/schemas/service.PublicGitVCSActionWorkflowConfigRequest"},"references":{"items":{"type":"string"},"type":"array"}},"required":["name"],"type":"object"},"service.CreateActionWorkflowConfigTriggerRequest":{"properties":{"component_name":{"type":"string"},"cron_schedule":{"type":"string"},"index":{"type":"integer"},"type":{"$ref":"#/components/schemas/app.ActionWorkflowTriggerType"}},"required":["type"],"type":"object"},"service.CreateAdHocActionRequest":{"properties":{"command":{"type":"string"},"enable_kube_config":{"nullable":true,"type":"boolean"},"env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"inline_contents":{"type":"string"},"name":{"maxLength":255,"type":"string"},"role":{"type":"string"},"timeout":{"maximum":3600,"minimum":1,"type":"integer"}},"type":"object"},"service.CreateAdHocActionResponse":{"properties":{"created_at":{"type":"string"},"id":{"type":"string"},"install_id":{"type":"string"},"status":{"$ref":"#/components/schemas/app.InstallActionWorkflowRunStatus"},"status_description":{"type":"string"},"trigger_type":{"$ref":"#/components/schemas/app.ActionWorkflowTriggerType"},"workflow_id":{"type":"string"}},"type":"object"},"service.CreateAppActionRequest":{"properties":{"name":{"type":"string"}},"type":"object"},"service.CreateAppActionWorkflowRequest":{"properties":{"labels":{"additionalProperties":{"type":"string"},"type":"object"},"name":{"type":"string"}},"type":"object"},"service.CreateAppBranchConfigRequest":{"properties":{"connected_github_vcs_config":{"$ref":"#/components/schemas/helpers.ConnectedGithubVCSConfigRequest"},"install_groups":{"items":{"$ref":"#/components/schemas/service.InstallGroupRequest"},"type":"array"},"public_git_vcs_config":{"$ref":"#/components/schemas/helpers.PublicGitVCSConfigRequest"}},"type":"object"},"service.CreateAppBranchRequest":{"properties":{"name":{"minLength":1,"type":"string"}},"required":["name"],"type":"object"},"service.CreateAppBreakGlassConfigRequest":{"properties":{"app_config_id":{"type":"string"},"roles":{"items":{"$ref":"#/components/schemas/service.AppAWSIAMRoleConfig"},"type":"array"}},"required":["app_config_id","roles"],"type":"object"},"service.CreateAppConfigRequest":{"properties":{"cli_version":{"type":"string"},"readme":{"description":"not required Readme","type":"string"}},"type":"object"},"service.CreateAppInputConfigRequest":{"properties":{"app_config_id":{"type":"string"},"groups":{"additionalProperties":{"$ref":"#/components/schemas/service.AppGroupRequest"},"type":"object"},"inputs":{"additionalProperties":{"$ref":"#/components/schemas/service.AppInputRequest"},"type":"object"}},"required":["groups","inputs"],"type":"object"},"service.CreateAppOperationRoleConfigRequest":{"properties":{"app_config_id":{"type":"string"},"rules":{"items":{"$ref":"#/components/schemas/service.OperationRoleRuleRequest"},"type":"array"}},"required":["app_config_id","rules"],"type":"object"},"service.CreateAppPermissionsConfigRequest":{"properties":{"app_config_id":{"type":"string"},"break_glass_roles":{"items":{"$ref":"#/components/schemas/service.AppAWSIAMRoleConfig"},"type":"array"},"custom_roles":{"items":{"$ref":"#/components/schemas/service.AppAWSIAMRoleConfig"},"type":"array"},"deprovision_role":{"$ref":"#/components/schemas/service.AppAWSIAMRoleConfig"},"maintenance_role":{"$ref":"#/components/schemas/service.AppAWSIAMRoleConfig"},"provision_role":{"$ref":"#/components/schemas/service.AppAWSIAMRoleConfig"}},"required":["app_config_id","deprovision_role","maintenance_role","provision_role"],"type":"object"},"service.CreateAppPoliciesConfigRequest":{"properties":{"app_config_id":{"type":"string"},"policies":{"items":{"$ref":"#/components/schemas/service.AppPolicyConfig"},"type":"array"}},"required":["app_config_id"],"type":"object"},"service.CreateAppRequest":{"properties":{"description":{"type":"string"},"display_name":{"type":"string"},"name":{"type":"string"},"slack_webhook_url":{"type":"string"}},"required":["name"],"type":"object"},"service.CreateAppRunnerConfigRequest":{"properties":{"app_config_id":{"type":"string"},"env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"helm_driver":{"$ref":"#/components/schemas/app.AppRunnerConfigHelmDriverType"},"init_script_url":{"type":"string"},"type":{"$ref":"#/components/schemas/app.AppRunnerType"}},"required":["type"],"type":"object"},"service.CreateAppSandboxConfigRequest":{"properties":{"app_config_id":{"type":"string"},"connected_github_vcs_config":{"$ref":"#/components/schemas/helpers.ConnectedGithubVCSConfigRequest"},"drift_schedule":{"type":"string"},"env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"operation_roles":{"additionalProperties":{"type":"string"},"type":"object"},"public_git_vcs_config":{"$ref":"#/components/schemas/helpers.PublicGitVCSConfigRequest"},"references":{"items":{"type":"string"},"type":"array"},"terraform_version":{"type":"string"},"variables":{"additionalProperties":{"type":"string"},"type":"object"},"variables_files":{"items":{"type":"string"},"type":"array"}},"required":["env_vars","terraform_version","variables"],"type":"object"},"service.CreateAppSecretRequest":{"properties":{"name":{"type":"string"},"value":{"type":"string"}},"required":["name","value"],"type":"object"},"service.CreateAppSecretsConfigRequest":{"properties":{"app_config_id":{"type":"string"},"secrets":{"items":{"$ref":"#/components/schemas/service.AppSecretConfig"},"type":"array"}},"required":["app_config_id"],"type":"object"},"service.CreateAppStackConfigRequest":{"properties":{"app_config_id":{"type":"string"},"custom_nested_stacks":{"items":{"$ref":"#/components/schemas/config.CustomNestedStack"},"type":"array"},"description":{"type":"string"},"name":{"type":"string"},"runner_nested_template_url":{"type":"string"},"type":{"$ref":"#/components/schemas/app.StackType"},"vpc_nested_template_url":{"type":"string"}},"required":["app_config_id","description","name","type"],"type":"object"},"service.CreateComponentBuildRequest":{"properties":{"git_ref":{"type":"string"},"use_latest":{"type":"boolean"}},"type":"object"},"service.CreateComponentRequest":{"properties":{"dependencies":{"items":{"type":"string"},"type":"array"},"labels":{"additionalProperties":{"type":"string"},"type":"object"},"name":{"type":"string"},"var_name":{"type":"string"}},"required":["name"],"type":"object"},"service.CreateConnectionCallbackRequest":{"properties":{"github_install_id":{"type":"string"},"org_id":{"type":"string"}},"required":["github_install_id","org_id"],"type":"object"},"service.CreateConnectionRequest":{"properties":{"github_install_id":{"type":"string"}},"required":["github_install_id"],"type":"object"},"service.CreateCurrentOrgWebhookRequest":{"properties":{"interests":{"type":"object"},"webhook_secret":{"type":"string"},"webhook_url":{"type":"string"}},"required":["webhook_url"],"type":"object"},"service.CreateDockerBuildComponentConfigRequest":{"properties":{"app_config_id":{"type":"string"},"build_args":{"items":{"type":"string"},"type":"array"},"build_timeout":{"description":"Duration string for build operations (e.g., \"30m\", \"1h\")","type":"string"},"checksum":{"type":"string"},"connected_github_vcs_config":{"$ref":"#/components/schemas/service.ConnectedGithubVCSConfigRequest"},"dependencies":{"items":{"type":"string"},"type":"array"},"deploy_timeout":{"description":"Duration string for deploy operations (e.g., \"30m\", \"1h\")","type":"string"},"dockerfile":{"type":"string"},"env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"max_auto_retries":{"type":"integer"},"operation_roles":{"additionalProperties":{"type":"string"},"type":"object"},"public_git_vcs_config":{"$ref":"#/components/schemas/service.PublicGitVCSConfigRequest"},"references":{"items":{"type":"string"},"type":"array"},"target":{"type":"string"}},"required":["dockerfile"],"type":"object"},"service.CreateExternalImageComponentConfigRequest":{"properties":{"app_config_id":{"type":"string"},"aws_ecr_image_config":{"$ref":"#/components/schemas/service.awsECRImageConfigRequest"},"azure_acr_image_config":{"$ref":"#/components/schemas/service.azureACRImageConfigRequest"},"build_timeout":{"description":"Duration string for build operations (e.g., \"30m\", \"1h\")","type":"string"},"checksum":{"type":"string"},"dependencies":{"items":{"type":"string"},"type":"array"},"deploy_timeout":{"description":"Duration string for deploy operations (e.g., \"30m\", \"1h\")","type":"string"},"gcp_gar_image_config":{"$ref":"#/components/schemas/service.gcpGARImageConfigRequest"},"image_url":{"type":"string"},"max_auto_retries":{"type":"integer"},"operation_roles":{"additionalProperties":{"type":"string"},"type":"object"},"references":{"items":{"type":"string"},"type":"array"},"tag":{"type":"string"}},"required":["image_url","tag"],"type":"object"},"service.CreateHelmComponentConfigRequest":{"properties":{"app_config_id":{"type":"string"},"build_timeout":{"description":"Duration string for build operations (e.g., \"30m\", \"1h\")","type":"string"},"chart_name":{"maxLength":62,"minLength":5,"type":"string"},"checksum":{"type":"string"},"connected_github_vcs_config":{"$ref":"#/components/schemas/service.ConnectedGithubVCSConfigRequest"},"dependencies":{"items":{"type":"string"},"type":"array"},"deploy_timeout":{"description":"Duration string for deploy operations (e.g., \"30m\", \"1h\")","type":"string"},"drift_schedule":{"type":"string"},"helm_repo_config":{"$ref":"#/components/schemas/service.HelmRepoConfigRequest"},"max_auto_retries":{"type":"integer"},"namespace":{"type":"string"},"operation_roles":{"additionalProperties":{"type":"string"},"type":"object"},"public_git_vcs_config":{"$ref":"#/components/schemas/service.PublicGitVCSConfigRequest"},"references":{"items":{"type":"string"},"type":"array"},"storage_driver":{"type":"string"},"take_ownership":{"type":"boolean"},"values":{"additionalProperties":{"type":"string"},"type":"object"},"values_files":{"items":{"type":"string"},"type":"array"}},"required":["chart_name","values"],"type":"object"},"service.CreateInstallActionWorkflowRunRequest":{"properties":{"action_workflow_config_id":{"type":"string"},"role":{"type":"string"},"run_env_vars":{"additionalProperties":{"type":"string"},"type":"object"}},"required":["action_workflow_config_id"],"type":"object"},"service.CreateInstallComponentDeployRequest":{"properties":{"build_id":{"type":"string"},"deploy_dependents":{"type":"boolean"},"plan_only":{"type":"boolean"},"role":{"type":"string"}},"type":"object"},"service.CreateInstallConfigRequest":{"properties":{"approval_option":{"$ref":"#/components/schemas/app.InstallApprovalOption"},"custom_nested_stacks":{"items":{"$ref":"#/components/schemas/config.CustomNestedStack"},"type":"array"},"labels":{"additionalProperties":{"type":"string"},"type":"object"},"runner_nested_template_url":{"type":"string"},"vpc_nested_template_url":{"type":"string"}},"type":"object"},"service.CreateInstallDeployRequest":{"properties":{"build_id":{"type":"string"},"deploy_dependents":{"type":"boolean"},"plan_only":{"type":"boolean"},"role":{"type":"string"}},"type":"object"},"service.CreateInstallInputsRequest":{"properties":{"inputs":{"additionalProperties":{"type":"string"},"type":"object"}},"required":["inputs"],"type":"object"},"service.CreateInstallRequest":{"properties":{"aws_account":{"properties":{"region":{"type":"string"}},"type":"object"},"azure_account":{"properties":{"location":{"type":"string"}},"type":"object"},"gcp_account":{"properties":{"project_id":{"type":"string"},"region":{"type":"string"}},"type":"object"},"inputs":{"additionalProperties":{"type":"string"},"type":"object"},"install_config":{"$ref":"#/components/schemas/helpers.CreateInstallConfigParams"},"metadata":{"$ref":"#/components/schemas/helpers.InstallMetadata"},"name":{"type":"string"}},"required":["name"],"type":"object"},"service.CreateInstallV2Request":{"properties":{"app_id":{"type":"string"},"aws_account":{"properties":{"region":{"type":"string"}},"type":"object"},"azure_account":{"properties":{"location":{"type":"string"}},"type":"object"},"gcp_account":{"properties":{"project_id":{"type":"string"},"region":{"type":"string"}},"type":"object"},"inputs":{"additionalProperties":{"type":"string"},"type":"object"},"install_config":{"$ref":"#/components/schemas/helpers.CreateInstallConfigParams"},"metadata":{"$ref":"#/components/schemas/helpers.InstallMetadata"},"name":{"type":"string"}},"required":["app_id","name"],"type":"object"},"service.CreateJobComponentConfigRequest":{"properties":{"app_config_id":{"type":"string"},"args":{"items":{"type":"string"},"type":"array"},"build_timeout":{"description":"Duration string for build operations (e.g., \"30m\", \"1h\")","type":"string"},"checksum":{"type":"string"},"cmd":{"items":{"type":"string"},"type":"array"},"deploy_timeout":{"description":"Duration string for deploy operations (e.g., \"30m\", \"1h\")","type":"string"},"env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"image_url":{"type":"string"},"max_auto_retries":{"type":"integer"},"operation_roles":{"additionalProperties":{"type":"string"},"type":"object"},"references":{"items":{"type":"string"},"type":"array"},"tag":{"type":"string"}},"required":["image_url","tag"],"type":"object"},"service.CreateKubernetesManifestComponentConfigRequest":{"properties":{"app_config_id":{"type":"string"},"build_timeout":{"description":"Duration string for build operations (e.g., \"30m\", \"1h\")","type":"string"},"checksum":{"type":"string"},"connected_github_vcs_config":{"$ref":"#/components/schemas/service.ConnectedGithubVCSConfigRequest"},"dependencies":{"items":{"type":"string"},"type":"array"},"deploy_timeout":{"description":"Duration string for deploy operations (e.g., \"30m\", \"1h\")","type":"string"},"drift_schedule":{"type":"string"},"kustomize":{"allOf":[{"$ref":"#/components/schemas/service.KustomizeConfigRequest"}],"description":"Kustomize configuration (mutually exclusive with Manifest)"},"manifest":{"description":"Inline manifest (mutually exclusive with Kustomize)","type":"string"},"max_auto_retries":{"type":"integer"},"namespace":{"type":"string"},"operation_roles":{"additionalProperties":{"type":"string"},"type":"object"},"public_git_vcs_config":{"$ref":"#/components/schemas/service.PublicGitVCSConfigRequest"},"references":{"items":{"type":"string"},"type":"array"}},"type":"object"},"service.CreateOrgInviteRequest":{"properties":{"email":{"type":"string"},"role_type":{"$ref":"#/components/schemas/app.RoleType"}},"required":["email"],"type":"object"},"service.CreateOrgRequest":{"properties":{"name":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"use_sandbox_mode":{"type":"boolean"}},"required":["name"],"type":"object"},"service.CreateOrgUserRequest":{"properties":{"user_id":{"type":"string"}},"type":"object"},"service.CreatePulumiComponentConfigRequest":{"properties":{"app_config_id":{"type":"string"},"build_timeout":{"type":"string"},"checksum":{"type":"string"},"config":{"additionalProperties":{"type":"string"},"type":"object"},"connected_github_vcs_config":{"$ref":"#/components/schemas/service.ConnectedGithubVCSConfigRequest"},"dependencies":{"items":{"type":"string"},"type":"array"},"deploy_timeout":{"type":"string"},"drift_schedule":{"type":"string"},"env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"max_auto_retries":{"type":"integer"},"operation_roles":{"additionalProperties":{"type":"string"},"type":"object"},"public_git_vcs_config":{"$ref":"#/components/schemas/service.PublicGitVCSConfigRequest"},"references":{"items":{"type":"string"},"type":"array"},"runtime":{"type":"string"},"version":{"type":"string"}},"required":["config","env_vars","runtime"],"type":"object"},"service.CreateRunnerBootstrapTokenResponse":{"properties":{"expires_at":{"type":"string"},"token":{"type":"string"}},"type":"object"},"service.CreateTerraformModuleComponentConfigRequest":{"properties":{"app_config_id":{"type":"string"},"build_timeout":{"description":"Duration string for build operations (e.g., \"30m\", \"1h\")","type":"string"},"checksum":{"type":"string"},"connected_github_vcs_config":{"$ref":"#/components/schemas/service.ConnectedGithubVCSConfigRequest"},"dependencies":{"items":{"type":"string"},"type":"array"},"deploy_timeout":{"description":"Duration string for deploy operations (e.g., \"30m\", \"1h\")","type":"string"},"drift_schedule":{"type":"string"},"env_vars":{"additionalProperties":{"type":"string"},"type":"object"},"max_auto_retries":{"type":"integer"},"operation_roles":{"additionalProperties":{"type":"string"},"type":"object"},"public_git_vcs_config":{"$ref":"#/components/schemas/service.PublicGitVCSConfigRequest"},"references":{"items":{"type":"string"},"type":"array"},"variables":{"additionalProperties":{"type":"string"},"type":"object"},"variables_files":{"items":{"type":"string"},"type":"array"},"version":{"type":"string"}},"required":["env_vars","variables"],"type":"object"},"service.CreateTerraformWorkspaceRequest":{"properties":{"owner_id":{"type":"string"},"owner_type":{"type":"string"}},"required":["owner_id","owner_type"],"type":"object"},"service.CreateUserJourneyRequest":{"properties":{"name":{"type":"string"},"steps":{"items":{"$ref":"#/components/schemas/service.CreateUserJourneyStepReq"},"type":"array"},"title":{"type":"string"}},"required":["name","steps","title"],"type":"object"},"service.CreateUserJourneyStepReq":{"properties":{"name":{"type":"string"},"title":{"type":"string"}},"required":["name","title"],"type":"object"},"service.CreateWorkflowStepApprovalResponseRequest":{"properties":{"note":{"type":"string"},"response_type":{"$ref":"#/components/schemas/app.WorkflowStepResponseType"}},"type":"object"},"service.CreateWorkflowStepApprovalResponseResponse":{"properties":{"id":{"type":"string"},"note":{"type":"string"},"type":{"type":"string"}},"type":"object"},"service.CurrentOrgWebhookResponse":{"properties":{"created_at":{"type":"string"},"created_by_id":{"type":"string"},"has_secret":{"type":"boolean"},"id":{"type":"string"},"interests":{"type":"object"},"org_id":{"type":"string"},"updated_at":{"type":"string"},"webhook_url":{"type":"string"}},"type":"object"},"service.DeployInstallComponentsRequest":{"properties":{"plan_only":{"type":"boolean"},"role":{"type":"string"}},"type":"object"},"service.DeprovisionInstallRequest":{"properties":{"plan_only":{"type":"boolean"}},"type":"object"},"service.DeprovisionInstallSandboxRequest":{"properties":{"plan_only":{"type":"boolean"},"role":{"type":"string"}},"type":"object"},"service.ExampleApp":{"properties":{"category":{"type":"string"},"cloud_provider":{"type":"string"},"description":{"type":"string"},"difficulty":{"type":"string"},"directory":{"type":"string"},"display_name":{"type":"string"},"slug":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"}},"type":"object"},"service.ForceShutdownRequest":{"type":"object"},"service.ForgetInstallComponentRequest":{"type":"object"},"service.ForgetInstallRequest":{"type":"object"},"service.GracefulShutdownRequest":{"type":"object"},"service.HelmRepoConfigRequest":{"properties":{"chart":{"type":"string"},"repo_url":{"type":"string"},"version":{"type":"string"}},"required":["chart","repo_url"],"type":"object"},"service.InstallAppPermissionsConfigResponse":{"properties":{"break_glass_roles":{"items":{"$ref":"#/components/schemas/service.InstallPermissionsRoleStatus"},"type":"array"},"custom_roles":{"items":{"$ref":"#/components/schemas/service.InstallPermissionsRoleStatus"},"type":"array"},"deprovision_role":{"$ref":"#/components/schemas/service.InstallPermissionsRoleStatus"},"maintenance_role":{"$ref":"#/components/schemas/service.InstallPermissionsRoleStatus"},"provision_role":{"$ref":"#/components/schemas/service.InstallPermissionsRoleStatus"}},"type":"object"},"service.InstallGroupRequest":{"properties":{"install_ids":{"items":{"type":"string"},"type":"array"},"max_parallel":{"minimum":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"order":{"minimum":0,"type":"integer"},"requires_approval":{"type":"boolean"},"rollback_on_failure":{"type":"boolean"}},"required":["name"],"type":"object"},"service.InstallPermissionsRoleStatus":{"properties":{"app_config_id":{"type":"string"},"arn":{"type":"string"},"cloud_platform":{"type":"string"},"cloudformation_param_name":{"type":"string"},"cloudformation_stack_name":{"type":"string"},"created_at":{"type":"string"},"created_by_id":{"type":"string"},"description":{"type":"string"},"display_name":{"type":"string"},"enabled":{"type":"boolean"},"enabled_in_stack":{"$ref":"#/components/schemas/sql.NullBool"},"id":{"type":"string"},"name":{"type":"string"},"org_id":{"type":"string"},"owner_id":{"type":"string"},"owner_type":{"type":"string"},"permissions_boundary":{"type":"string"},"policies":{"items":{"$ref":"#/components/schemas/app.AppAWSIAMPolicyConfig"},"type":"array"},"type":{"$ref":"#/components/schemas/app.AWSIAMRoleType"},"updated_at":{"type":"string"}},"type":"object"},"service.InstallPhoneHomeRequest":{"additionalProperties":{},"type":"object"},"service.KustomizeConfigRequest":{"properties":{"enable_helm":{"type":"boolean"},"load_restrictor":{"type":"string"},"patches":{"items":{"type":"string"},"type":"array"},"path":{"type":"string"}},"type":"object"},"service.LatestRunnerHeartBeats":{"additionalProperties":{"$ref":"#/components/schemas/app.LatestRunnerHeartBeat"},"type":"object"},"service.LogStreamSpan":{"properties":{"attributes":{"additionalProperties":{"type":"string"},"type":"object"},"duration_ns":{"description":"DurationNs is the wall-clock span duration in nanoseconds, copied\nstraight from the otel_traces.duration column.","type":"integer"},"end_timestamp":{"type":"string"},"parent_span_id":{"type":"string"},"runner_job_execution_id":{"type":"string"},"runner_job_execution_step":{"type":"string"},"runner_job_id":{"description":"Per-execution identifiers extracted server-side at ingest time.\nEmpty if the span was emitted outside a job context.","type":"string"},"scope_name":{"type":"string"},"service_name":{"type":"string"},"span_id":{"type":"string"},"span_kind":{"type":"string"},"span_name":{"type":"string"},"start_timestamp":{"type":"string"},"status_code":{"type":"string"},"status_message":{"type":"string"},"trace_id":{"type":"string"}},"type":"object"},"service.MngFetchTokenRequest":{"type":"object"},"service.MngRestartRequest":{"type":"object"},"service.MngShutDownRequest":{"type":"object"},"service.MngUpdateRequest":{"type":"object"},"service.MngVMShutDownRequest":{"type":"object"},"service.OperationRoleRuleRequest":{"properties":{"operation":{"$ref":"#/components/schemas/app.OperationType"},"principal":{"type":"string"},"role":{"type":"string"}},"required":["operation","principal","role"],"type":"object"},"service.PatchInstallConfigParams":{"properties":{"approval_option":{"$ref":"#/components/schemas/app.InstallApprovalOption"}},"type":"object"},"service.PolicyAnalyticsBreakdown":{"properties":{"dimension":{"type":"string"},"end":{"type":"string"},"entries":{"items":{"$ref":"#/components/schemas/service.BreakdownEntry"},"type":"array"},"start":{"type":"string"}},"type":"object"},"service.PolicyAnalyticsSummary":{"properties":{"end":{"type":"string"},"start":{"type":"string"},"total_denies":{"type":"integer"},"total_evaluations":{"type":"integer"},"total_passes":{"type":"integer"},"total_warns":{"type":"integer"},"unique_policies":{"type":"integer"},"unique_reports":{"type":"integer"}},"type":"object"},"service.PolicyAnalyticsTimeseries":{"properties":{"buckets":{"items":{"$ref":"#/components/schemas/service.TimeseriesBucket"},"type":"array"},"end":{"type":"string"},"group_by":{"items":{"type":"string"},"type":"array"},"interval":{"type":"string"},"start":{"type":"string"}},"type":"object"},"service.PruneTokensResponse":{"properties":{"invalidated_count":{"type":"integer"}},"type":"object"},"service.PublicGitVCSActionWorkflowConfigRequest":{"properties":{"branch":{"type":"string"},"directory":{"type":"string"},"repo":{"type":"string"}},"required":["branch","directory","repo"],"type":"object"},"service.PublicGitVCSConfigRequest":{"properties":{"branch":{"type":"string"},"directory":{"type":"string"},"repo":{"type":"string"}},"required":["branch","directory","repo"],"type":"object"},"service.Readme":{"properties":{"original":{"type":"string"},"readme":{"type":"string"},"warnings":{"items":{"type":"string"},"type":"array"}},"type":"object"},"service.RemoveActionLabelsRequest":{"properties":{"keys":{"items":{"type":"string"},"type":"array"}},"required":["keys"],"type":"object"},"service.RemoveComponentLabelsRequest":{"properties":{"keys":{"items":{"type":"string"},"type":"array"}},"required":["keys"],"type":"object"},"service.RemoveInstallLabelsRequest":{"properties":{"keys":{"items":{"type":"string"},"type":"array"}},"required":["keys"],"type":"object"},"service.RemoveOrgUserRequest":{"properties":{"user_id":{"type":"string"}},"type":"object"},"service.ReprovisionInstallRequest":{"properties":{"plan_only":{"type":"boolean"},"role":{"type":"string"}},"type":"object"},"service.ReprovisionInstallSandboxRequest":{"properties":{"plan_only":{"type":"boolean"},"role":{"type":"string"},"skip_components":{"type":"boolean"}},"type":"object"},"service.RetryWorkflowRequest":{"properties":{"operation":{"description":"Retry indicates whether to retry the current step or not","type":"string"},"step_id":{"description":"StepID is the ID of the step to start the retry from","type":"string"},"workflow_id":{"type":"string"}},"type":"object"},"service.RetryWorkflowResponse":{"properties":{"workflow_id":{"type":"string"}},"type":"object"},"service.RetryWorkflowStepResponse":{"properties":{"retryable":{"type":"boolean"},"workflow_id":{"type":"string"}},"type":"object"},"service.RunnerCardDetailsResponse":{"properties":{"latest_heart_beat":{"$ref":"#/components/schemas/app.RunnerHeartBeat"},"runner":{"$ref":"#/components/schemas/app.Runner"}},"type":"object"},"service.RunnerConnectionStatus":{"properties":{"connected":{"type":"boolean"},"latest_heartbeat_timestamp":{"type":"integer"}},"type":"object"},"service.SeriesPoint":{"properties":{"denies":{"type":"integer"},"evaluations":{"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"type":"object"},"passes":{"type":"integer"},"warns":{"type":"integer"}},"type":"object"},"service.ShutdownRunnerProcessRequest":{"properties":{"shutdown_type":{"type":"string"}},"required":["shutdown_type"],"type":"object"},"service.SkipWorkflowStepResponse":{"properties":{"skippable":{"type":"boolean"},"workflow_id":{"type":"string"}},"type":"object"},"service.SyncSecretsRequest":{"properties":{"plan_only":{"type":"boolean"}},"type":"object"},"service.TeardownInstallComponentRequest":{"properties":{"plan_only":{"type":"boolean"},"role":{"type":"string"}},"type":"object"},"service.TeardownInstallComponentsRequest":{"properties":{"plan_only":{"type":"boolean"},"role":{"type":"string"}},"type":"object"},"service.TimeseriesBucket":{"properties":{"denies":{"type":"integer"},"evaluations":{"type":"integer"},"passes":{"type":"integer"},"series":{"items":{"$ref":"#/components/schemas/service.SeriesPoint"},"type":"array"},"time":{"type":"string"},"warns":{"type":"integer"}},"type":"object"},"service.TriggerAppBranchRunRequest":{"properties":{"config_id":{"description":"optional - use latest if not provided","type":"string"},"force":{"description":"force run even if no changes detected","type":"boolean"}},"type":"object"},"service.UpdateActionWorkflowRequest":{"properties":{"labels":{"additionalProperties":{"type":"string"},"type":"object"},"name":{"type":"string"}},"type":"object"},"service.UpdateAppBranchRequest":{"properties":{"name":{"minLength":1,"type":"string"}},"required":["name"],"type":"object"},"service.UpdateAppConfigInstallsRequest":{"properties":{"installIDs":{"items":{"type":"string"},"type":"array"},"updateAll":{"type":"boolean"}},"type":"object"},"service.UpdateAppConfigRequest":{"properties":{"component_ids":{"items":{"type":"string"},"type":"array"},"state":{"type":"string"},"status":{"$ref":"#/components/schemas/app.AppConfigStatus"},"status_description":{"type":"string"}},"type":"object"},"service.UpdateAppRequest":{"properties":{"config_directory":{"type":"string"},"config_repo":{"type":"string"},"description":{"type":"string"},"display_name":{"type":"string"},"name":{"type":"string"},"slack_webhook_url":{"type":"string"}},"type":"object"},"service.UpdateComponentRequest":{"properties":{"dependencies":{"items":{"type":"string"},"type":"array"},"labels":{"additionalProperties":{"type":"string"},"type":"object"},"name":{"type":"string"},"var_name":{"type":"string"}},"required":["name"],"type":"object"},"service.UpdateCurrentOrgWebhookRequest":{"properties":{"interests":{"type":"object"},"webhook_secret":{"type":"string"}},"type":"object"},"service.UpdateInstallConfigRequest":{"properties":{"approval_option":{"$ref":"#/components/schemas/app.InstallApprovalOption"},"custom_nested_stacks":{"items":{"$ref":"#/components/schemas/config.CustomNestedStack"},"type":"array"},"labels":{"additionalProperties":{"type":"string"},"type":"object"},"runner_nested_template_url":{"type":"string"},"vpc_nested_template_url":{"type":"string"}},"type":"object"},"service.UpdateInstallInputsRequest":{"properties":{"deploy_dependents":{"type":"boolean"},"inputs":{"additionalProperties":{"type":"string"},"type":"object"},"role":{"type":"string"}},"required":["inputs"],"type":"object"},"service.UpdateInstallRequest":{"properties":{"install_config":{"$ref":"#/components/schemas/service.PatchInstallConfigParams"},"metadata":{"$ref":"#/components/schemas/helpers.InstallMetadata"},"name":{"type":"string"}},"type":"object"},"service.UpdateInstallRoleRequest":{"properties":{"enabled":{"type":"boolean"}},"required":["enabled"],"type":"object"},"service.UpdateOrgFeaturesRequest":{"properties":{"features":{"additionalProperties":{"type":"boolean"},"type":"object"}},"required":["features"],"type":"object"},"service.UpdateOrgRequest":{"properties":{"name":{"type":"string"}},"required":["name"],"type":"object"},"service.UpdateRunnerSettingsRequest":{"properties":{"aws_auth_method":{"enum":["iid","sts"],"type":"string"},"aws_max_instance_lifetime":{"description":"Deprecated: no longer used. Instance refresh is handled by a backend cron.","maximum":31536000,"minimum":86400,"type":"integer"},"binary_version":{"type":"string"},"container_image_tag":{"type":"string"},"container_image_url":{"type":"string"},"container_max_uptime":{"type":"integer"},"job_group_parallelism":{"additionalProperties":{"type":"integer"},"description":"JobGroupParallelism maps job group names to max-in-flight values for parallel job execution.\ne.g., {\"build\": 2, \"deploy\": 1}. Only effective when parallel-runner-jobs feature flag is enabled.","type":"object"},"org_awsiam_role_arn":{"type":"string"},"org_k8s_service_account_name":{"type":"string"},"runner_api_url":{"type":"string"},"vm_max_uptime":{"type":"integer"}},"type":"object"},"service.UpdateUserJourneyStepRequest":{"properties":{"complete":{"type":"boolean"},"metadata":{"additionalProperties":true,"type":"object"}},"type":"object"},"service.UpdateWorkflowRequest":{"properties":{"approval_option":{"$ref":"#/components/schemas/app.InstallApprovalOption"}},"required":["approval_option"],"type":"object"},"service.VCSConnectionAccount":{"properties":{"id":{"type":"integer"},"login":{"type":"string"},"type":{"type":"string"}},"type":"object"},"service.VCSConnectionRepo":{"properties":{"default_branch":{"type":"string"},"description":{"type":"string"},"fork":{"type":"boolean"},"full_name":{"type":"string"},"html_url":{"type":"string"},"id":{"type":"integer"},"name":{"type":"string"},"private":{"type":"boolean"},"updated_at":{"type":"string"}},"type":"object"},"service.VCSConnectionReposResponse":{"properties":{"repositories":{"items":{"$ref":"#/components/schemas/service.VCSConnectionRepo"},"type":"array"},"total_count":{"type":"integer"}},"type":"object"},"service.VCSConnectionStatusResponse":{"properties":{"account":{"$ref":"#/components/schemas/service.VCSConnectionAccount"},"checked_at":{"type":"string"},"error":{"type":"string"},"github_install_id":{"type":"string"},"permissions":{"additionalProperties":{"type":"string"},"type":"object"},"repository_selection":{"type":"string"},"status":{"type":"string"},"suspended_at":{"type":"string"},"suspended_by":{"$ref":"#/components/schemas/github.User"}},"type":"object"},"service.WaitlistRequest":{"properties":{"org_name":{"type":"string"}},"required":["org_name"],"type":"object"},"service.awsECRImageConfigRequest":{"properties":{"aws_region":{"type":"string"},"iam_role_arn":{"type":"string"}},"type":"object"},"service.azureACRImageConfigRequest":{"properties":{"client_id":{"type":"string"},"registry_url":{"type":"string"},"tenant_id":{"type":"string"}},"type":"object"},"service.gcpGARImageConfigRequest":{"properties":{"gcp_project_id":{"type":"string"},"gcp_region":{"type":"string"},"image_url":{"type":"string"},"service_account_email":{"type":"string"},"tag":{"type":"string"},"workload_identity_provider":{"type":"string"}},"type":"object"},"signaldb.SignalData":{"properties":{"signal":{}},"type":"object"},"signaldb.WorkflowRef":{"properties":{"id":{"type":"string"},"namespace":{"type":"string"},"run_id":{"type":"string"}},"type":"object"},"sql.NullBool":{"properties":{"bool":{"type":"boolean"},"valid":{"description":"Valid is true if Bool is not NULL","type":"boolean"}},"type":"object"},"state.AWSCloudAccount":{"properties":{"region":{"type":"string"}},"type":"object"},"state.ActionWorkflowState":{"properties":{"id":{"type":"string"},"outputs":{"additionalProperties":{},"type":"object"},"populated":{"type":"boolean"},"status":{"type":"string"}},"type":"object"},"state.ActionsState":{"properties":{"populated":{"type":"boolean"},"workflows":{"additionalProperties":{"$ref":"#/components/schemas/state.ActionWorkflowState"},"type":"object"}},"type":"object"},"state.AppState":{"properties":{"id":{"type":"string"},"name":{"type":"string"},"populated":{"type":"boolean"},"status":{"type":"string"},"variables":{"additionalProperties":{"type":"string"},"type":"object"}},"type":"object"},"state.AzureCloudAccount":{"properties":{"location":{"type":"string"}},"type":"object"},"state.CloudAccount":{"properties":{"aws":{"$ref":"#/components/schemas/state.AWSCloudAccount"},"azure":{"$ref":"#/components/schemas/state.AzureCloudAccount"},"gcp":{"$ref":"#/components/schemas/state.GCPCloudAccount"}},"type":"object"},"state.DomainState":{"properties":{"internal_domain":{"type":"string"},"populated":{"type":"boolean"},"public_domain":{"type":"string"}},"type":"object"},"state.GCPCloudAccount":{"properties":{"project_id":{"type":"string"},"region":{"type":"string"}},"type":"object"},"state.InputsState":{"properties":{"inputs":{"additionalProperties":{"type":"string"},"type":"object"},"populated":{"type":"boolean"}},"type":"object"},"state.InstallStackState":{"properties":{"checksum":{"type":"string"},"outputs":{"additionalProperties":true,"type":"object"},"populated":{"type":"boolean"},"quick_link_url":{"type":"string"},"status":{"type":"string"},"template_json":{"type":"string"},"template_url":{"type":"string"}},"type":"object"},"state.InstallState":{"properties":{"id":{"type":"string"},"inputs":{"additionalProperties":{"type":"string"},"type":"object"},"internal_domain":{"type":"string"},"name":{"type":"string"},"populated":{"type":"boolean"},"public_domain":{"type":"string"},"sandbox":{"$ref":"#/components/schemas/state.SandboxState"}},"type":"object"},"state.OrgState":{"properties":{"id":{"type":"string"},"name":{"type":"string"},"populated":{"type":"boolean"},"status":{"type":"string"}},"type":"object"},"state.RunnerState":{"properties":{"id":{"type":"string"},"populated":{"type":"boolean"},"runner_group_id":{"type":"string"},"status":{"type":"string"}},"type":"object"},"state.SandboxState":{"properties":{"outputs":{"additionalProperties":true,"type":"object"},"populated":{"type":"boolean"},"recent_runs":{"items":{"$ref":"#/components/schemas/state.SandboxState"},"type":"array"},"status":{"type":"string"},"type":{"type":"string"},"version":{"type":"string"}},"type":"object"},"state.SecretsState":{"additionalProperties":{"$ref":"#/components/schemas/outputs.SecretSyncOutput"},"type":"object"},"stderr.ErrResponse":{"properties":{"description":{"type":"string"},"error":{"type":"string"},"user_error":{"type":"boolean"}},"type":"object"},"types.StringBoolMap":{"additionalProperties":{"type":"boolean"},"type":"object"}},"securitySchemes":{"APIKey":{"description":"Type \"Bearer\" followed by a space and token.","in":"header","name":"Authorization","type":"apiKey"},"OrgID":{"description":"Nuon org ID","in":"header","name":"X-Nuon-Org-ID","type":"apiKey"}}},"info":{"contact":{"email":"support@nuon.co","name":"Nuon Support"},"description":"API for managing nuon apps, components, installs, and actions.","title":"Nuon","version":"0.19.922"},"openapi":"3.0.3","paths":{"/v1/account":{"get":{"description":"Get the current account with user journeys and other data","operationId":"GetCurrentAccount","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Account"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]}],"summary":"Get current account","tags":["accounts"]}},"/v1/account/user-journeys":{"get":{"description":"Get all user journeys for the current user account","operationId":"GetUserJourneys","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.UserJourney"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Get user journeys","tags":["accounts"]},"post":{"description":"Add a new user journey with steps to track user progress","operationId":"CreateUserJourney","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateUserJourneyRequest"}}},"description":"Create journey request","required":true,"x-originalParamName":"body"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Account"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Conflict"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]}],"summary":"Create a new user journey for account","tags":["accounts"]}},"/v1/account/user-journeys/{journey_name}/complete":{"post":{"description":"Mark all remaining steps in the specified user journey as complete","operationId":"CompleteUserJourney","parameters":[{"description":"Journey name to complete","in":"path","name":"journey_name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Account"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]}],"summary":"Complete all steps in a specific user journey","tags":["accounts"]}},"/v1/account/user-journeys/{journey_name}/reset":{"post":{"description":"Reset all steps in a specified user journey by setting their completion status to false","operationId":"ResetUserJourney","parameters":[{"description":"Journey name","in":"path","name":"journey_name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Account"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Reset user journey steps","tags":["accounts"]}},"/v1/account/user-journeys/{journey_name}/steps/{step_name}":{"patch":{"description":"Mark a user journey step as complete or incomplete","operationId":"UpdateUserJourneyStep","parameters":[{"description":"Journey name","in":"path","name":"journey_name","required":true,"schema":{"type":"string"}},{"description":"Step name","in":"path","name":"step_name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.UpdateUserJourneyStepRequest"}}},"description":"Update step request","required":true,"x-originalParamName":"body"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Account"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]}],"summary":"Update user journey step completion status","tags":["accounts"]}},"/v1/action-workflows/configs/{action_workflow_config_id}":{"get":{"deprecated":true,"description":"Return an action workflow configuration by id.\n","operationId":"GetActionWorkflowConfig","parameters":[{"description":"action workflow config ID","in":"path","name":"action_workflow_config_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ActionWorkflowConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an app action workflow config","tags":["actions","actions/runner"]}},"/v1/action-workflows/{action_workflow_id}":{"delete":{"deprecated":true,"description":"Delete an action workflow.\n","operationId":"DeleteActionWorkflow","parameters":[{"description":"action workflow ID","in":"path","name":"action_workflow_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.EmptyResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"delete an action workflow","tags":["actions"]},"get":{"deprecated":true,"description":"Return an app action workflow by id.\n","operationId":"GetActionWorkflow","parameters":[{"description":"action workflow ID or name","in":"path","name":"action_workflow_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ActionWorkflow"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an app action workflow by action workflow id","tags":["actions"]},"patch":{"deprecated":true,"description":"Update an app action workflow configuration.\n","operationId":"UpdateAppActionWorkflow","parameters":[{"description":"action workflow ID","in":"path","name":"action_workflow_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.UpdateActionWorkflowRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ActionWorkflow"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"patch an app","tags":["actions"]}},"/v1/action-workflows/{action_workflow_id}/configs":{"get":{"deprecated":true,"description":"Returns all action workflow configurations.\n","operationId":"GetActionWorkflowConfigs","parameters":[{"description":"action workflow ID","in":"path","name":"action_workflow_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.ActionWorkflowConfig"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get action workflow for an app","tags":["actions"]},"post":{"deprecated":true,"description":"Create an action workflow configuration.\n","operationId":"CreateActionWorkflowConfig","parameters":[{"description":"action workflow ID","in":"path","name":"action_workflow_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateActionWorkflowConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ActionWorkflowConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create action workflow config","tags":["actions"]}},"/v1/action-workflows/{action_workflow_id}/latest-config":{"get":{"deprecated":true,"description":"Return the latest config for an action workflow.\n","operationId":"GetActionWorkflowLatestConfig","parameters":[{"description":"action workflow ID","in":"path","name":"action_workflow_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ActionWorkflowConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an app action workflow's latest config","tags":["actions"]}},"/v1/apps":{"get":{"description":"Returns all apps for the authenticated user.\n","operationId":"GetApps","parameters":[{"description":"offset of jobs to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"search query to filter apps by name","in":"query","name":"q","schema":{"type":"string"}},{"description":"limit of jobs to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.App"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get all apps for the current org","tags":["apps"]},"post":{"description":"Create a new app.\n","operationId":"CreateApp","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateAppRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.App"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create an app","tags":["apps"]}},"/v1/apps/{app_id}":{"delete":{"description":"Delete an app.\n","operationId":"DeleteApp","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.EmptyResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"delete an app","tags":["apps"]},"get":{"description":"Return an app.\n","operationId":"GetApp","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.App"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an app","tags":["apps"]},"patch":{"description":"Update an app's configuration.\n","operationId":"UpdateApp","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.UpdateAppRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.App"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"update an app","tags":["apps"]}},"/v1/apps/{app_id}/action-workflows":{"get":{"deprecated":true,"description":"Returns all action workflows for the provided app.\n","operationId":"GetActionWorkflows","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"search query to filter action workflows by name","in":"query","name":"q","schema":{"type":"string"}},{"description":"label filter (key:value,key:value)","in":"query","name":"labels","schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.ActionWorkflow"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get action workflows for an app","tags":["actions"]},"post":{"deprecated":true,"description":"Create an action workflow for an app.\n","operationId":"CreateAppActionWorkflow","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateAppActionWorkflowRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ActionWorkflow"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create an app action workflow","tags":["actions"]}},"/v1/apps/{app_id}/action-workflows/{action_workflow_id}":{"get":{"deprecated":true,"description":"Return an app action workflow by id.\n","operationId":"GetAppActionWorkflow","parameters":[{"description":"app ID or name","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"action workflow ID or name","in":"path","name":"action_workflow_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ActionWorkflow"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an app action workflow","tags":["actions"]}},"/v1/apps/{app_id}/actions":{"get":{"description":"Returns all action workflows for the provided app.\n","operationId":"GetAppActions","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"search query to filter action workflows by name","in":"query","name":"q","schema":{"type":"string"}},{"description":"label filter (key:value,key:value)","in":"query","name":"labels","schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.ActionWorkflow"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get action workflows for an app","tags":["actions"]},"post":{"deprecated":true,"description":"Create an action workflow for an app.\n","operationId":"CreateAppAction","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateAppActionRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ActionWorkflow"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create an app action","tags":["actions"]}},"/v1/apps/{app_id}/actions/configs/{action_config_id}":{"get":{"description":"Return an action workflow configuration by id.\n","operationId":"GetAppActionConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"action config ID","in":"path","name":"action_config_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ActionWorkflowConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an app action config","tags":["actions"]}},"/v1/apps/{app_id}/actions/label-keys":{"get":{"description":"Returns all distinct label key:value pairs for actions in the given app.","operationId":"GetActionLabelKeys","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"}}},"description":"OK"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get distinct label key:value pairs across all actions for an app","tags":["actions"]}},"/v1/apps/{app_id}/actions/{action_id}":{"delete":{"description":"Delete an action workflow.\n","operationId":"DeleteAction","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"action ID","in":"path","name":"action_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.EmptyResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"delete an action","tags":["actions"]},"get":{"description":"Return an app action workflow by id.\n","operationId":"GetAppAction","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"action ID or name","in":"path","name":"action_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ActionWorkflow"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an app action workflow by action workflow id","tags":["actions"]},"patch":{"deprecated":true,"description":"Update an app action workflow configuration.\n","operationId":"UpdateAppAction","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"action ID","in":"path","name":"action_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.UpdateActionWorkflowRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ActionWorkflow"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"patch an app action","tags":["actions"]}},"/v1/apps/{app_id}/actions/{action_id}/configs":{"get":{"description":"Returns all action workflow configurations.\n","operationId":"GetAppActionConfigs","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"action workflow ID","in":"path","name":"action_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.ActionWorkflowConfig"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get action workflow for an app","tags":["actions"]},"post":{"description":"Create an action workflow configuration.\n","operationId":"CreateActionConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"action ID","in":"path","name":"action_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateActionWorkflowConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ActionWorkflowConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create action config","tags":["actions"]}},"/v1/apps/{app_id}/actions/{action_id}/labels":{"delete":{"description":"Remove the specified label keys from the action.","operationId":"RemoveAppActionLabels","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"action ID","in":"path","name":"action_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.RemoveActionLabelsRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ActionWorkflow"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"remove labels from an action","tags":["actions"]},"post":{"description":"Merge the provided labels into the action's existing labels. Existing keys are overwritten.","operationId":"AddAppActionLabels","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"action ID","in":"path","name":"action_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.AddActionLabelsRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ActionWorkflow"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"add labels to an action","tags":["actions"]}},"/v1/apps/{app_id}/actions/{action_id}/latest-config":{"get":{"description":"Return the latest config for an action workflow.\n","operationId":"GetActionLatestConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"action workflow ID","in":"path","name":"action_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ActionWorkflowConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an app action workflow's latest config","tags":["actions"]}},"/v1/apps/{app_id}/branches":{"get":{"description":"Returns all branches for the provided app.\n","operationId":"GetAppBranches","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"offset of branches to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of branches to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.AppBranch"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get app branches","tags":["apps"]},"post":{"description":"Cancel a runner job.\n","operationId":"CreateAppBranch","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateAppBranchRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppBranch"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"tags":["apps"]}},"/v1/apps/{app_id}/branches/{app_branch_id}":{"get":{"description":"Get an app branch by ID. Use `latest_config=true` query parameter to include only the most recent config with its VCS settings and install groups.\n","operationId":"GetAppBranch","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app branch ID","in":"path","name":"app_branch_id","required":true,"schema":{"type":"string"}},{"description":"include only the latest config","in":"query","name":"latest_config","schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppBranch"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an app branch","tags":["apps"]},"patch":{"description":"Updates app branch metadata (name only). To update configuration, create a new AppBranchConfig via POST /branches/:id/configs","operationId":"UpdateAppBranch","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app branch ID","in":"path","name":"app_branch_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.UpdateAppBranchRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppBranch"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"update app branch metadata","tags":["apps"]}},"/v1/apps/{app_id}/branches/{app_branch_id}/configs":{"get":{"description":"Returns all branch configurations for the provided app.\n","operationId":"GetAppBranchAppConfigs","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app branch ID","in":"path","name":"app_branch_id","required":true,"schema":{"type":"string"}},{"description":"offset of branches to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of branches to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.AppConfig"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get app branch app configs","tags":["apps"]},"post":{"description":"Create a branch configuration for an app.\n","operationId":"CreateAppBranchConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app branch ID","in":"path","name":"app_branch_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateAppBranchConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppBranchConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create an app branch config","tags":["apps"]}},"/v1/apps/{app_id}/branches/{app_branch_id}/latest-config":{"get":{"description":"Returns the latest AppBranchConfig ordered by config_number (descending)","operationId":"GetAppBranchLatestConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app branch ID","in":"path","name":"app_branch_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppBranchConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get latest app branch config","tags":["apps"]}},"/v1/apps/{app_id}/branches/{app_branch_id}/runs":{"get":{"description":"Returns workflow runs for an app branch ordered by creation time (descending)","operationId":"GetAppBranchRuns","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app branch ID","in":"path","name":"app_branch_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.Workflow"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get app branch workflow runs","tags":["apps"]},"post":{"description":"Creates and triggers a workflow run for an app branch. If config_id is not provided, uses the latest config.","operationId":"TriggerAppBranchRun","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app branch ID","in":"path","name":"app_branch_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.TriggerAppBranchRunRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppBranchRun"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"trigger app branch workflow run","tags":["apps"]}},"/v1/apps/{app_id}/break-glass-configs":{"post":{"description":"Create a break glass config for an app.\n","operationId":"CreateAppBreakGlassConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateAppBreakGlassConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppBreakGlassConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"tags":["apps"]}},"/v1/apps/{app_id}/break-glass-configs/{config_id}":{"get":{"description":"Return an app break glass config by id.\n","operationId":"GetAppBreakGlassConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app break glass config ID","in":"path","name":"config_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppBreakGlassConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get app break_glass config","tags":["apps"]}},"/v1/apps/{app_id}/component/{component_name_or_id}":{"get":{"description":"Return an app component by id or name.\n","operationId":"GetAppComponent","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"name or ID","in":"path","name":"component_name_or_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Component"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get a components for a specific app","tags":["components"]}},"/v1/apps/{app_id}/components":{"get":{"description":"Returns all components for the provided app.\n","operationId":"GetAppComponents","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"search query to filter components by name","in":"query","name":"q","schema":{"type":"string"}},{"description":"comma-separated list of component types to filter by (e.g., terraform_module, helm_chart)","in":"query","name":"types","schema":{"type":"string"}},{"description":"comma-separated list of component IDs to filter by","in":"query","name":"component_ids","schema":{"type":"string"}},{"description":"label filter (key:value,key:value)","in":"query","name":"labels","schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.Component"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get all components for an app","tags":["components"]},"post":{"description":"Create a new component for an app.\n","operationId":"CreateComponent","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateComponentRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Component"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create a component","tags":["components"]}},"/v1/apps/{app_id}/components/build-all":{"post":{"description":"Build all components for an app.\n","operationId":"BuildAllComponents","parameters":[{"description":"component ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.BuildAllComponentsRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.ComponentBuild"},"type":"array"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create component build","tags":["components"]}},"/v1/apps/{app_id}/components/label-keys":{"get":{"description":"Returns all distinct label key:value pairs for components in the given app.","operationId":"GetComponentLabelKeys","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"}}},"description":"OK"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get distinct label key:value pairs across all components for an app","tags":["components"]}},"/v1/apps/{app_id}/components/{component_id}":{"delete":{"description":"Delete a component.\n","operationId":"DeleteAppComponent","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.EmptyResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"delete a component","tags":["components"]},"patch":{"description":"Update a component's configuration.\n","operationId":"UpdateAppComponent","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.UpdateComponentRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Component"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"update a component","tags":["components"]}},"/v1/apps/{app_id}/components/{component_id}/builds":{"get":{"description":"Returns all builds for the provided component.\n","operationId":"GetAppComponentBuilds","parameters":[{"description":"app id to filter by","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"component id to filter by","in":"path","name":"component_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.ComponentBuild"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get builds for components","tags":["components"]},"post":{"description":"Create a build for a component.\n","operationId":"CreateAppComponentBuild","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateComponentBuildRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ComponentBuild"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create component build","tags":["components"]}},"/v1/apps/{app_id}/components/{component_id}/builds/latest":{"get":{"description":"Returns the most recent build for the provided component.\n","operationId":"GetAppComponentLatestBuild","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ComponentBuild"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get latest build for a component","tags":["components"]}},"/v1/apps/{app_id}/components/{component_id}/builds/{build_id}":{"get":{"description":"Returns builds for one or all components in an app.\n","operationId":"GetAppComponentBuild","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}},{"description":"build ID","in":"path","name":"build_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ComponentBuild"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get a build for a component","tags":["components"]}},"/v1/apps/{app_id}/components/{component_id}/configs":{"get":{"description":"Returns all configurations for the provided component.\n","operationId":"GetAppComponentConfigs","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.ComponentConfigConnection"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get all configs for a component","tags":["components"]}},"/v1/apps/{app_id}/components/{component_id}/configs/docker-build":{"post":{"description":"Create a Docker build component config.\n","operationId":"CreateAppDockerBuildComponentConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateDockerBuildComponentConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.DockerBuildComponentConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create a docker build component config","tags":["components"]}},"/v1/apps/{app_id}/components/{component_id}/configs/external-image":{"post":{"description":"Create an external image component config.\n","operationId":"CreateAppExternalImageComponentConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateExternalImageComponentConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ExternalImageComponentConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create an external image component config","tags":["components"]}},"/v1/apps/{app_id}/components/{component_id}/configs/helm":{"post":{"description":"Create a helm component config.\n","operationId":"CreateAppHelmComponentConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateHelmComponentConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.HelmComponentConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create a helm component config","tags":["components"]}},"/v1/apps/{app_id}/components/{component_id}/configs/job":{"post":{"description":"Create a job component config.\n","operationId":"CreateAppJobComponentConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateJobComponentConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.JobComponentConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create a job component config","tags":["components"]}},"/v1/apps/{app_id}/components/{component_id}/configs/kubernetes-manifest":{"post":{"description":"Create a Kubernetes manifest component config.\n","operationId":"CreateAppKubernetesManifestComponentConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateKubernetesManifestComponentConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.KubernetesManifestComponentConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create a kubernetes manifest component config","tags":["components"]}},"/v1/apps/{app_id}/components/{component_id}/configs/latest":{"get":{"description":"Returns the most recent config for the provided component.\n","operationId":"GetAppComponentLatestConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ComponentConfigConnection"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get latest config for a component","tags":["components"]}},"/v1/apps/{app_id}/components/{component_id}/configs/pulumi":{"post":{"operationId":"CreateAppPulumiComponentConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreatePulumiComponentConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.PulumiComponentConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create a pulumi component config","tags":["components"]}},"/v1/apps/{app_id}/components/{component_id}/configs/terraform-module":{"post":{"description":"Create a terraform component config.\n","operationId":"CreateAppTerraformModuleComponentConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateTerraformModuleComponentConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.TerraformModuleComponentConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create a terraform component config","tags":["components"]}},"/v1/apps/{app_id}/components/{component_id}/configs/{config_id}":{"get":{"description":"Return a component configuration by id.\n","operationId":"GetAppComponentConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}},{"description":"config ID","in":"path","name":"config_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ComponentConfigConnection"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get a config for a component","tags":["components"]}},"/v1/apps/{app_id}/components/{component_id}/dependencies":{"get":{"deprecated":true,"description":"Returns all dependencies for the provided component.\n","operationId":"GetAppComponentDependencies","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.Component"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get a component's dependencies","tags":["components"]}},"/v1/apps/{app_id}/components/{component_id}/dependents":{"get":{"description":"Returns all components that depend on the provided component.\n","operationId":"GetAppComponentDependents","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.ComponentChildren"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get a component's children","tags":["components"]}},"/v1/apps/{app_id}/components/{component_id}/labels":{"delete":{"description":"Remove the specified label keys from the component.","operationId":"RemoveAppComponentLabels","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.RemoveComponentLabelsRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Component"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"remove labels from a component","tags":["components"]},"post":{"description":"Merge the provided labels into the component's existing labels. Existing keys are overwritten.","operationId":"AddAppComponentLabels","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.AddComponentLabelsRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Component"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"add labels to a component","tags":["components"]}},"/v1/apps/{app_id}/config":{"post":{"deprecated":true,"description":"Create an app config, by pushing the contents of a config file.\n\nThe API will automatically configure the app according to the config file in the background.\n","operationId":"CreateAppConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateAppConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"tags":["apps"]}},"/v1/apps/{app_id}/config/{app_config_id}":{"get":{"deprecated":true,"description":"Fetch an app config by id.\n","operationId":"GetAppConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app config ID","in":"path","name":"app_config_id","required":true,"schema":{"type":"string"}},{"description":"load all children configs","in":"query","name":"recurse","schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an app config","tags":["apps"]},"patch":{"deprecated":true,"description":"Update an app config, setting status and state.\n","operationId":"UpdateAppConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app config ID","in":"path","name":"app_config_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.UpdateAppConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"tags":["apps"]}},"/v1/apps/{app_id}/config/{app_config_id}/graph":{"get":{"deprecated":true,"description":"Return raw graphviz data as a string that can be used to visualize a graph for an app.\n\nNote, for more complex viewing recommend to copy this output directly into [Graphviz\nviewer](https://dreampuf.github.io/GraphvizOnline).\n","operationId":"GetAppConfigGraph","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app config ID","in":"path","name":"app_config_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an app config graph","tags":["apps"]}},"/v1/apps/{app_id}/config/{app_config_id}/update-installs":{"post":{"deprecated":true,"description":"Update app configuration across multiple installs.\n","operationId":"UpdateAppConfigInstalls","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app config ID","in":"path","name":"app_config_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.UpdateAppConfigInstallsRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.EmptyResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"tags":["apps"]}},"/v1/apps/{app_id}/configs":{"get":{"description":"Returns all configs for the app.\n","operationId":"GetAppConfigs","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"offset of jobs to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of jobs to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.AppConfig"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get app configs","tags":["apps"]},"post":{"description":"Create an app config, by pushing the contents of a config file.\n\nThe API will automatically configure the app according to the config file in the background.\n","operationId":"CreateAppConfigV2","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateAppConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"tags":["apps"]}},"/v1/apps/{app_id}/configs/{config_id}":{"get":{"description":"Fetch an app config by id.\n","operationId":"GetAppConflgV2","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app config ID","in":"path","name":"config_id","required":true,"schema":{"type":"string"}},{"description":"load all children configs","in":"query","name":"recurse","schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an app config","tags":["apps"]},"patch":{"description":"Update an app config, setting status and state.\n","operationId":"UpdateAppConflgV2","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app config ID","in":"path","name":"config_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.UpdateAppConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"tags":["apps"]}},"/v1/apps/{app_id}/configs/{config_id}/build":{"post":{"description":"Creates a workflow that builds all components defined in the given app config.","operationId":"BuildAppConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app config ID","in":"path","name":"config_id","required":true,"schema":{"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Workflow"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Build all components for an app config","tags":["apps"]}},"/v1/apps/{app_id}/configs/{config_id}/graph":{"get":{"description":"Return raw graphviz data as a string that can be used to visualize a graph for an app.\n\nNote, for more complex viewing recommend to copy this output directly into [Graphviz\nviewer](https://dreampuf.github.io/GraphvizOnline).\n","operationId":"GetAppConfigGraphV2","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app config ID","in":"path","name":"config_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an app config graph","tags":["apps"]}},"/v1/apps/{app_id}/configs/{config_id}/update-installs":{"post":{"description":"Update app configuration across multiple installs.\n","operationId":"UpdateAppConfigInstallsV2","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app config ID","in":"path","name":"config_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.UpdateAppConfigInstallsRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.EmptyResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"tags":["apps"]}},"/v1/apps/{app_id}/input-config":{"post":{"description":"App input configs allow you to declare the inputs for your application, and do things such as require customer inputs or \nexpose configuration knobs in your application.\n","operationId":"CreateAppInputConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateAppInputConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppInputConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"tags":["apps"]}},"/v1/apps/{app_id}/input-configs":{"get":{"description":"Returns all input configurations for the provided app.\n","operationId":"GetAppInputConfigs","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"offset of jobs to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of jobs to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.AppInputConfig"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get app input configs","tags":["apps"]}},"/v1/apps/{app_id}/input-configs/{input_config_id}":{"get":{"description":"Return an input config by id.\n","operationId":"GetAppInputConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"input config ID","in":"path","name":"input_config_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppInputConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get app input config","tags":["apps"]}},"/v1/apps/{app_id}/input-latest-config":{"get":{"description":"Returns the most recent input config for the provided app.\n","operationId":"GetAppInputLatestConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppInputConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get latest app input config","tags":["apps"]}},"/v1/apps/{app_id}/installs":{"get":{"description":"Returns all installs for the provided app.\n","operationId":"GetAppInstalls","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"search query","in":"query","name":"q","schema":{"type":"string"}},{"description":"label filter (key:value,key:value)","in":"query","name":"labels","schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.Install"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get all installs for an app","tags":["installs"]},"post":{"deprecated":true,"description":"Create a new install for an app.\n","operationId":"CreateInstall","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateInstallRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Install"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create an app install","tags":["installs"]}},"/v1/apps/{app_id}/latest-break-glass-config":{"get":{"description":"Get the latest break glass config for an app.\n","operationId":"GetLatestAppBreakGlassConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppBreakGlassConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get latest app break glass config","tags":["apps"]}},"/v1/apps/{app_id}/latest-config":{"get":{"description":"Returns the most recent config for the provided app.\n","operationId":"GetAppLatestConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"load all children configs","in":"query","name":"recurse","schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get latest app config","tags":["apps"]}},"/v1/apps/{app_id}/latest-permissions-config":{"get":{"description":"Get the latest app permissions config.\n","operationId":"GetLatestAppPermissionsConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppPermissionsConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get latest app permissions config","tags":["apps"]}},"/v1/apps/{app_id}/latest-policies-config":{"get":{"description":"Get latest app policies config.\n","operationId":"GetLatestAppPoliciesConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppPoliciesConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get latest app policies config","tags":["apps"]}},"/v1/apps/{app_id}/latest-secrets-config":{"get":{"description":"Get the latest app secrets config.\n","operationId":"GetLatestAppSecretsConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppSecretsConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get latest app secrets config","tags":["apps"]}},"/v1/apps/{app_id}/operation-role-configs":{"post":{"description":"Create operation role rules for an app config","operationId":"CreateAppOperationRoleConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateAppOperationRoleConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppOperationRoleConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create operation role config","tags":["apps"]}},"/v1/apps/{app_id}/operation-role-configs/{operation_role_config_id}":{"get":{"description":"Get all operation role configs for an app","operationId":"GetAppOperationRoleConfigs","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"operation role config ID","in":"path","name":"operation_role_config_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.AppOperationRoleConfig"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get operation role configs","tags":["apps"]}},"/v1/apps/{app_id}/permissions-configs":{"post":{"description":"Create app permissions config.\n","operationId":"CreateAppPermissionsConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateAppPermissionsConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppPermissionsConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"tags":["apps"]}},"/v1/apps/{app_id}/permissions-configs/{config_id}":{"get":{"description":"Return an app permissions config by id.\n","operationId":"GetAppPermissionsConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app permissions config ID","in":"path","name":"config_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppPermissionsConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get app permissions config","tags":["apps"]}},"/v1/apps/{app_id}/policies-configs":{"get":{"description":"Get all policies configs for an app.\n","operationId":"GetAppPoliciesConfigs","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.AppPoliciesConfig"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get app policies configs","tags":["apps"]},"post":{"description":"Create app policies config.\n","operationId":"CreateAppPoliciesConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateAppPoliciesConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppPoliciesConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"tags":["apps"]}},"/v1/apps/{app_id}/policies-configs/{config_id}":{"get":{"description":"Return an app policy config by id.\n","operationId":"GetAppPoliciesConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app policies config ID","in":"path","name":"config_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppPoliciesConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get app policies config","tags":["apps"]}},"/v1/apps/{app_id}/policy-analytics/breakdown":{"get":{"description":"Returns policy evaluation counts broken down by a single dimension (policy_id, install_id, or owner_type), sorted by violation count (denies first, then warns). Use this to identify which policies, installs, or lifecycle stages produce the most violations.\n","operationId":"GetPolicyAnalyticsBreakdown","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"dimension to break down by: policy_id, install_id, owner_type","in":"query","name":"dimension","required":true,"schema":{"type":"string"}},{"description":"start time (RFC3339)","in":"query","name":"start","schema":{"type":"string"}},{"description":"end time (RFC3339)","in":"query","name":"end","schema":{"type":"string"}},{"description":"filter by install ID","in":"query","name":"install_id","schema":{"type":"string"}},{"description":"filter by policy ID","in":"query","name":"policy_id","schema":{"type":"string"}},{"description":"max entries to return (default 10)","in":"query","name":"limit","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.PolicyAnalyticsBreakdown"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get policy analytics breakdown by dimension","tags":["policy-reports"]}},"/v1/apps/{app_id}/policy-analytics/summary":{"get":{"description":"Returns aggregate policy evaluation counts for an app over a time range, with optional drill-down by install or policy.\n","operationId":"GetPolicyAnalyticsSummary","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"start time (RFC3339)","in":"query","name":"start","schema":{"type":"string"}},{"description":"end time (RFC3339)","in":"query","name":"end","schema":{"type":"string"}},{"description":"filter by install ID","in":"query","name":"install_id","schema":{"type":"string"}},{"description":"filter by policy ID","in":"query","name":"policy_id","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.PolicyAnalyticsSummary"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get policy analytics summary","tags":["policy-reports"]}},"/v1/apps/{app_id}/policy-analytics/timeseries":{"get":{"description":"Returns policy evaluation counts bucketed over time for charting, with optional grouping by policy, install, or component.\n","operationId":"GetPolicyAnalyticsTimeseries","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"start time (RFC3339)","in":"query","name":"start","schema":{"type":"string"}},{"description":"end time (RFC3339)","in":"query","name":"end","schema":{"type":"string"}},{"description":"comma-separated dimensions: policy_id, install_id, component_id, owner_type","in":"query","name":"group_by","schema":{"type":"string"}},{"description":"filter by install ID","in":"query","name":"install_id","schema":{"type":"string"}},{"description":"filter by policy ID","in":"query","name":"policy_id","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.PolicyAnalyticsTimeseries"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get policy analytics timeseries","tags":["policy-reports"]}},"/v1/apps/{app_id}/policy-config/{policy_config_id}":{"get":{"description":"get a single app policy config by ID","operationId":"GetAppPolicyConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app policy config ID","in":"path","name":"policy_config_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppPolicyConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get app policy config","tags":["apps"]}},"/v1/apps/{app_id}/runner-configs":{"get":{"description":"Returns all runner configurations for the provided app.\n","operationId":"GetAppRunnerConfigs","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"offset of jobs to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of jobs to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.AppRunnerConfig"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get app runner configs","tags":["apps"]},"post":{"description":"Create a runner configuration for an app.\n","operationId":"CreateAppRunnerConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateAppRunnerConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppRunnerConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create an app runner config","tags":["apps"]}},"/v1/apps/{app_id}/runner-latest-config":{"get":{"description":"Returns the most recent runner config for the provided app.\n","operationId":"GetAppRunnerLatestConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppRunnerConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get latest app runner config","tags":["apps"]}},"/v1/apps/{app_id}/sandbox-config":{"post":{"deprecated":true,"description":"Create a sandbox configuration for an app.\n","operationId":"CreateAppSandboxConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateAppSandboxConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppSandboxConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create an app sandbox config","tags":["apps"]}},"/v1/apps/{app_id}/sandbox-configs":{"get":{"description":"Returns all sandbox configurations for the provided app.\n","operationId":"GetAppSandboxConfigs","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"offset of jobs to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of jobs to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.AppSandboxConfig"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get app sandbox configs","tags":["apps"]},"post":{"description":"Create a sandbox configuration for an app.\n","operationId":"CreateAppSandboxConfigV2","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateAppSandboxConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppSandboxConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create an app sandbox config","tags":["apps"]}},"/v1/apps/{app_id}/sandbox-latest-config":{"get":{"description":"Returns the most recent sandbox config for the provided app.\n","operationId":"GetAppSandboxLatestConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppSandboxConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get latest app sandbox config","tags":["apps"]}},"/v1/apps/{app_id}/sandbox/builds":{"get":{"operationId":"GetAppSandboxBuilds","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.AppSandboxBuild"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get app sandbox builds","tags":["apps"]},"post":{"operationId":"CreateAppSandboxBuild","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppSandboxBuild"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create app sandbox build","tags":["apps"]}},"/v1/apps/{app_id}/sandbox/builds/{build_id}":{"get":{"operationId":"GetAppSandboxBuild","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"sandbox build ID","in":"path","name":"build_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppSandboxBuild"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get app sandbox build","tags":["apps"]}},"/v1/apps/{app_id}/secret":{"post":{"deprecated":true,"description":"Create an app secret that can be used to configure components. To reference an app secret, use `.nuon.secrets.\u003csecret_name\u003e`.\n\n**NOTE** secrets can only be written, or deleted, not read.\n","operationId":"CreateAppSecret","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateAppSecretRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppSecret"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create an app secret","tags":["apps"]}},"/v1/apps/{app_id}/secret/{secret_id}":{"delete":{"deprecated":true,"description":"Delete an app secret.\n","operationId":"DeleteAppSecret","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"secret ID","in":"path","name":"secret_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.EmptyResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"delete an app secret","tags":["apps"]}},"/v1/apps/{app_id}/secrets":{"get":{"description":"List all secrets for an app.\n\n**NOTE** this does not return any sensitive values, as secrets are write only.\n","operationId":"GetAppSecrets","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"offset of jobs to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of jobs to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.AppSecret"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get app secrets","tags":["apps"]},"post":{"description":"Create an app secret that can be used to configure components. To reference an app secret, use `.nuon.secrets.\u003csecret_name\u003e`.\n\n**NOTE** secrets can only be written, or deleted, not read.\n","operationId":"CreateAppSecretV2","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateAppSecretRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppSecret"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create an app secret","tags":["apps"]}},"/v1/apps/{app_id}/secrets-configs":{"post":{"description":"Create an app secrets config.\n","operationId":"CreateAppSecretsConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateAppSecretsConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppSecretsConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"tags":["apps"]}},"/v1/apps/{app_id}/secrets-configs/{config_id}":{"get":{"description":"Return an app secrets config by id.\n","operationId":"GetAppSecretsConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app secrets config ID","in":"path","name":"config_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppSecretsConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get app secrets config","tags":["apps"]}},"/v1/apps/{app_id}/secrets/{secret_id}":{"delete":{"description":"Delete an app secret.\n","operationId":"DeleteAppSecretV2","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"secret ID","in":"path","name":"secret_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.EmptyResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"delete an app secret","tags":["apps"]}},"/v1/apps/{app_id}/stack-configs":{"post":{"description":"Create a cloudformation stack config\n","operationId":"CreateAppStackConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateAppStackConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppStackConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create an app stack config","tags":["apps"]}},"/v1/apps/{app_id}/stack-configs/{config_id}":{"get":{"description":"Return a cloudformation stack config\n","operationId":"GetAppStackConfig","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app stack config ID","in":"path","name":"config_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.AppStackConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get app stack config","tags":["apps"]}},"/v1/apps/{app_id}/template-config":{"get":{"description":"Create an application template which provides a fully rendered config that can be modified and used to kickstart any application.\n","operationId":"GetAppConfigTemplate","parameters":[{"description":"app ID","in":"path","name":"app_id","required":true,"schema":{"type":"string"}},{"description":"app template type","in":"query","name":"type","required":true,"schema":{"enum":["aws-ecs","aws-ecs-byovpc","aws-eks","aws-eks-byovpc","azure-aks","flat","top-level","installer","runner","sandbox","inputs","terraform","terraformInfra","helm","docker-build","job","container-image","ecr-container-image"],"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.AppConfigTemplate"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an app config template","tags":["apps"]}},"/v1/auth/me":{"get":{"description":"Returns the authenticated account with identity profile information (provider_type, name, picture)","operationId":"GetAuthMe","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.AuthMeResponse"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]}],"summary":"Get current account with identity information","tags":["auth"]}},"/v1/builds":{"get":{"deprecated":true,"description":"Returns all builds for the provided component.\n","operationId":"GetComponentBuilds","parameters":[{"description":"component id to filter by","in":"query","name":"component_id","schema":{"type":"string"}},{"description":"app id to filter by","in":"query","name":"app_id","schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.ComponentBuild"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get builds for components","tags":["components"]}},"/v1/components":{"get":{"description":"Returns all components for the provided organization.\n","operationId":"GetOrgComponents","parameters":[{"description":"comma-separated list of component IDs to filter by","in":"query","name":"component_ids","schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.Component"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get all components for an org","tags":["components"]}},"/v1/components/builds/{build_id}":{"get":{"deprecated":true,"description":"Returns builds for one or all components in an app.\n","operationId":"GetBuild","parameters":[{"description":"build ID","in":"path","name":"build_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ComponentBuild"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get a build","tags":["components"]}},"/v1/components/{component_id}":{"delete":{"deprecated":true,"description":"Delete a component.\n","operationId":"DeleteComponent","parameters":[{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.EmptyResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"delete a component","tags":["components"]},"get":{"deprecated":true,"description":"Return a component by id.\n","operationId":"GetComponent","parameters":[{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Component"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get a component","tags":["components"]},"patch":{"deprecated":true,"description":"Update a component's configuration.\n","operationId":"UpdateComponent","parameters":[{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.UpdateComponentRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Component"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"update a component","tags":["components"]}},"/v1/components/{component_id}/builds":{"post":{"deprecated":true,"description":"Create a build for a component.\n","operationId":"CreateComponentBuild","parameters":[{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateComponentBuildRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ComponentBuild"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create component build","tags":["components"]}},"/v1/components/{component_id}/builds/latest":{"get":{"deprecated":true,"description":"Returns the most recent build for the provided component.\n","operationId":"GetComponentLatestBuild","parameters":[{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ComponentBuild"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get latest build for a component","tags":["components"]}},"/v1/components/{component_id}/builds/{build_id}":{"get":{"deprecated":true,"description":"Returns builds for one or all components in an app.\n","operationId":"GetComponentBuild","parameters":[{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}},{"description":"build ID","in":"path","name":"build_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ComponentBuild"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get a build for a component","tags":["components"]}},"/v1/components/{component_id}/configs":{"get":{"deprecated":true,"description":"Returns all configurations for the provided component.\n","operationId":"GetComponentConfigs","parameters":[{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.ComponentConfigConnection"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get all configs for a component","tags":["components"]}},"/v1/components/{component_id}/configs/docker-build":{"post":{"deprecated":true,"description":"Create a Docker build component config.\n","operationId":"CreateDockerBuildComponentConfig","parameters":[{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateDockerBuildComponentConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.DockerBuildComponentConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create a docker build component config","tags":["components"]}},"/v1/components/{component_id}/configs/external-image":{"post":{"deprecated":true,"description":"Create an external image component config.\n","operationId":"CreateExternalImageComponentConfig","parameters":[{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateExternalImageComponentConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ExternalImageComponentConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create an external image component config","tags":["components"]}},"/v1/components/{component_id}/configs/helm":{"post":{"deprecated":true,"description":"Create a helm component config.\n","operationId":"CreateHelmComponentConfig","parameters":[{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateHelmComponentConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.HelmComponentConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create a helm component config","tags":["components"]}},"/v1/components/{component_id}/configs/job":{"post":{"deprecated":true,"description":"Create a job component config.\n","operationId":"CreateJobComponentConfig","parameters":[{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateJobComponentConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.JobComponentConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create a job component config","tags":["components"]}},"/v1/components/{component_id}/configs/kubernetes-manifest":{"post":{"deprecated":true,"description":"Create a Kubernetes manifest component config.\n","operationId":"CreateKubernetesManifestComponentConfig","parameters":[{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateKubernetesManifestComponentConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.KubernetesManifestComponentConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create a kubernetes manifest component config","tags":["components"]}},"/v1/components/{component_id}/configs/latest":{"get":{"deprecated":true,"description":"Returns the most recent config for the provided component.\n","operationId":"GetComponentLatestConfig","parameters":[{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ComponentConfigConnection"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get latest config for a component","tags":["components"]}},"/v1/components/{component_id}/configs/pulumi":{"post":{"deprecated":true,"operationId":"CreatePulumiComponentConfig","parameters":[{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreatePulumiComponentConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.PulumiComponentConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create a pulumi component config","tags":["components"]}},"/v1/components/{component_id}/configs/terraform-module":{"post":{"deprecated":true,"description":"Create a terraform component config.\n","operationId":"CreateTerraformModuleComponentConfig","parameters":[{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateTerraformModuleComponentConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.TerraformModuleComponentConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create a terraform component config","tags":["components"]}},"/v1/components/{component_id}/configs/{config_id}":{"get":{"deprecated":true,"description":"Return a component configuration by id.\n","operationId":"GetComponentConfig","parameters":[{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}},{"description":"config ID","in":"path","name":"config_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.ComponentConfigConnection"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get a config for a component","tags":["components"]}},"/v1/components/{component_id}/dependencies":{"get":{"deprecated":true,"description":"Returns all dependencies for the provided component.\n","operationId":"GetComponentDependencies","parameters":[{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.Component"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get a component's dependencies","tags":["components"]}},"/v1/components/{component_id}/dependents":{"get":{"description":"Returns all components that depend on the provided component.\n","operationId":"GetComponentDependents","parameters":[{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.ComponentChildren"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get a component's children","tags":["components"]}},"/v1/general/cli-config":{"get":{"description":"Returns CLI configuration and settings.\n","operationId":"GetCLIConfig","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CLIConfig"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"summary":"Get config for cli","tags":["general"]}},"/v1/general/cloud-platform/{cloud_platform}/regions":{"get":{"description":"Return region metadata for the Nuon supported cloud platforms.\n","operationId":"GetCloudPlatformRegions","parameters":[{"description":"cloud platform","in":"path","name":"cloud_platform","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.CloudPlatformRegion"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"summary":"Get regions for a cloud platform","tags":["general"]}},"/v1/general/config-schema":{"get":{"description":"Return jsonschemas for Nuon configs. These can be used in frontmatter in most editors that have a TOML LSP (such as\n[Taplo](https://taplo.tamasfe.dev/) configured.\n\n```toml\n#:schema https://api.nuon.co/v1/general/config-schema?source=inputs\n\ndescription = \"description\"\n```\n\nYou can pass in a valid source argument to render within a specific config file:\n\n- input\n- input-group\n- installer\n- sandbox\n- runner\n- docker_build\n- container_image\n- helm\n- terraform\n- job\n","operationId":"GetConfigSchema","parameters":[{"description":"return a schema for a source file","in":"query","name":"type","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"summary":"Get jsonschema for config file","tags":["general"]}},"/v1/general/current-user":{"get":{"description":"Returns the current authenticated user account.\n","operationId":"GetCurrentUser","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Account"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]}],"summary":"Get current user","tags":["general"]}},"/v1/general/waitlist":{"post":{"description":"Add an entry to the waitlist.\n","operationId":"CreateWaitlist","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.WaitlistRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Waitlist"}}},"description":"OK"}},"security":[{"APIKey":[]}],"summary":"Allow user to be added to an org waitlist.","tags":["general"]}},"/v1/install-workflows/{install_workflow_id}":{"get":{"deprecated":true,"description":"Return a workflow.\n","operationId":"GetInstallWorkflow","parameters":[{"description":"install workflow ID","in":"path","name":"install_workflow_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Workflow"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an install workflow","tags":["installs"]},"patch":{"deprecated":true,"description":"Update a workflow configuration.\n","operationId":"UpdateInstallWorkflow","parameters":[{"description":"install workflow ID","in":"path","name":"install_workflow_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.UpdateWorkflowRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Workflow"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"update an install workflow","tags":["installs"]}},"/v1/install-workflows/{install_workflow_id}/cancel":{"post":{"deprecated":true,"description":"Cancel a running workflow execution.\n","operationId":"CancelInstallWorkflow","parameters":[{"description":"install workflow ID","in":"path","name":"install_workflow_id","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.EmptyResponse"}}},"description":"Accepted"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"cancel an ongoing install workflow","tags":["installs"]}},"/v1/install-workflows/{install_workflow_id}/steps":{"get":{"deprecated":true,"description":"Return all steps for a workflow.\n","operationId":"GetInstallWorkflowSteps","parameters":[{"description":"install workflow ID","in":"path","name":"install_workflow_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.WorkflowStep"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get all of the steps for a given install workflow","tags":["installs"]}},"/v1/install-workflows/{install_workflow_id}/steps/{install_workflow_step_id}":{"get":{"deprecated":true,"description":"Return a single workflow step.\n","operationId":"GetInstallWorkflowStep","parameters":[{"description":"workflow id","in":"path","name":"install_workflow_id","required":true,"schema":{"type":"string"}},{"description":"step id","in":"path","name":"install_workflow_step_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.WorkflowStep"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an install workflow step","tags":["installs"]}},"/v1/install-workflows/{install_workflow_id}/steps/{install_workflow_step_id}/approvals/{approval_id}":{"get":{"deprecated":true,"description":"Return a workflow step approval by id.\n","operationId":"GetInstallWorkflowStepApproval","parameters":[{"description":"workflow id","in":"path","name":"install_workflow_id","required":true,"schema":{"type":"string"}},{"description":"step id","in":"path","name":"install_workflow_step_id","required":true,"schema":{"type":"string"}},{"description":"approval id","in":"path","name":"approval_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.WorkflowStepApproval"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an install workflow step approval","tags":["installs"]}},"/v1/installs":{"get":{"description":"Returns all installs for the provided organization.\n","operationId":"GetOrgInstalls","parameters":[{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"search query to filter installs by name","in":"query","name":"q","schema":{"type":"string"}},{"description":"label filter (key:value,key:value)","in":"query","name":"labels","schema":{"type":"string"}},{"description":"filter by runner ID","in":"query","name":"runner_id","schema":{"type":"string"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.Install"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get all installs for an org","tags":["installs"]},"post":{"description":"Create a new install for an app.\n","operationId":"CreateInstallV2","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateInstallV2Request"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Install"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create an app install","tags":["installs"]}},"/v1/installs/label-keys":{"get":{"description":"Returns all distinct label key:value pairs for installs in the current org.","operationId":"GetInstallLabelKeys","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"}}},"description":"OK"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get distinct label key:value pairs across all installs for an org","tags":["installs"]}},"/v1/installs/sandbox-runs/{run_id}":{"get":{"deprecated":true,"description":"Return a sandbox run for an install by id.\n","operationId":"GetInstallSandboxRun","parameters":[{"description":"run ID","in":"path","name":"run_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallSandboxRun"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an install sandbox run","tags":["installs"]}},"/v1/installs/stacks/{stack_id}":{"get":{"description":"Returns the deployment stack for an install.\n","operationId":"GetInstallStack","parameters":[{"description":"stack ID","in":"path","name":"stack_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallStack"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an install stack by stack ID","tags":["installs"]}},"/v1/installs/{install_id}":{"delete":{"description":"Delete an install.\n","operationId":"DeleteInstall","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.WorkflowResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"delete an install","tags":["installs"]},"get":{"description":"Return an install by id.\n","operationId":"GetInstall","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"whether to include drifted objects","in":"query","name":"include_drifted_objects","schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Install"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an install","tags":["installs"]},"patch":{"description":"Update an install's settings.\n","operationId":"UpdateInstall","parameters":[{"description":"app ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.UpdateInstallRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Install"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"update an install","tags":["installs"]}},"/v1/installs/{install_id}/action-workflows":{"get":{"deprecated":true,"description":"Get install action workflows.\n","operationId":"GetInstallActionWorkflows","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.InstallActionWorkflow"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an installs action workflows","tags":["installs"]}},"/v1/installs/{install_id}/action-workflows/latest-runs":{"get":{"deprecated":true,"description":"Returns the most recent workflow run for each install action workflow.\n","operationId":"GetInstallActionWorkflowsLatestRuns","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"filter by action workflow trigger by types","in":"query","name":"trigger_types","schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}},{"description":"search query for action workflow name","in":"query","name":"q","schema":{"type":"string"}},{"description":"label filter (key:value,key:value)","in":"query","name":"labels","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.InstallActionWorkflow"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get latest runs for all action workflows by install id","tags":["actions"]}},"/v1/installs/{install_id}/action-workflows/runs":{"get":{"deprecated":true,"description":"Returns all action workflow runs for an install.\n","operationId":"GetInstallActionWorkflowRuns","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.InstallActionWorkflowRun"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get action workflow runs by install id","tags":["actions"]},"post":{"deprecated":true,"description":"AppWorkflowConfigId param has been deprecated and is no longer being consumed, the api uses currently install id to lookup related appworkflowconfigId\n","operationId":"CreateInstallActionWorkflowRun","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateInstallActionWorkflowRunRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.WorkflowResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create an action workflow run for an install","tags":["actions"]}},"/v1/installs/{install_id}/action-workflows/runs/{run_id}":{"get":{"deprecated":true,"description":"Return an install action workflow run by id.\n","operationId":"GetInstallActionWorkflowRun","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"run ID","in":"path","name":"run_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallActionWorkflowRun"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get action workflow runs by install id and run id","tags":["actions","actions/runner"]}},"/v1/installs/{install_id}/action-workflows/runs/{run_id}/steps/{step_id}":{"get":{"deprecated":true,"description":"Get an install action workflow run step.\n","operationId":"GetInstallActionWorkflowRunStep","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"workflow run ID","in":"path","name":"run_id","required":true,"schema":{"type":"string"}},{"description":"step ID","in":"path","name":"step_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallActionWorkflowRunStep"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get action workflow run step by install id and step id","tags":["actions"]}},"/v1/installs/{install_id}/action-workflows/{action_workflow_id}":{"get":{"deprecated":true,"description":"Get an install action workflow.\n","operationId":"GetInstallActionWorkflow","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"workflow ID","in":"path","name":"action_workflow_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallActionWorkflow"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an install action workflow","tags":["installs"]}},"/v1/installs/{install_id}/action-workflows/{action_workflow_id}/recent-runs":{"get":{"deprecated":true,"description":"Returns recent workflow runs for an install action workflow.\n","operationId":"GetInstallActionWorkflowRecentRuns","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"action workflow ID","in":"path","name":"action_workflow_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallActionWorkflow"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get recent runs for an action workflow by install id","tags":["actions"]}},"/v1/installs/{install_id}/actions":{"get":{"description":"Get install action workflows.\n","operationId":"GetInstallActions","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.InstallActionWorkflow"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an installs action workflows","tags":["installs"]}},"/v1/installs/{install_id}/actions/adhoc-run":{"post":{"description":"# Create AdHoc Action\n\nCreates and executes a one-time action on an install without creating a permanent action workflow definition.\n\n## Use Cases\n\n- Running ad-hoc debugging scripts\n- Executing maintenance commands\n- Testing bash snippets before creating permanent actions\n- Quick data exports or transformations\n\n## Request Body\n\nProvide **either** `inline_contents` (for multi-line bash scripts) **or** `command` (for single-line commands), but not both.\n\n### Fields\n\n- `inline_contents` (string, optional): Multi-line bash script to execute\n- `command` (string, optional): Single-line shell command to execute\n- `env_vars` (object, optional): Environment variables as key-value pairs\n- `timeout` (integer, optional): Execution timeout in seconds (1-3600, default: 300)\n- `name` (string, optional): Display name for the action (max 255 chars)\n\n## Response\n\nReturns the created adhoc action run with status information.\n\n## Example\n\n```bash\ncurl -X POST https://api.nuon.co/v1/installs/{install_id}/actions/adhoc \\\n  -H \"Authorization: Bearer $API_KEY\" \\\n  -H \"X-Nuon-Org-ID: $ORG_ID\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"inline_contents\": \"#!/bin/bash\\necho \\\"Hello from adhoc action\\\"\\nenv | grep NUON\",\n    \"env_vars\": {\n      \"DEBUG\": \"true\",\n      \"LOG_LEVEL\": \"info\"\n    },\n    \"timeout\": 300,\n    \"name\": \"Debug Script\"\n  }'\n```\n\n## Notes\n\n- AdHoc actions are marked with `trigger_type: \"adhoc\"`\n- They appear in action run history and can be filtered via trigger_type\n- Execution happens on the install's runner using the same infrastructure as permanent actions\n- Logs are preserved and can be viewed via the action runs API\n- AdHoc runs are kept indefinitely (same retention as regular action runs)\n","operationId":"CreateAdHocAction","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateAdHocActionRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateAdHocActionResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create an adhoc action run for an install","tags":["actions"]}},"/v1/installs/{install_id}/actions/latest-runs":{"get":{"description":"Returns the most recent workflow run for each install action workflow.\n","operationId":"GetInstallActionsLatestRuns","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"filter by action workflow trigger by types","in":"query","name":"trigger_types","schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}},{"description":"search query for action workflow name","in":"query","name":"q","schema":{"type":"string"}},{"description":"label filter (key:value,key:value)","in":"query","name":"labels","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.InstallActionWorkflow"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get latest runs for all action workflows by install id","tags":["actions"]}},"/v1/installs/{install_id}/actions/runs":{"get":{"description":"Returns all action workflow runs for an install.\n","operationId":"GetInstallActionRuns","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.InstallActionWorkflowRun"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get action workflow runs by install id","tags":["actions"]},"post":{"description":"\n","operationId":"CreateInstallActionRun","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateInstallActionWorkflowRunRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create an action run for an install","tags":["actions"]}},"/v1/installs/{install_id}/actions/runs/{run_id}":{"get":{"description":"Return an install action workflow run by id.\n","operationId":"GetInstallActionRun","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"run ID","in":"path","name":"run_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallActionWorkflowRun"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get action workflow runs by install id and run id","tags":["actions"]}},"/v1/installs/{install_id}/actions/runs/{run_id}/steps/{step_id}":{"get":{"description":"Get an install action workflow run step.\n","operationId":"GetInstallActionRunStep","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"workflow run ID","in":"path","name":"run_id","required":true,"schema":{"type":"string"}},{"description":"step ID","in":"path","name":"step_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallActionWorkflowRunStep"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get action workflow run step by install id and step id","tags":["actions"]}},"/v1/installs/{install_id}/actions/{action_id}":{"get":{"description":"Get an install action workflow.\n","operationId":"GetInstallAction","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"action ID","in":"path","name":"action_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallActionWorkflow"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an install action","tags":["installs"]}},"/v1/installs/{install_id}/actions/{action_id}/outputs":{"get":{"description":"Return the latest outputs for an action workflow.\n\nThe action_id parameter accepts either an action workflow ID or name.\n\n**NOTE** requires a valid install.\n","operationId":"GetInstallActionWorkflowOutputs","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"action workflow ID or name","in":"path","name":"action_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an install action workflow outputs","tags":["installs"]}},"/v1/installs/{install_id}/actions/{action_id}/recent-runs":{"get":{"description":"Returns recent workflow runs for an install action workflow.\n","operationId":"GetInstallActionRecentRuns","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"action workflow ID","in":"path","name":"action_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallActionWorkflow"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get recent runs for an action workflow by install id","tags":["actions"]}},"/v1/installs/{install_id}/app-permissions-config":{"get":{"operationId":"GetInstallAppPermissionsConfig","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.InstallAppPermissionsConfigResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get app permissions config for an install with provisioning status","tags":["installs"]}},"/v1/installs/{install_id}/audit_logs":{"get":{"description":"Returns audit logs for an install.\n","operationId":"GetInstallAuditLogs","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"start timestamp for audit log range","in":"query","name":"start","required":true,"schema":{"type":"string"}},{"description":"end timestamp for audit log range","in":"query","name":"end","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"text/csv":{"schema":{"items":{"$ref":"#/components/schemas/app.InstallAuditLog"},"type":"array"}}},"description":"OK"},"400":{"content":{"text/csv":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"text/csv":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"text/csv":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"text/csv":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"text/csv":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get install audit logs","tags":["installs"]}},"/v1/installs/{install_id}/available-roles":{"get":{"description":"Returns a list of available IAM roles that can be used for a specific operation on an install.\n\nThe endpoint filters roles based on the operation type:\n- **provision/reprovision**: Custom roles, break glass roles, provision IAM role\n- **deprovision/teardown**: Custom roles, break glass roles, deprovision IAM role\n- **deploy**: Custom roles, break glass roles, maintenance IAM role\n- **trigger** (actions): Custom roles, break glass roles, provision + maintenance IAM roles\n\nRoles are sourced from the install's stack outputs.\n","operationId":"GetAvailableRoles","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"principal type: component, sandbox, action","in":"query","name":"principal_type","schema":{"enum":["component","sandbox","action"],"type":"string"}},{"description":"operation type: provision, reprovision, deprovision, deploy, teardown, trigger","in":"query","name":"operation_type","schema":{"enum":["provision","deprovision","deploy","teardown","reprovision","trigger"],"type":"string"}},{"description":"principal ID: component ID or action workflow ID (required for component and action)","in":"query","name":"principal_id","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.AvailableRolesResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get available IAM roles for a specific operation","tags":["installs"]}},"/v1/installs/{install_id}/components":{"get":{"description":"Returns all components for an install.\n","operationId":"GetInstallComponents","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"component types to filter by","in":"query","name":"types","schema":{"type":"string"}},{"description":"search query for component name","in":"query","name":"q","schema":{"type":"string"}},{"description":"label filter (key:value,key:value)","in":"query","name":"labels","schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.InstallComponent"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an installs components","tags":["installs"]}},"/v1/installs/{install_id}/components/deploy-all":{"post":{"description":"Deploy all components to an install.\n\nThis walks the graph order of the install's app, and will trigger a deploy for each on the specified install.\n","operationId":"DeployInstallComponents","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.DeployInstallComponentsRequest"}}},"description":"Input","x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.WorkflowResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"deploy all components on an install","tags":["installs"]}},"/v1/installs/{install_id}/components/deploys":{"get":{"deprecated":true,"description":"Returns all deployments for an install.\n","operationId":"GetInstallComponentsDeploys","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.InstallDeploy"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get all deploys to an install","tags":["installs"]}},"/v1/installs/{install_id}/components/teardown-all":{"post":{"description":"Teardown all components on an install.\n","operationId":"TeardownInstallComponents","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.TeardownInstallComponentsRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.WorkflowResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"teardown an install's components","tags":["installs"]}},"/v1/installs/{install_id}/components/{component_id}":{"get":{"description":"Return an install component by id.\n","operationId":"GetInstallComponent","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallComponent"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an install component","tags":["installs"]}},"/v1/installs/{install_id}/components/{component_id}/deploys":{"get":{"description":"Returns all deployments for an install component.\n","operationId":"GetInstallComponentDeploys","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.InstallDeploy"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an install components deploys","tags":["installs"]},"post":{"description":"Create a new deployment for an install.\n","operationId":"CreateInstallComponentDeploy","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateInstallComponentDeployRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallDeploy"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"deploy a build to an install","tags":["installs"]}},"/v1/installs/{install_id}/components/{component_id}/deploys/latest":{"get":{"description":"Returns the most recent deployment for an install component.\n","operationId":"GetInstallComponentLatestDeploy","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallDeploy"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get the latest deploy for an install component","tags":["installs"]}},"/v1/installs/{install_id}/components/{component_id}/deploys/{deploy_id}":{"get":{"deprecated":true,"description":"Return a deployment for an install by id.\n","operationId":"GetInstallComponentDeploy","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}},{"description":"deploy ID","in":"path","name":"deploy_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallDeploy"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an install deploy","tags":["installs"]}},"/v1/installs/{install_id}/components/{component_id}/forget":{"post":{"description":"# Forget Install Component\n\nPermanently forget (soft delete) an install component from the system. This operation marks the install component as deleted while preserving the record for audit purposes.\n\n## Use Cases\n\n- Remove a component that is no longer needed from an install\n- Clean up failed or orphaned install components\n- Prepare for reinstalling a component from scratch\n\n## Important Notes\n\n- This is a **soft delete** operation - the record is marked as deleted but remains in the database\n- The component will no longer appear in API responses or dashboard views\n- Associated resources (terraform state, deploys, etc.) are preserved via soft delete\n- This operation is **irreversible** via the API\n- To restore, database-level operations would be required\n\n## Prerequisites\n\n- Install must exist and belong to the authenticated organization\n- Component must exist for the specified install\n- User must have appropriate permissions for the install's organization\n- Component must be removed from the app configuration (sync required)\n\n## Behavior\n\n1. Validates install exists and belongs to org\n2. Validates install component exists\n3. Validates component is not in the app configuration\n4. Soft deletes the install component record\n5. Cascades soft delete to associated resources (via GORM associations)\n6. Sends event loop signal for any cleanup workflows\n7. Returns success response\n\n## Validation\n\nBefore forgetting an install component, the system validates that the component no longer exists in the app configuration. If the component is still in the app config, the request will fail with a user-friendly error message.\n\n**To resolve this error:**\n\n1. Remove the component from your `nuon.yaml` file\n2. Run `nuon apps sync` to update the app configuration\n3. Retry the forget operation\n\n## Related Endpoints\n\n- `DELETE /v1/installs/{install_id}` - Delete entire install\n- `POST /v1/installs/{install_id}/forget` - Forget entire install\n- `POST /v1/installs/{install_id}/components/{component_id}/teardown` - Teardown component infrastructure\n","operationId":"ForgetInstallComponent","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.ForgetInstallComponentRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.EmptyResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"forget an install component","tags":["installs"]}},"/v1/installs/{install_id}/components/{component_id}/outputs":{"get":{"description":"Return the latest outputs for a component.\n\n**NOTE** requires a valid install.\n","operationId":"GetInstallComponentOutputs","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an install component outputs","tags":["installs"]}},"/v1/installs/{install_id}/components/{component_id}/teardown":{"post":{"description":"Teardown and remove an install component's resources.\n","operationId":"TeardownInstallComponent","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"component ID","in":"path","name":"component_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.TeardownInstallComponentRequest"}}},"description":"Input","x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.WorkflowResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"teardown an install component","tags":["installs"]}},"/v1/installs/{install_id}/configs":{"post":{"description":"Create a configuration for an install.\n","operationId":"CreateInstallConfig","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateInstallConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create an install config","tags":["installs"]}},"/v1/installs/{install_id}/configs/{config_id}":{"patch":{"description":"Update an install's configuration.\n","operationId":"UpdateInstallConfig","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"config ID","in":"path","name":"config_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.UpdateInstallConfigRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallConfig"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"update an install config","tags":["installs"]}},"/v1/installs/{install_id}/deploys":{"get":{"deprecated":true,"description":"Returns all deployments for an install.\n","operationId":"GetInstallDeploys","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.InstallDeploy"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get all deploys to an install","tags":["installs"]},"post":{"deprecated":true,"description":"Create a new deployment for an install.\n","operationId":"CreateInstallDeploy","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateInstallDeployRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallDeploy"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"deploy a build to an install","tags":["installs"]}},"/v1/installs/{install_id}/deploys/latest":{"get":{"deprecated":true,"description":"Returns the most recent deployment for an install.\n","operationId":"GetInstallLatestDeploy","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallDeploy"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an install's latest deploy","tags":["installs"]}},"/v1/installs/{install_id}/deploys/{deploy_id}":{"get":{"description":"Return a deployment for an install by id.\n","operationId":"GetInstallDeploy","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"deploy ID","in":"path","name":"deploy_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallDeploy"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an install deploy","tags":["installs"]}},"/v1/installs/{install_id}/deprovision":{"post":{"description":"Deprovision an install sandbox.\n","operationId":"DeprovisionInstall","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.DeprovisionInstallRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.WorkflowResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"deprovision an install","tags":["installs"]}},"/v1/installs/{install_id}/deprovision-sandbox":{"post":{"description":"Deprovision a sandbox environment for an install.\n","operationId":"DeprovisionInstallSandbox","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.DeprovisionInstallSandboxRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.WorkflowResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"deprovision an install","tags":["installs"]}},"/v1/installs/{install_id}/drifted-objects":{"get":{"description":"Returns all drifted objects for an install.\n","operationId":"GetDriftedObjects","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.DriftedObject"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get drifted objects for an install","tags":["installs"]}},"/v1/installs/{install_id}/events":{"get":{"description":"# Get Install Events\n\nReturn an event stream for an install.\n","operationId":"GetInstallEvents","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.InstallEvent"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get events for an install","tags":["installs"]}},"/v1/installs/{install_id}/events/{event_id}":{"get":{"description":"Get a single install event.\n","operationId":"GetInstallEvent","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"event ID","in":"path","name":"event_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallEvent"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an install event","tags":["installs"]}},"/v1/installs/{install_id}/forget":{"post":{"description":"Forget an install that has been deleted outside of nuon.\n\nThis should only be used in cases where an install was broken in an unordinary way and needs to be manually deleted so the parent resources can be deleted.\n","operationId":"ForgetInstall","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.ForgetInstallRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.EmptyResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"forget an install","tags":["installs"]}},"/v1/installs/{install_id}/generate-cli-install-config":{"get":{"description":"Generate CLI configuration for an install.\n","operationId":"GenerateCLIInstallConfig","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/octet-stream":{"schema":{"format":"binary","type":"string"}}},"description":"OK"},"400":{"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"generate an install config to be used with CLI","tags":["installs"]}},"/v1/installs/{install_id}/generate-terraform-installer-config":{"get":{"description":"Generate terraform configuration for an installer.\n","operationId":"GenerateTerraformInstallerConfig","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/octet-stream":{"schema":{"format":"binary","type":"string"}}},"description":"OK"},"400":{"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"generate a Terraform installer config","tags":["installs"]}},"/v1/installs/{install_id}/inputs":{"get":{"description":"Returns input values for an install.\n","operationId":"GetInstallInputs","parameters":[{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}},{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.InstallInputs"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an installs inputs","tags":["installs"]},"patch":{"description":"Update input values for an install.\n","operationId":"UpdateInstallInputs","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.UpdateInstallInputsRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallInputs"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Updates install input config for app","tags":["installs"]},"post":{"description":"Create input values for an install.\n","operationId":"CreateInstallInputs","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateInstallInputsRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallInputs"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create install inputs","tags":["installs"]}},"/v1/installs/{install_id}/inputs/current":{"get":{"description":"Returns input values for an install.\n","operationId":"GetCurrentInstallInputs","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallInputs"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an installs current inputs","tags":["installs"]}},"/v1/installs/{install_id}/labels":{"delete":{"description":"Remove the specified label keys from the install.","operationId":"RemoveInstallLabels","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.RemoveInstallLabelsRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Install"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"remove labels from an install","tags":["installs"]},"post":{"description":"Merge the provided labels into the install's existing labels. Existing keys are overwritten.","operationId":"AddInstallLabels","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.AddInstallLabelsRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Install"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"add labels to an install","tags":["installs"]}},"/v1/installs/{install_id}/phone-home/{phone_home_id}":{"post":{"description":"A public endpoint for phoning home from a runner AWS cloudformation stack upon successfully processing it.\n","operationId":"PhoneHome","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"phone home ID","in":"path","name":"phone_home_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.InstallPhoneHomeRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.EmptyResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"phone home for an install","tags":["installs"]}},"/v1/installs/{install_id}/readme":{"get":{"description":"Returns the `app.readme` markdown with the values interpolated from the install\ninputs and component outputs.\n","operationId":"GetInstallReadme","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.Readme"}}},"description":"OK"},"206":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.Readme"}}},"description":"Partial Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get install readme rendered with","tags":["installs"]}},"/v1/installs/{install_id}/reprovision":{"post":{"description":"Reprovision an install sandbox.\n\n","operationId":"ReprovisionInstall","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.ReprovisionInstallRequest"}}},"description":"Input","x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.WorkflowResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"reprovision an install","tags":["installs"]}},"/v1/installs/{install_id}/reprovision-sandbox":{"post":{"description":"Reprovision an install sandbox and redeploy all components on top.\n","operationId":"ReprovisionInstallSandbox","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.ReprovisionInstallSandboxRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.WorkflowResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"reprovision an install sandbox","tags":["installs"]}},"/v1/installs/{install_id}/retry-workflow":{"post":{"deprecated":true,"description":"Retry a failed workflow execution.\n","operationId":"RetryWorkflow","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.RetryWorkflowRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.RetryWorkflowResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"rerun the workflow steps starting from input step id, can be used to retry a failed step","tags":["installs"]}},"/v1/installs/{install_id}/roles":{"get":{"description":"get all roles for an install","operationId":"GetInstallRoles","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}},{"description":"search query to filter roles by display name","in":"query","name":"q","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.InstallRoles"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get install roles","tags":["installs"]}},"/v1/installs/{install_id}/roles/latest":{"get":{"description":"get install roles for the current app config","operationId":"GetLatestInstallRoles","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}},{"description":"search query to filter roles by display name","in":"query","name":"q","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.InstallRoles"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get latest install roles","tags":["installs"]}},"/v1/installs/{install_id}/roles/usages":{"get":{"description":"get workflows that used a particular role, filtered by unrendered role name","operationId":"GetInstallRoleUsages","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"unrendered role name template","in":"query","name":"role_name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.InstallRoleUsage"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get install role usages","tags":["installs"]}},"/v1/installs/{install_id}/roles/{role_id}":{"patch":{"description":"enable or disable an install role","operationId":"UpdateInstallRole","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"install role ID","in":"path","name":"role_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.UpdateInstallRoleRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallRoles"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"update an install role","tags":["installs"]}},"/v1/installs/{install_id}/runner-bootstrap-token":{"post":{"operationId":"CreateRunnerBootstrapToken","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateRunnerBootstrapTokenResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create a bootstrap token for an install's runner","tags":["installs"]}},"/v1/installs/{install_id}/runner-group":{"get":{"description":"Return the runner group, including runners and settings for the provided install.\n","operationId":"GetInstallRunnerGroup","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.RunnerGroup"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Get an install's runner group","tags":["installs"]}},"/v1/installs/{install_id}/sandbox-runs":{"get":{"description":"Returns all sandbox runs for an install.\n","operationId":"GetInstallSandboxRuns","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.InstallSandboxRun"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an installs sandbox runs","tags":["installs"]}},"/v1/installs/{install_id}/sandbox-runs/{run_id}":{"get":{"description":"Return a sandbox run for an install by id.\n","operationId":"GetInstallSandboxRunV2","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"run ID","in":"path","name":"run_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallSandboxRun"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an install sandbox run","tags":["installs"]}},"/v1/installs/{install_id}/stack":{"get":{"description":"Returns the deployment stack for an install.\n","operationId":"GetInstallStackByInstallID","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallStack"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an install stack by install ID","tags":["installs"]}},"/v1/installs/{install_id}/stack-runs":{"get":{"description":"get install stack runs","operationId":"GetInstallStackRuns","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.InstallStackVersionRun"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an install's stack runs","tags":["installs"]}},"/v1/installs/{install_id}/state":{"get":{"description":"Returns the current state for an install.\n","operationId":"GetInstallState","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/github_com_nuonco_nuon_pkg_types_state.State"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Get the current state of an install.","tags":["installs"]}},"/v1/installs/{install_id}/state-history":{"get":{"description":"Returns the state history for an install.\n","operationId":"GetInstallStateHistory","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.InstallState"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Get install state history.","tags":["installs"]}},"/v1/installs/{install_id}/sync-secrets":{"post":{"description":"Execute the sync secrets workflow.\n","operationId":"SyncSecrets","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.SyncSecretsRequest"}}},"description":"Input","x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.WorkflowResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"sync secrets install","tags":["installs"]}},"/v1/installs/{install_id}/workflows":{"get":{"description":"Return workflows for an install.\n","operationId":"GetWorkflows","parameters":[{"description":"install ID","in":"path","name":"install_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}},{"description":"exclude plan only workflows when set to false","in":"query","name":"planonly","schema":{"default":true,"type":"boolean"}},{"description":"filter by workflow type","in":"query","name":"type","schema":{"type":"string"}},{"description":"filter by finished state","in":"query","name":"finished","schema":{"type":"boolean"}},{"description":"filter workflows created after timestamp (RFC3339 format)","in":"query","name":"created_at_gte","schema":{"type":"string"}},{"description":"filter workflows created before timestamp (RFC3339 format)","in":"query","name":"created_at_lte","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.Workflow"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get workflows","tags":["installs"]}},"/v1/log-streams/{log_stream_id}":{"get":{"description":"Return a log stream.\n","operationId":"GetLogStream","parameters":[{"description":"log stream ID","in":"path","name":"log_stream_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.LogStream"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get a log stream","tags":["runners"]}},"/v1/log-streams/{log_stream_id}/logs":{"get":{"description":"Read OTEL formatted logs for a log stream.\n","operationId":"LogStreamReadLogs","parameters":[{"description":"log stream ID","in":"path","name":"log_stream_id","required":true,"schema":{"type":"string"}},{"description":"log stream offset","in":"header","name":"X-Nuon-API-Offset","schema":{"type":"string"}},{"description":"sort direction","in":"query","name":"order","schema":{"default":"asc","type":"string"}},{"description":"filter by service_name (repeatable)","in":"query","name":"service_name","schema":{"items":{"type":"string"},"type":"array"}},{"description":"filter by scope_name (repeatable)","in":"query","name":"scope_name","schema":{"items":{"type":"string"},"type":"array"}},{"description":"filter by severity_text (repeatable)","in":"query","name":"severity_text","schema":{"items":{"type":"string"},"type":"array"}},{"description":"filter by log_attributes['nuon.tool']","in":"query","name":"tool","schema":{"type":"string"}},{"description":"filter by log_attributes['helm.release_name']","in":"query","name":"helm_release_name","schema":{"type":"string"}},{"description":"filter by log_attributes['helm.operation']","in":"query","name":"helm_operation","schema":{"type":"string"}},{"description":"filter by log_attributes['tf.workspace_id']","in":"query","name":"tf_workspace_id","schema":{"type":"string"}},{"description":"filter by log_attributes['tf.operation']","in":"query","name":"tf_operation","schema":{"type":"string"}},{"description":"filter by log_attributes['k8s.kind']","in":"query","name":"k8s_kind","schema":{"type":"string"}},{"description":"filter by log_attributes['k8s.namespace']","in":"query","name":"k8s_namespace","schema":{"type":"string"}},{"description":"filter by log_attributes['k8s.name']","in":"query","name":"k8s_name","schema":{"type":"string"}},{"description":"filter by exact trace_id (dedicated CH column)","in":"query","name":"trace_id","schema":{"type":"string"}},{"description":"filter by exact span_id (dedicated CH column)","in":"query","name":"span_id","schema":{"type":"string"}},{"description":"case-insensitive substring filter on log body","in":"query","name":"q","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.OtelLogRecord"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"read a log stream's logs","tags":["runners"]}},"/v1/log-streams/{log_stream_id}/spans":{"get":{"description":"Read OTEL trace spans for a log stream.\n\nReturns the flat list of spans recorded by the runner for the job execution\n(or executions) associated with this log stream, ordered by start timestamp\nASC. The frontend assembles the tree from `parent_span_id`.\n","operationId":"LogStreamReadSpans","parameters":[{"description":"log stream ID","in":"path","name":"log_stream_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/service.LogStreamSpan"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"read a log stream's trace spans","tags":["runners"]}},"/v1/onboarding":{"post":{"description":"Creates a new active onboarding session for the current account","operationId":"CreateOnboarding","responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Onboarding"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]}],"summary":"Start a new onboarding session","tags":["onboarding"]}},"/v1/onboarding/current":{"delete":{"description":"Marks the current active onboarding session as abandoned","operationId":"AbandonOnboarding","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Onboarding"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]}],"summary":"Abandon onboarding session","tags":["onboarding"]},"get":{"description":"Returns the active onboarding session for the current account","operationId":"GetCurrentOnboarding","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Onboarding"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]}],"summary":"Get current onboarding session","tags":["onboarding"]}},"/v1/onboarding/current/steps/deploy":{"post":{"description":"Advances the onboarding past the deploy monitoring to get started","operationId":"CompleteOnboardingDeployStep","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Onboarding"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Complete the deploy step","tags":["onboarding"]}},"/v1/onboarding/current/steps/get-started":{"post":{"description":"Marks the onboarding session as completed","operationId":"CompleteOnboardingGetStartedStep","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Onboarding"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Complete onboarding","tags":["onboarding"]}},"/v1/onboarding/current/steps/install":{"post":{"description":"Creates an install and advances the onboarding to the install status step","operationId":"CompleteOnboardingInstallStep","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CompleteInstallStepRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Onboarding"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Complete the install step","tags":["onboarding"]}},"/v1/onboarding/current/steps/organization":{"post":{"description":"Creates a sandbox organization or attaches an existing one, then advances the onboarding to the app profile step","operationId":"CompleteOnboardingOrganizationStep","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CompleteOrganizationStepRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Onboarding"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]}],"summary":"Complete the organization step","tags":["onboarding"]}},"/v1/onboarding/current/steps/your-stack":{"post":{"description":"Configures the application profile and advances the onboarding to the install step","operationId":"CompleteOnboardingYourStackStep","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CompleteYourStackStepRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Onboarding"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Complete the your stack step","tags":["onboarding"]}},"/v1/onboarding/example-apps":{"get":{"description":"Returns the list of available example applications for onboarding","operationId":"GetOnboardingExampleApps","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/service.ExampleApp"},"type":"array"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]}],"summary":"Get example apps catalog","tags":["onboarding"]}},"/v1/orgs":{"get":{"description":"Returns all organizations for the authenticated user.\n","operationId":"GetOrgs","parameters":[{"description":"search query","in":"query","name":"q","schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.Org"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]}],"summary":"Return current user's orgs","tags":["orgs"]},"post":{"description":"Create a new organization.\n","operationId":"CreateOrg","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateOrgRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Org"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]}],"summary":"create a new org","tags":["orgs"]}},"/v1/orgs/current":{"delete":{"description":"Delete an organization.\n","operationId":"DeleteOrg","responses":{"200":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Delete an org","tags":["orgs"]},"get":{"description":"Return an organization by id.\n","operationId":"GetOrg","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Org"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Get an org","tags":["orgs"]},"patch":{"description":"Update an organization's settings.\n","operationId":"UpdateOrg","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.UpdateOrgRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Org"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Update current org","tags":["orgs"]}},"/v1/orgs/current/accounts":{"get":{"description":"Return an organization by id.\n","operationId":"GetOrgAcounts","parameters":[{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Account"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Get user accounts for current org","tags":["orgs"]}},"/v1/orgs/current/features":{"get":{"description":"Get the current organization's feature flag values.\n\nReturns a map of feature flag names to their enabled/disabled status for the authenticated organization.\n\nThis endpoint shows which features are currently enabled or disabled for your organization, unlike `/v1/orgs/features` which returns all available features with their descriptions.\n\nExample response:\n```json\n{\n  \"api-pagination\": true,\n  \"org-dashboard\": true,\n  \"org-runner\": true,\n  \"stratus-layout\": true,\n  \"user-managed-features\": false\n}\n```\n","operationId":"GetCurrentOrgFeatures","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{"type":"boolean"},"type":"object"}}},"description":"OK"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get current org's feature flags","tags":["orgs"]},"patch":{"description":"Update feature flags for your current organization.\n\nThis endpoint allows organization users to manage feature flags, but requires the `user-managed-features` flag to be enabled for the organization. The `user-managed-features` flag itself cannot be modified through this endpoint and can only be enabled/disabled by administrators.\n\n**Requirements:**\n- The `user-managed-features` flag must be enabled for your organization\n- You cannot toggle the `user-managed-features` flag through this endpoint (admin-only)\n\n**Example Request:**\n```json\n{\n  \"features\": {\n    \"api-pagination\": true,\n    \"install-delete\": false\n  }\n}\n```\n\nThe request will update only the specified feature flags. Features not included in the request will retain their current values.\n","operationId":"UpdateOrgFeatures","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.UpdateOrgFeaturesRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Org"}}},"description":"OK"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"update org features (requires user-managed-features flag)","tags":["orgs"]}},"/v1/orgs/current/invites":{"get":{"description":"Returns a list of all invites to the org.\n","operationId":"GetOrgInvites","parameters":[{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":60,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.OrgInvite"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Return org invites","tags":["orgs"]},"post":{"description":"Invite a user (by email) to an org.\n\nThis user will receive an email, and when they next log into the application will be added to the org.\n","operationId":"CreateOrgInvite","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateOrgInviteRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.OrgInvite"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Invite a user to the current org","tags":["orgs"]}},"/v1/orgs/current/invites/{invite_id}/resend":{"post":{"description":"Resend the invite email for an existing pending org invite.\n\nThe invite must be in \"pending\" status. Accepted invites cannot be resent.\n","operationId":"ResendOrgInvite","parameters":[{"description":"invite ID","in":"path","name":"invite_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.OrgInvite"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Resend an org invite","tags":["orgs"]}},"/v1/orgs/current/remove-user":{"post":{"description":"Remove a user from an org.\n","operationId":"RemoveUser","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.RemoveOrgUserRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Account"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Remove a user from the current org","tags":["orgs"]}},"/v1/orgs/current/runner-group":{"get":{"description":"Get the current org's runner group, which includes the runners and their settings.\n","operationId":"GetOrgRunnerGroup","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.RunnerGroup"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Get an org's runner group","tags":["orgs"]}},"/v1/orgs/current/stats":{"get":{"description":"Returns statistics for the provided organization.\n","operationId":"GetOrgStats","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Org"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Get an org","tags":["orgs"]}},"/v1/orgs/current/user":{"post":{"description":"Add a user to an organization.\n","operationId":"AddUser","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateOrgUserRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Account"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Add a user to the current org","tags":["orgs"]}},"/v1/orgs/current/webhooks":{"get":{"operationId":"GetCurrentOrgWebhooks","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/service.CurrentOrgWebhookResponse"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"list webhooks for the current org","tags":["orgs"]},"post":{"operationId":"CreateCurrentOrgWebhook","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateCurrentOrgWebhookRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CurrentOrgWebhookResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Conflict"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create a webhook for the current org","tags":["orgs"]}},"/v1/orgs/current/webhooks/{webhook_id}":{"delete":{"operationId":"DeleteCurrentOrgWebhook","parameters":[{"description":"webhook ID","in":"path","name":"webhook_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"delete a webhook for the current org","tags":["orgs"]},"patch":{"description":"Replaces the webhook's interests filter and/or rotates its signing secret. WebhookURL is part of the (org_id, webhook_url) unique index and cannot be changed in place — delete and recreate to rename.","operationId":"UpdateCurrentOrgWebhook","parameters":[{"description":"webhook ID","in":"path","name":"webhook_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.UpdateCurrentOrgWebhookRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CurrentOrgWebhookResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"update a webhook for the current org","tags":["orgs"]}},"/v1/orgs/features":{"get":{"description":"Get all available organization feature flags with their descriptions.\n\nThis endpoint returns a list of all feature flags that can be enabled or disabled for organizations, along with detailed descriptions of what each feature provides.\n\nFeature flags control access to specific platform capabilities and can be managed by administrators through the admin API endpoints.\n","operationId":"GetOrgFeatures","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.OrgFeatureInfo"},"type":"array"}}},"description":"OK"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get available org features","tags":["orgs"]}},"/v1/policy-reports":{"get":{"description":"Returns policy reports for the current organization.\n","operationId":"GetPolicyReports","parameters":[{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}},{"description":"owner type (install_deploys, install_sandbox_runs, component_builds)","in":"query","name":"owner_type","schema":{"type":"string"}},{"description":"owner id","in":"query","name":"owner_id","schema":{"type":"string"}},{"description":"app id","in":"query","name":"app_id","schema":{"type":"string"}},{"description":"install id","in":"query","name":"install_id","schema":{"type":"string"}},{"description":"report status","in":"query","name":"status","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.PolicyReport"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get policy reports","tags":["policy-reports"]}},"/v1/policy-reports/{report_id}":{"get":{"description":"Returns a single policy report by ID.\n","operationId":"GetPolicyReport","parameters":[{"description":"policy report ID","in":"path","name":"report_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.PolicyReport"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get policy report","tags":["policy-reports"]}},"/v1/policy-reports/{report_id}/export":{"get":{"description":"Exports a policy report as JSON, SARIF, or PDF.\n","operationId":"ExportPolicyReport","parameters":[{"description":"policy report ID","in":"path","name":"report_id","required":true,"schema":{"type":"string"}},{"description":"export format: json, sarif, pdf (default: json)","in":"query","name":"format","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}},"application/pdf":{"schema":{}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}},"application/pdf":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}},"application/pdf":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}},"application/pdf":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}},"application/pdf":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}},"application/pdf":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"export policy report","tags":["policy-reports"]}},"/v1/queues":{"get":{"description":"List queues with optional filtering by owner","operationId":"ListQueues","parameters":[{"description":"Filter by owner ID","in":"query","name":"owner_id","schema":{"type":"string"}},{"description":"Filter by owner type (e.g., 'app_branches')","in":"query","name":"owner_type","schema":{"type":"string"}},{"description":"Limit results","in":"query","name":"limit","schema":{"default":50,"type":"integer"}},{"description":"Offset results","in":"query","name":"offset","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.Queue"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"List queues","tags":["queues"]}},"/v1/queues/{queue_id}":{"get":{"description":"Retrieve a single queue by its ID","operationId":"GetQueue","parameters":[{"description":"Queue ID","in":"path","name":"queue_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Queue"}}},"description":"OK"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Get queue by ID","tags":["queues"]}},"/v1/queues/{queue_id}/signals":{"get":{"description":"Get a list of signals for a specific queue with optional filtering","operationId":"GetQueueSignals","parameters":[{"description":"Queue ID","in":"path","name":"queue_id","required":true,"schema":{"type":"string"}},{"description":"Filter by owner ID","in":"query","name":"owner_id","schema":{"type":"string"}},{"description":"Filter by owner type (e.g., app_branches)","in":"query","name":"owner_type","schema":{"type":"string"}},{"description":"Filter by status","in":"query","name":"status","schema":{"type":"string"}},{"description":"Filter by signal type","in":"query","name":"type","schema":{"type":"string"}},{"description":"Limit results (default: 50)","in":"query","name":"limit","schema":{"type":"integer"}},{"description":"Offset for pagination (default: 0)","in":"query","name":"offset","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.QueueSignal"},"type":"array"}}},"description":"OK"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"List queue signals","tags":["queues"]}},"/v1/queues/{queue_id}/signals/{signal_id}":{"get":{"description":"Get detailed information about a specific queue signal","operationId":"GetQueueSignal","parameters":[{"description":"Queue ID","in":"path","name":"queue_id","required":true,"schema":{"type":"string"}},{"description":"Signal ID","in":"path","name":"signal_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.QueueSignal"}}},"description":"OK"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Get queue signal details","tags":["queues"]}},"/v1/queues/{queue_id}/signals/{signal_id}/await":{"get":{"description":"Blocks until the queue signal finishes or the timeout is reached","operationId":"AwaitQueueSignal","parameters":[{"description":"Queue ID","in":"path","name":"queue_id","required":true,"schema":{"type":"string"}},{"description":"Signal ID","in":"path","name":"signal_id","required":true,"schema":{"type":"string"}},{"description":"Timeout in seconds (default 30, max 120)","in":"query","name":"timeout","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.QueueSignal"}}},"description":"OK"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"408":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Request Timeout"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Long-poll for queue signal completion","tags":["queues"]}},"/v1/queues/{queue_id}/status":{"get":{"description":"Get real-time status of a queue including depth and in-flight signals","operationId":"GetQueueStatus","parameters":[{"description":"Queue ID","in":"path","name":"queue_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/queue.StatusResponse"}}},"description":"OK"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Get live queue status","tags":["queues"]}},"/v1/runner-jobs/{runner_job_id}":{"get":{"deprecated":true,"description":"Return a runner job.\n","operationId":"GetRunnerJob","parameters":[{"description":"runner job ID","in":"path","name":"runner_job_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.RunnerJob"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get runner job","tags":["runners","runners/runner"]}},"/v1/runner-jobs/{runner_job_id}/cancel":{"post":{"description":"Cancel a runner job.\n","operationId":"CancelRunnerJob","parameters":[{"description":"runner job ID","in":"path","name":"runner_job_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CancelRunnerJobRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.RunnerJob"}}},"description":"Accepted"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"cancel runner job","tags":["runners"]}},"/v1/runner-jobs/{runner_job_id}/composite-plan":{"get":{"description":"Return a plan for a runner job.\n","operationId":"GetRunnerJobCompositePlan","parameters":[{"description":"runner job ID","in":"path","name":"runner_job_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/plantypes.CompositePlan"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get runner job composite plan","tags":["runners","runners/runner"]}},"/v1/runner-jobs/{runner_job_id}/plan":{"get":{"deprecated":true,"description":"Return a plan for a runner job.\n","operationId":"GetRunnerJobPlan","parameters":[{"description":"runner job ID","in":"path","name":"runner_job_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get runner job plan","tags":["runners","runners/runner"]}},"/v1/runners/terraform-workspace/{workspace_id}/state-json":{"get":{"deprecated":true,"description":"Returns terraform states in JSON format.\n","operationId":"GetTerraformWorkspaceStatesJSON","parameters":[{"description":"workspace ID","in":"path","name":"workspace_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.TerraformWorkspaceStateJSON"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get terraform states json","tags":["runners"]}},"/v1/runners/terraform-workspace/{workspace_id}/state-json/{state_id}":{"get":{"deprecated":true,"description":"Return a terraform state in JSON format by id.\n","operationId":"GetTerraformWorkspaceStatesJSONByID","parameters":[{"description":"workspace ID","in":"path","name":"workspace_id","required":true,"schema":{"type":"string"}},{"description":"terraform state ID","in":"path","name":"state_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get terraform state json by id. This output is same as \"terraform show --json\"","tags":["runners"]}},"/v1/runners/terraform-workspace/{workspace_id}/state-json/{state_id}/resources":{"get":{"deprecated":true,"description":"Returns terraform state resources in JSON format.\n","operationId":"GetTerraformWorkspaceStateJSONResources","parameters":[{"description":"workspace ID","in":"path","name":"workspace_id","required":true,"schema":{"type":"string"}},{"description":"state ID","in":"path","name":"state_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get terraform state resources. This output is similar to \"terraform state list\"","tags":["runners"]}},"/v1/runners/terraform-workspace/{workspace_id}/states":{"get":{"deprecated":true,"description":"Returns terraform states for an install.\n","operationId":"GetTerraformStates","parameters":[{"description":"workspace ID","in":"path","name":"workspace_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.TerraformWorkspaceState"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get terraform states","tags":["runners"]}},"/v1/runners/terraform-workspace/{workspace_id}/states/{state_id}":{"get":{"deprecated":true,"description":"Return a terraform state by id.\n","operationId":"GetTerraformWorkspaceStateByID","parameters":[{"description":"workspace ID","in":"path","name":"workspace_id","required":true,"schema":{"type":"string"}},{"description":"state ID","in":"path","name":"state_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.TerraformWorkspaceState"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get terraform state by ID","tags":["runners"]}},"/v1/runners/terraform-workspace/{workspace_id}/states/{state_id}/resources":{"get":{"description":"Returns resources within a terraform state.\n","operationId":"GetTerraformWorkspaceStateResources","parameters":[{"description":"workspace ID","in":"path","name":"workspace_id","required":true,"schema":{"type":"string"}},{"description":"state ID","in":"path","name":"state_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.TerraformStateResource"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get terraform state resources","tags":["runners"]}},"/v1/runners/{runner_id}/card-details":{"get":{"description":"Returns runner card details for monitoring and status.\n","operationId":"GetRunnerCardDetails","parameters":[{"description":"runner ID","in":"path","name":"runner_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.RunnerCardDetailsResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get runner card details","tags":["runners"]}},"/v1/runners/{runner_id}/connected":{"get":{"description":"# get runner connect status\n\nThe connected status is based on runner heartbeat:\n\nif no heart beat found — false\nif heart beat \u003e 15 seconds ago — false, hb timestamp\nif the heart beat \u003c 15 seconds ago — true","operationId":"GetRunnerConnectStatus","parameters":[{"description":"runner ID","in":"path","name":"runner_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.RunnerConnectionStatus"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get a runner connection satus based on heartbeat","tags":["runners"]}},"/v1/runners/{runner_id}/force-shutdown":{"post":{"description":"Force shutdown a runner.\n\nThis will result in jobs being lost/cancelled if they are in-flight.\n","operationId":"ForceShutDownRunner","parameters":[{"description":"runner ID","in":"path","name":"runner_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.ForceShutdownRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.EmptyResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"force shut down a runner","tags":["runners"]}},"/v1/runners/{runner_id}/graceful-shutdown":{"post":{"description":"Gracefully shut down a runner.\n\n_NOTE_ when a runner is unhealthy, the runner will not be able to pick up this job, so use force shut down instead.\n","operationId":"GracefulShutDownRunner","parameters":[{"description":"runner ID","in":"path","name":"runner_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.GracefulShutdownRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.EmptyResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"shut down a runner","tags":["runners"]}},"/v1/runners/{runner_id}/heart-beats/latest":{"get":{"description":"\n","operationId":"GetLatestRunnerHeartBeat","parameters":[{"description":"runner ID","in":"path","name":"runner_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.LatestRunnerHeartBeats"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get a runner","tags":["runners"]}},"/v1/runners/{runner_id}/jobs":{"get":{"description":"Return runner jobs.\n","operationId":"GetRunnerJobs","parameters":[{"description":"job group","in":"query","name":"group","schema":{"type":"string"}},{"description":"job groups","in":"query","name":"groups","schema":{"type":"string"}},{"description":"job status","in":"query","name":"status","schema":{"type":"string"}},{"description":"job statuses","in":"query","name":"statuses","schema":{"type":"string"}},{"description":"runner ID","in":"path","name":"runner_id","required":true,"schema":{"type":"string"}},{"description":"offset of jobs to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of jobs to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.RunnerJob"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get runner jobs","tags":["runners"]}},"/v1/runners/{runner_id}/latest-heart-beat":{"get":{"deprecated":true,"description":"\n","operationId":"GetRunnerLatestHeartBeat","parameters":[{"description":"runner ID","in":"path","name":"runner_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.RunnerHeartBeat"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get the latest heartbeats for a runner","tags":["runners"]}},"/v1/runners/{runner_id}/mng/fetch-token":{"post":{"operationId":"FetchRunnerTokenMng","parameters":[{"description":"runner ID","in":"path","name":"runner_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.MngFetchTokenRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.EmptyResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"fetch authentication token for an install runner via the mng process","tags":["runners"]}},"/v1/runners/{runner_id}/mng/restart":{"post":{"operationId":"RestartRunnerInstall","parameters":[{"description":"runner ID","in":"path","name":"runner_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.MngRestartRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.EmptyResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"restart the runner install process via the mng process","tags":["runners"]}},"/v1/runners/{runner_id}/mng/shutdown":{"post":{"operationId":"ShutDownRunnerMng","parameters":[{"description":"runner ID","in":"path","name":"runner_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.MngShutDownRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.EmptyResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"shut down an install runner's mng process. does not shut down the install runner process.","tags":["runners"]}},"/v1/runners/{runner_id}/mng/shutdown-vm":{"post":{"operationId":"MngVMShutDown","parameters":[{"description":"runner ID","in":"path","name":"runner_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.MngVMShutDownRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.EmptyResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"shut down an install runner VM","tags":["runners"]}},"/v1/runners/{runner_id}/mng/update":{"post":{"operationId":"UpdateRunnerMng","parameters":[{"description":"runner ID","in":"path","name":"runner_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.MngUpdateRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"update an install runner via the mng process. this is practically a restart.","tags":["runners"]}},"/v1/runners/{runner_id}/processes":{"get":{"operationId":"ListRunnerProcesses","parameters":[{"description":"runner ID","in":"path","name":"runner_id","required":true,"schema":{"type":"string"}},{"description":"filter by process type","in":"query","name":"type","schema":{"type":"string"}},{"description":"filter by status","in":"query","name":"status","schema":{"type":"string"}},{"description":"limit","in":"query","name":"limit","schema":{"type":"integer"}},{"description":"offset","in":"query","name":"offset","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.RunnerProcess"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"list runner processes","tags":["runners"]}},"/v1/runners/{runner_id}/processes/current":{"get":{"operationId":"GetCurrentRunnerProcesses","parameters":[{"description":"runner ID","in":"path","name":"runner_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.RunnerProcess"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get current active runner processes","tags":["runners"]}},"/v1/runners/{runner_id}/processes/{process_id}":{"get":{"operationId":"GetRunnerProcessPublic","parameters":[{"description":"runner ID","in":"path","name":"runner_id","required":true,"schema":{"type":"string"}},{"description":"process ID","in":"path","name":"process_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.RunnerProcess"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get a runner process","tags":["runners"]}},"/v1/runners/{runner_id}/processes/{process_id}/heart-beats/latest":{"get":{"description":"\n","operationId":"GetProcessLatestHeartBeat","parameters":[{"description":"runner ID","in":"path","name":"runner_id","required":true,"schema":{"type":"string"}},{"description":"process ID","in":"path","name":"process_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.RunnerHeartBeat"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get the latest heartbeat for a runner process","tags":["runners"]}},"/v1/runners/{runner_id}/processes/{process_id}/shutdown":{"post":{"operationId":"ShutdownRunnerProcess","parameters":[{"description":"runner ID","in":"path","name":"runner_id","required":true,"schema":{"type":"string"}},{"description":"process ID","in":"path","name":"process_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.ShutdownRunnerProcessRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.RunnerProcessShutdown"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"request shutdown of a runner process","tags":["runners"]}},"/v1/runners/{runner_id}/prune-tokens":{"post":{"description":"Prune old tokens for a specific runner by invalidating all tokens except the most recent one.\n\nThis is useful for cleaning up old tokens without disrupting the currently running runner.\nThe latest token (by creation time) is preserved, ensuring the active runner continues to function.\n\nReturns the count of invalidated tokens for the specified runner.\n","operationId":"PruneTokens","parameters":[{"description":"runner ID","in":"path","name":"runner_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.PruneTokensResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Prune old tokens for a runner","tags":["runners"]}},"/v1/runners/{runner_id}/recent-health-checks":{"get":{"description":"\n","operationId":"GetRunnerRecentHealthChecks","parameters":[{"description":"runner ID","in":"path","name":"runner_id","required":true,"schema":{"type":"string"}},{"description":"window of health checks to return","in":"query","name":"window","schema":{"default":"1h","type":"string"}},{"description":"filter by process ID","in":"query","name":"process_id","schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"Enable pagination","in":"header","name":"x-nuon-pagination-enabled","schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.RunnerHealthCheck"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get recent health checks","tags":["runners"]}},"/v1/runners/{runner_id}/settings":{"get":{"description":"Return runner settings for the provided runner.\n","operationId":"GetRunnerSettings","parameters":[{"description":"runner ID","in":"path","name":"runner_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.RunnerGroupSettings"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get runner settings","tags":["runners"]},"patch":{"description":"Update runner settings and configuration.\n","operationId":"UpdateRunnerSettings","parameters":[{"description":"runner ID","in":"path","name":"runner_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.UpdateRunnerSettingsRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.RunnerJobExecution"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"update a runner's settings via its runner settings group","tags":["runners"]}},"/v1/terraform-backend":{"get":{"description":"Returns the current terraform state.\n","operationId":"GetTerraformCurrentStateData","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.TerraformWorkspaceState"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get current terraform","tags":["runners","runners/runner"]},"post":{"description":"Update a terraform state.\n","operationId":"UpdateTerraformState","requestBody":{"content":{"application/json":{"schema":{}}},"description":"Terraform state data","required":true,"x-originalParamName":"body"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.TerraformWorkspaceState"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"update terraform state","tags":["runners","runners/runner"]}},"/v1/terraform-workspace":{"post":{"deprecated":true,"description":"Create a terraform workspace.\n","operationId":"CreateTerraformWorkspace","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateTerraformWorkspaceRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.TerraformWorkspace"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create terraform workspace","tags":["runners"]}},"/v1/terraform-workspaces":{"get":{"description":"Returns all terraform workspaces.\n","operationId":"GetTerraformWorkspaces","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.TerraformWorkspace"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get  terraform workspaces","tags":["runners","runners/runner"]},"post":{"description":"Create a terraform workspace.\n","operationId":"CreateTerraformWorkspaceV2","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateTerraformWorkspaceRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.TerraformWorkspace"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create terraform workspace","tags":["runners","runners/runner"]}},"/v1/terraform-workspaces/{workspace_id}":{"delete":{"description":"Delete a terraform workspace.\n","operationId":"DeleteTerraformWorkspace","parameters":[{"description":"workspace ID","in":"path","name":"workspace_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.TerraformWorkspace"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"delete terraform workspace","tags":["runners","runners/runner"]},"get":{"description":"Return a terraform workspace by id.\n","operationId":"GetTerraformWorkspace","parameters":[{"description":"workspace ID","in":"path","name":"workspace_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.TerraformWorkspace"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get  terraform workspace","tags":["runners","runners/runner"]}},"/v1/terraform-workspaces/{workspace_id}/lock":{"get":{"description":"Returns the lock status for a terraform workspace.\n","operationId":"GetTerraformWorkspaceLock","parameters":[{"description":"workspace ID","in":"path","name":"workspace_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.TerraformWorkspaceLock"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get terraform workspace lock","tags":["runners"]},"post":{"description":"Lock a terraform workspace to prevent concurrent modifications.\n","operationId":"LockTerraformWorkspace","parameters":[{"description":"workspace ID","in":"path","name":"workspace_id","required":true,"schema":{"type":"string"}},{"description":"job ID","in":"query","name":"job_id","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{}}},"description":"terraform workspace lock ","required":true,"x-originalParamName":"body"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.TerraformWorkspaceState"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"lock terraform state","tags":["runners","runners/runner"]}},"/v1/terraform-workspaces/{workspace_id}/state-json":{"get":{"description":"Returns terraform states in JSON format.\n","operationId":"GetTerraformWorkspaceStatesJSONV2","parameters":[{"description":"workspace ID","in":"path","name":"workspace_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.TerraformWorkspaceStateJSON"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get terraform states json","tags":["runners"]}},"/v1/terraform-workspaces/{workspace_id}/state-json/{state_id}":{"get":{"description":"Return a terraform state in JSON format by id.\n","operationId":"GetTerraformWorkspaceStatesJSONByIDV2","parameters":[{"description":"workspace ID","in":"path","name":"workspace_id","required":true,"schema":{"type":"string"}},{"description":"terraform state ID","in":"path","name":"state_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get terraform state json by id. This output is same as \"terraform show --json\"","tags":["runners"]}},"/v1/terraform-workspaces/{workspace_id}/state-json/{state_id}/raw":{"get":{"description":"Returns the raw state contents without format-specific parsing. Works for both terraform and pulumi state.","operationId":"GetWorkspaceStateJSONRawByID","parameters":[{"description":"workspace ID","in":"path","name":"workspace_id","required":true,"schema":{"type":"string"}},{"description":"state ID","in":"path","name":"state_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get raw workspace state json by id","tags":["runners"]}},"/v1/terraform-workspaces/{workspace_id}/state-json/{state_id}/resources":{"get":{"description":"Returns terraform state resources in JSON format.\n","operationId":"GetTerraformWorkspaceStateJSONResourcesV2","parameters":[{"description":"workspace ID","in":"path","name":"workspace_id","required":true,"schema":{"type":"string"}},{"description":"state ID","in":"path","name":"state_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get terraform state resources. This output is similar to \"terraform state list\"","tags":["runners"]}},"/v1/terraform-workspaces/{workspace_id}/states":{"get":{"description":"Returns terraform states for an install.\n","operationId":"GetTerraformStatesV2","parameters":[{"description":"workspace ID","in":"path","name":"workspace_id","required":true,"schema":{"type":"string"}},{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.TerraformWorkspaceState"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get terraform states","tags":["runners"]}},"/v1/terraform-workspaces/{workspace_id}/states/{state_id}":{"get":{"description":"Return a terraform state by id.\n","operationId":"GetTerraformWorkspaceStateByIDV2","parameters":[{"description":"workspace ID","in":"path","name":"workspace_id","required":true,"schema":{"type":"string"}},{"description":"state ID","in":"path","name":"state_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.TerraformWorkspaceState"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get terraform state by ID","tags":["runners"]}},"/v1/terraform-workspaces/{workspace_id}/unlock":{"post":{"description":"Unlock a terraform workspace.\n","operationId":"UnlockTerraformWorkspace","parameters":[{"description":"workspace ID","in":"path","name":"workspace_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{}}},"description":"terraform workspace unlock ","required":true,"x-originalParamName":"body"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.TerraformWorkspaceState"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"unlock terraform workspace","tags":["runners","runners/runner"]}},"/v1/vcs/connection-callback":{"post":{"description":"Handle VCS connection callback for OAuth flow.\n","operationId":"CreateVCSConnectionCallback","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateConnectionCallbackRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.VCSConnection"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"summary":"public connection to create a vcs connection via a callback","tags":["vcs"]}},"/v1/vcs/connections":{"get":{"description":"Returns all VCS connections for the provided organization.\n","operationId":"GetOrgVCSConnections","parameters":[{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.VCSConnection"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get vcs connection for an org","tags":["vcs"]},"post":{"description":"Create a VCS connection for version control integration.\n","operationId":"CreateVCSConnection","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateConnectionRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.VCSConnection"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"create a vcs connection for Github","tags":["vcs"]}},"/v1/vcs/connections/{connection_id}":{"delete":{"description":"Delete a VCS connection.\n","operationId":"DeleteVCSConnection","parameters":[{"description":"Connection ID","in":"path","name":"connection_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Deletes a VCS connection","tags":["vcs"]},"get":{"description":"Return a VCS connection by id.\n","operationId":"GetVCSConnection","parameters":[{"description":"connection ID","in":"path","name":"connection_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.VCSConnection"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"returns a vcs connection for an org","tags":["vcs"]}},"/v1/vcs/connections/{connection_id}/branches":{"get":{"description":"Returns list of branches for the specified repository","operationId":"GetVCSConnectionRepoBranches","parameters":[{"description":"connection ID","in":"path","name":"connection_id","required":true,"schema":{"type":"string"}},{"description":"repository owner","in":"query","name":"owner","required":true,"schema":{"type":"string"}},{"description":"repository name","in":"query","name":"repo","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/service.Branch"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"List branches for a repository","tags":["vcs"]}},"/v1/vcs/connections/{connection_id}/check-status":{"get":{"description":"Check the real-time status of a VCS (GitHub App) connection.\n\nThis endpoint queries GitHub's API directly to fetch the current installation status, including:\n- Active/Suspended state\n- Account information\n- Permissions\n- Suspension details (if applicable)\n\n**Important**: This endpoint always fetches fresh data from GitHub (no caching) to ensure accurate status information.\n\n## Response Status Values\n\n- `active`: The GitHub App installation is active and functioning\n- `suspended`: The installation has been suspended (see `suspended_at` and `suspended_by` for details)\n- `unknown`: Unable to determine status (GitHub API error - see `error` field)\n\n## Use Cases\n\n- Troubleshooting connection issues\n- Monitoring installation health\n- Detecting suspended or revoked installations\n- Validating permissions before operations\n","operationId":"CheckVCSConnectionStatus","parameters":[{"description":"connection ID","in":"path","name":"connection_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.VCSConnectionStatusResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"check the real-time status of a VCS connection","tags":["vcs"]}},"/v1/vcs/connections/{connection_id}/repos":{"get":{"description":"Lists all repositories accessible by a GitHub App installation (VCS connection)","parameters":[{"description":"VCS Connection ID","in":"path","name":"connection_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.VCSConnectionReposResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"List VCS connection repositories","tags":["vcs"]}},"/v1/vcs/{vcs_connection_id}/events":{"post":{"description":"Writes incoming webhook events for a VCS connection","operationId":"WriteVCSEvent","parameters":[{"description":"VCS Connection ID","in":"path","name":"vcs_connection_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.VCSEvent"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"summary":"Write a VCS webhook event","tags":["vcs"]}},"/v1/workflows":{"get":{"operationId":"GetOrgWorkflows","parameters":[{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}},{"description":"exclude plan only workflows when set to false","in":"query","name":"planonly","schema":{"default":true,"type":"boolean"}},{"description":"filter by workflow type","in":"query","name":"type","schema":{"type":"string"}},{"description":"filter by finished state","in":"query","name":"finished","schema":{"type":"boolean"}},{"description":"filter workflows created after timestamp (RFC3339 format)","in":"query","name":"created_at_gte","schema":{"type":"string"}},{"description":"filter workflows created before timestamp (RFC3339 format)","in":"query","name":"created_at_lte","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.Workflow"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get all workflows for the org","tags":["installs"]}},"/v1/workflows/cancel":{"post":{"description":"Cancel multiple workflows by ID. Returns partial results if some fail.","operationId":"CancelWorkflows","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CancelWorkflowsRequest"}}},"description":"workflow IDs to cancel","required":true,"x-originalParamName":"body"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CancelWorkflowsResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"cancel multiple workflows","tags":["installs"]}},"/v1/workflows/pending-approvals":{"get":{"operationId":"GetOrgPendingApprovals","parameters":[{"description":"offset of results to return","in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"description":"limit of results to return","in":"query","name":"limit","schema":{"default":10,"type":"integer"}},{"description":"page number of results to return","in":"query","name":"page","schema":{"default":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.WorkflowStepApproval"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get all pending workflow step approvals for the org","tags":["installs"]}},"/v1/workflows/{workflow_id}":{"get":{"description":"Return a workflow.\n","operationId":"GetWorkflow","parameters":[{"description":"workflow ID","in":"path","name":"workflow_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Workflow"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get a workflow","tags":["installs"]},"patch":{"description":"Update a workflow configuration.\n","operationId":"UpdateWorkflow","parameters":[{"description":"workflow ID","in":"path","name":"workflow_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.UpdateWorkflowRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.Workflow"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"update a workflow","tags":["installs"]}},"/v1/workflows/{workflow_id}/cancel":{"post":{"description":"Cancel a running workflow execution.\n","operationId":"CancelWorkflow","parameters":[{"description":"workflow ID","in":"path","name":"workflow_id","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.EmptyResponse"}}},"description":"Accepted"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"cancel an ongoing workflow","tags":["installs"]}},"/v1/workflows/{workflow_id}/step-groups":{"get":{"description":"Get all step groups for a workflow, ordered by group index. Each group contains its nested steps.\n","operationId":"GetWorkflowStepGroups","parameters":[{"description":"workflow ID","in":"path","name":"workflow_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.WorkflowStepGroup"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get all step groups for a workflow","tags":["installs"]}},"/v1/workflows/{workflow_id}/step-groups/{step_group_id}":{"get":{"description":"Get a single workflow step group by ID, including its nested steps.\n","operationId":"GetWorkflowStepGroup","parameters":[{"description":"workflow ID","in":"path","name":"workflow_id","required":true,"schema":{"type":"string"}},{"description":"step group ID","in":"path","name":"step_group_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.WorkflowStepGroup"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get a workflow step group","tags":["installs"]}},"/v1/workflows/{workflow_id}/steps":{"get":{"description":"Return all steps for a workflow.\n","operationId":"GetWorkflowSteps","parameters":[{"description":"workflow ID","in":"path","name":"workflow_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app.WorkflowStep"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get all of the steps for a given workflow","tags":["installs"]}},"/v1/workflows/{workflow_id}/steps/{step_id}":{"get":{"description":"Return a single workflow step.\n","operationId":"GetWorkflowStep","parameters":[{"description":"workflow id","in":"path","name":"workflow_id","required":true,"schema":{"type":"string"}},{"description":"step id","in":"path","name":"step_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.WorkflowStep"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get a workflow step","tags":["installs"]}},"/v1/workflows/{workflow_id}/steps/{step_id}/approvals/{approval_id}":{"get":{"description":"Return a workflow step approval by id.\n","operationId":"GetWorkflowStepApproval","parameters":[{"description":"workflow id","in":"path","name":"workflow_id","required":true,"schema":{"type":"string"}},{"description":"step id","in":"path","name":"step_id","required":true,"schema":{"type":"string"}},{"description":"approval id","in":"path","name":"approval_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.WorkflowStepApproval"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get an workflow step approval","tags":["installs"]}},"/v1/workflows/{workflow_id}/steps/{step_id}/approvals/{approval_id}/contents":{"get":{"description":"Return the contents of a json plan for an approval (compressed).\n","operationId":"GetWorkflowStepApprovalContents","parameters":[{"description":"workflow id","in":"path","name":"workflow_id","required":true,"schema":{"type":"string"}},{"description":"step id","in":"path","name":"step_id","required":true,"schema":{"type":"string"}},{"description":"approval id","in":"path","name":"approval_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"OK","headers":{"Content-Encoding":{"description":"gzip","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"get a workflow step approval contents","tags":["installs"]}},"/v1/workflows/{workflow_id}/steps/{step_id}/approvals/{approval_id}/response":{"post":{"description":"Create a response for an approval for an action workflow step.\n","operationId":"CreateWorkflowStepApprovalResponse","parameters":[{"description":"workflow id","in":"path","name":"workflow_id","required":true,"schema":{"type":"string"}},{"description":"step id","in":"path","name":"step_id","required":true,"schema":{"type":"string"}},{"description":"approval id","in":"path","name":"approval_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateWorkflowStepApprovalResponseRequest"}}},"description":"Input","required":true,"x-originalParamName":"req"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CreateWorkflowStepApprovalResponseResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"Create an approval response for a workflow step.","tags":["installs"]}},"/v1/workflows/{workflow_id}/steps/{step_id}/await":{"get":{"description":"Long-poll for a workflow step to complete. Blocks until the step finishes or a 60-second timeout is reached.\n","operationId":"AwaitWorkflowStep","parameters":[{"description":"workflow id","in":"path","name":"workflow_id","required":true,"schema":{"type":"string"}},{"description":"step id","in":"path","name":"step_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.WorkflowStep"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"408":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Request Timeout"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"long-poll for workflow step completion","tags":["installs"]}},"/v1/workflows/{workflow_id}/steps/{step_id}/cancel":{"post":{"operationId":"CancelWorkflowStep","parameters":[{"description":"workflow ID","in":"path","name":"workflow_id","required":true,"schema":{"type":"string"}},{"description":"step ID","in":"path","name":"step_id","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.CancelWorkflowStepResponse"}}},"description":"Accepted"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"cancel an in-progress workflow step","tags":["installs"]}},"/v1/workflows/{workflow_id}/steps/{step_id}/retry":{"post":{"description":"Retry a workflow execution by id.\n","operationId":"RetryWorkflowStep","parameters":[{"description":"workflow ID","in":"path","name":"workflow_id","required":true,"schema":{"type":"string"}},{"description":"step ID","in":"path","name":"step_id","required":true,"schema":{"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.RetryWorkflowStepResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"retry a failed or awaiting-approval workflow step","tags":["installs"]}},"/v1/workflows/{workflow_id}/steps/{step_id}/skip":{"post":{"operationId":"SkipWorkflowStep","parameters":[{"description":"workflow ID","in":"path","name":"workflow_id","required":true,"schema":{"type":"string"}},{"description":"step ID","in":"path","name":"step_id","required":true,"schema":{"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/service.SkipWorkflowStepResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stderr.ErrResponse"}}},"description":"Internal Server Error"}},"security":[{"APIKey":[]},{"OrgID":[]}],"summary":"skip a failed workflow step and continue the workflow","tags":["installs"]}}},"servers":[{"url":"https://api.nuon.co/"}],"tags":[{"description":"orgs","name":"orgs"},{"description":"general","name":"general"},{"description":"policy-reports","name":"policy-reports"},{"description":"queues","name":"queues"},{"description":"runners","name":"runners"},{"description":"runners/runner","name":"runners/runner"},{"description":"actions","name":"actions"},{"description":"vcs","name":"vcs"},{"description":"apps","name":"apps"},{"description":"components","name":"components"},{"description":"installs","name":"installs"},{"description":"auth","name":"auth"},{"description":"accounts","name":"accounts"},{"description":"onboarding","name":"onboarding"},{"description":"actions/runner","name":"actions/runner"}]}