{"openapi":"3.1.0","info":{"title":"Akua API","version":"1.0.0","description":"Public API for managing Akua workspaces, clusters, products, and installs.\n\nAuthenticate with a workspace API token via the `Authorization: Bearer sk_akua_...` header.\n\nA workspace-owned token implies its workspace. Broad tokens select the active workspace via the optional `Akua-Context` header.","contact":{"name":"Akua API support","email":"support@akua.dev","url":"https://akua.dev/docs"}},"servers":[{"url":"https://api.akua.dev/v1","description":"Production"}],"tags":[{"name":"Auth","description":"Authentication and token management."},{"name":"Agents","description":"Agent identities and configuration."},{"name":"Agent sessions","description":"Durable agent conversations and tasks."},{"name":"Agent turns","description":"Submitted agent work and event emission."},{"name":"Agent events","description":"Normalized agent event history and streams."},{"name":"Custom domains","description":"Workspace custom domains and routing targets."},{"name":"Cloudflare","description":"Cloudflare account credentials and gateway control."},{"name":"Clusters","description":"Kubernetes clusters and cluster access operations."},{"name":"ComputeConfigs","description":"Workspace compute provider configurations."},{"name":"Entitlements","description":"Effective workspace capabilities and limits."},{"name":"Dashboards","description":"Dashboard and widget resources."},{"name":"Installs","description":"Product installation and render operations."},{"name":"Machines","description":"Compute machines and lifecycle events."},{"name":"Notifications","description":"User notification state."},{"name":"Offer Channels","description":"Private offer channels and policy versions."},{"name":"Offers","description":"Marketplace offers and redemption tracking."},{"name":"Operations","description":"Long-running operation status and controls."},{"name":"Order Drafts","description":"Draft checkout orders and checkout sessions."},{"name":"Organizations","description":"Organizations, memberships, and managed workspaces."},{"name":"Packages","description":"Software packages, versions, and input schemas."},{"name":"Products","description":"Marketplace product catalog resources."},{"name":"Preview hostnames","description":"Install preview hostnames and routing state."},{"name":"Quotas","description":"Workspace quota limits and usage."},{"name":"Regions","description":"Available deployment regions."},{"name":"Registry","description":"Container registry credentials and repositories."},{"name":"Repository change requests","description":"Fork-backed repository change reviews and lifecycle actions."},{"name":"Repositories","description":"Source repositories available to the workspace."},{"name":"Secrets","description":"Workspace secrets and secret versions."},{"name":"Snippets","description":"Reusable snippets and snippet runs."},{"name":"Workspace subdomains","description":"Workspace subdomain identity."},{"name":"Workspaces","description":"Workspace resources, members, and billing state."}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","description":"workspace API token (sk_akua_...) or OAuth2 JWT. Create tokens at https://akua.dev/developers/api-tokens"}},"schemas":{"ComputeMachine":{"type":"object","properties":{"provider_id":{"type":"string","example":"compute://abc123"},"node_name":{"type":"string","example":"worker-xl8r2"},"status":{"type":"string","example":"provisioning"}},"required":["provider_id","node_name","status"]},"ApiErrorResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiErrorEntry"}},"result":{"type":"object","properties":{},"description":"Always empty for error responses"}},"required":["success","errors","result"]},"ApiErrorEntry":{"type":"object","properties":{"code":{"type":"integer","example":7002,"description":"Machine-readable error code"},"message":{"type":"string","example":"Resource not found","description":"Human-readable error message"},"path":{"type":"array","items":{"type":"string"},"example":["body","name"],"description":"Field path that caused the error, when applicable"},"metadata":{"type":"object","additionalProperties":{"type":"string"}}},"required":["code","message"]},"ComputeError":{"type":"object","properties":{"type":{"type":"string","example":"InsufficientCapacity","description":"Machine-readable error type (e.g., InsufficientCapacity, NodeClaimNotFound)"},"message":{"type":"string","example":"cpx31 out of stock in fsn1"}},"required":["type","message"]},"InstanceType":{"type":"object","properties":{"name":{"type":"string","example":"cpx31"},"arch":{"type":"string","example":"amd64"},"cpu":{"type":"number","example":4},"memory_mib":{"type":"number","example":8192},"storage_mib":{"type":"number","example":163840},"price_per_hour":{"type":"number","example":0.0208},"available":{"type":"boolean","example":true},"zone":{"type":"string","example":"fsn1"},"capacity_type":{"type":"string","example":"on-demand"}},"required":["name","arch","cpu","memory_mib","storage_mib","price_per_hour","available"]},"DriftResult":{"type":"object","properties":{"drifted":{"type":"boolean"},"reason":{"type":"string"}},"required":["drifted"]},"Suspension":{"type":"object","properties":{"id":{"type":"string"},"workspace_id":{"type":"string"},"cluster_id":{"type":"string"},"server_type":{"type":"string","example":"cpx31"},"location":{"type":"string","example":"fsn1"},"hostname":{"type":"string","example":"node-xl8r2abc"},"reason":{"type":"string","enum":["manual","downgrade"]},"provider_suspend_data":{"type":"object","properties":{"provider":{"type":"string"},"snapshot_id":{"type":"number"},"size_gb":{"type":"number"}},"required":["provider","snapshot_id","size_gb"]},"monthly_cost_cents":{"type":"number"},"expires_at":{"type":"number"},"created_at":{"type":"number"}},"required":["id","workspace_id","cluster_id","server_type","location","hostname","reason","provider_suspend_data","monthly_cost_cents","expires_at","created_at"]},"ComputeConfigList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ComputeConfig"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"ComputeConfig":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"provider":{"type":"string","example":"hcloud"},"provider_config":{"type":"object","properties":{"provider":{"type":"string"},"region":{"type":"string"},"image":{"type":"string"},"machine_type_filter":{"type":"string","nullable":true,"description":"Glob pattern to filter instance types (e.g., \"cx*\", \"cpx*\")"}},"required":["provider","region","image","machine_type_filter"]},"secret_id":{"type":"string","nullable":true},"created_at":{"type":"number"}},"required":["id","name","provider","provider_config","secret_id","created_at"]},"CreatedComputeConfig":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]},"SnippetList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Snippet"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"Snippet":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54,"example":"snp_j572abc123def456"},"html_url":{"type":"string","maxLength":2048,"format":"uri","description":"Absolute dashboard URL for this resource. OUTPUT_ONLY.","example":"https://akua.dev/dashboards/snippets/snp_j572abc123def456"},"name":{"type":"string","example":"Cluster Resource Audit"},"description":{"type":"string","nullable":true,"example":"Checks resource requests and limits"},"code":{"type":"string","example":"async () => { ... }","description":"Async JavaScript function body executed in a sandboxed runtime. Has access to platform.request() for API calls."},"display_type":{"type":"string","enum":["table","stat","json","logs"],"description":"Controls how the snippet result is rendered in dashboard widgets","example":"table"},"visibility":{"type":"string","enum":["workspace","session"],"description":"Whether the snippet is reusable workspace state or scoped to an agent session."},"origin":{"type":"string","enum":["user","agent","system"],"description":"Who authored the snippet descriptor."},"agent_session_id":{"type":"string","nullable":true,"minLength":1,"maxLength":54},"agent_turn_id":{"type":"string","nullable":true,"minLength":1,"maxLength":54},"purpose":{"type":"string","enum":["general","prepared_action","reactive_read","widget"]},"workspace_id":{"type":"string","minLength":1,"maxLength":53,"example":"ws_j572abc123def456"},"created_by":{"type":"string","description":"User ID of the snippet creator"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","html_url","name","description","code","display_type","visibility","origin","agent_session_id","agent_turn_id","purpose","workspace_id","created_by","created_at","updated_at","etag"]},"SnippetUsageList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SnippetUsage"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"SnippetUsage":{"type":"object","properties":{"snippet_id":{"type":"string","minLength":1,"maxLength":54},"dashboard_count":{"type":"integer","minimum":0},"dashboards":{"type":"array","items":{"$ref":"#/components/schemas/SnippetUsageDashboard"}}},"required":["snippet_id","dashboard_count","dashboards"]},"SnippetUsageDashboard":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":55},"name":{"type":"string"},"description":{"type":"string","nullable":true},"workspace_id":{"type":"string","minLength":1,"maxLength":53}},"required":["id","name","description","workspace_id"]},"ExecuteSnippetResponse":{"type":"object","properties":{"result":{"nullable":true},"error":{"type":"string"},"stats":{"type":"object","properties":{"cpu_time_ms":{"type":"number"},"wall_time_ms":{"type":"number"},"heap_used_bytes":{"type":"number"}},"required":["cpu_time_ms","wall_time_ms","heap_used_bytes"]}},"required":["stats"]},"ExecuteSnippetBody":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":50000,"description":"Async JavaScript function body. Executed in a sandboxed runtime with access to platform.request()."}},"required":["code"],"additionalProperties":false},"SnippetRun":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"snippet_id":{"type":"string","minLength":1,"maxLength":54},"agent_session_id":{"type":"string","nullable":true,"minLength":1,"maxLength":54},"agent_turn_id":{"type":"string","nullable":true,"minLength":1,"maxLength":54},"state":{"type":"string","enum":["succeeded","failed","timed_out"],"description":"Terminal run state in past participle form."},"overrides":{"type":"object","additionalProperties":{"nullable":true}},"output":{"nullable":true},"error":{"$ref":"#/components/schemas/SnippetRunError"},"duration_ms":{"type":"number"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","snippet_id","agent_session_id","agent_turn_id","state","duration_ms","created_at","etag"]},"SnippetRunError":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]},"CreateSnippetRunBody":{"type":"object","properties":{"overrides":{"type":"object","additionalProperties":{"nullable":true}},"agent_turn_id":{"type":"string","minLength":1,"maxLength":54}},"additionalProperties":false},"SnippetRunList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SnippetRun"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"DashboardList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Dashboard"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"Dashboard":{"type":"object","properties":{"id":{"type":"string","example":"j572abc123def456"},"html_url":{"type":"string","maxLength":2048,"format":"uri","description":"Absolute dashboard URL for this resource. OUTPUT_ONLY.","example":"https://akua.dev/dashboards/dash_j572abc123def456"},"name":{"type":"string","example":"Cluster Overview"},"description":{"type":"string","nullable":true,"description":"Optional dashboard description"},"workspace_id":{"type":"string"},"widgets":{"type":"array","items":{"$ref":"#/components/schemas/Widget"},"description":"Output-only denormalized widget list for dashboard read models."},"created_by":{"type":"string","description":"User ID of the dashboard creator"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","html_url","name","description","workspace_id","widgets","created_by","created_at","updated_at","etag"]},"Widget":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"dashboard_id":{"type":"string","minLength":1,"maxLength":55},"widget_type":{"type":"string","enum":["snippet"],"description":"Dashboard widget descriptor type. `snippet` is the first concrete type; future agent-authored widgets extend this field."},"snippet_id":{"type":"string","minLength":1,"maxLength":54},"position":{"type":"integer"},"col_span":{"anyOf":[{"type":"number","enum":[1]},{"type":"number","enum":[2]},{"type":"number","enum":[3]},{"type":"number","enum":[4]}]},"display_type":{"type":"string","nullable":true,"enum":["table","stat","json","logs",null],"description":"Controls how the snippet result is rendered in dashboard widgets"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","dashboard_id","widget_type","snippet_id","position","col_span","display_type","created_at","updated_at","etag"]},"WidgetList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Widget"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"OperationEnvelope":{"type":"object","properties":{"operation_id":{"type":"string","minLength":1,"maxLength":53}},"required":["operation_id"]},"MachineList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Machine"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"Machine":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"cluster_id":{"type":"string","minLength":1,"maxLength":54},"compute_config_id":{"type":"string","minLength":1,"maxLength":54},"provider_id":{"type":"string","description":"Provider URI identifier in canonical form (for example, compute://hcloud/server-1234).","example":"compute://hcloud/server-1234"},"provider_resource":{"type":"object","properties":{"identity_kind":{"type":"string","enum":["recyclable","persistent"]},"public_ip":{"type":"string","nullable":true},"floating_ip":{"type":"object","properties":{"id":{"type":"string"},"ipv4":{"type":"string"}},"required":["id","ipv4"]}},"required":["identity_kind","public_ip"]},"name":{"type":"string"},"state":{"type":"string","enum":["ACTIVE","PROVISIONING","SUSPENDING","SUSPENDED","RESUMING","DELETING"],"description":"Machine lifecycle state."},"reconciling":{"type":"boolean"},"current_suspension":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":54},"snapshot_ref":{"type":"object","properties":{"provider":{"type":"string","enum":["hcloud"]},"snapshot_id":{"type":"integer"},"size_gb":{"type":"number"}},"required":["provider","snapshot_id","size_gb"]},"expires_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"monthly_cost_cents":{"type":"integer"},"reason":{"type":"string","enum":["manual","downgrade"]}},"required":["event_id","snapshot_ref","expires_at","monthly_cost_cents","reason"]},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","workspace_id","cluster_id","compute_config_id","provider_id","provider_resource","state","reconciling","created_at","updated_at","etag"]},"SuspendMachineBody":{"type":"object","properties":{"reason":{"type":"string","enum":["manual","downgrade"]}},"additionalProperties":false},"ResumeMachineBody":{"type":"object","properties":{},"additionalProperties":false},"DriftReport":{"type":"object","properties":{"id":{"type":"string","description":"Drift report ID."},"machine_id":{"type":"string","minLength":1,"maxLength":54},"state":{"type":"string","enum":["in_sync","drifted"],"description":"Machine drift comparison state."},"delta":{"type":"object","additionalProperties":{"nullable":true}},"provider_snapshot":{"type":"object","properties":{"provider":{"type":"string"},"raw_attrs":{"type":"object","additionalProperties":{"nullable":true}}},"required":["provider","raw_attrs"]},"etag":{"type":"string"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"started_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"expires_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["id","machine_id","state","etag","created_at","started_at","expires_at"]},"DriftReportList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DriftReport"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"SuspensionEventList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SuspensionEvent"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"SuspensionEvent":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"machine_id":{"type":"string","minLength":1,"maxLength":54},"state":{"type":"string","enum":["in_progress","completed","resumed","expired"],"description":"Suspension-event lifecycle state."},"started_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"resumed_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"expires_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"snapshot_ref":{"type":"object","properties":{"provider":{"type":"string","enum":["hcloud"]},"snapshot_id":{"type":"integer"},"size_gb":{"type":"number"}},"required":["provider","snapshot_id","size_gb"]},"monthly_cost_cents":{"type":"integer"},"total_cost_cents":{"type":"integer"},"reason":{"type":"string","enum":["manual","downgrade"]},"etag":{"type":"string"}},"required":["id","machine_id","state","started_at","expires_at","snapshot_ref","monthly_cost_cents","reason","etag"]},"CredentialScope":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["system"],"description":"Use system-managed provider credentials."}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["byom"]},"secret_id":{"type":"string","minLength":1,"maxLength":54},"secret_version_id":{"type":"string","minLength":1,"maxLength":55}},"required":["kind","secret_id"],"additionalProperties":false}]},"ProductList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Product"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"Product":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":55,"example":"prod_j572abc123def456"},"html_url":{"type":"string","maxLength":2048,"format":"uri","description":"Absolute dashboard URL for this resource. OUTPUT_ONLY.","example":"https://akua.dev/products/prod_j572abc123def456"},"name":{"type":"string","example":"PostgreSQL Managed"},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"package":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54,"example":"pkg_j572abc123def456"},"version_pin":{"$ref":"#/components/schemas/PackageVersionPin"},"default_version_id":{"type":"string","nullable":true,"minLength":1,"maxLength":55,"description":"Concrete PackageVersion currently resolved by the version pin, or null when latest has no published version yet."}},"required":["id","version_pin","default_version_id"],"additionalProperties":false,"description":"Reference to the Package backing this product. Fetch full details via `GET /v1/packages/{id}`."},"custom_image":{"type":"string","description":"Custom display image URL — overrides the package logo on customer-facing pages"},"custom_description":{"type":"string","description":"Custom display description — overrides the package description"},"marketplace":{"$ref":"#/components/schemas/ProductMarketplaceState"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"},"state":{"type":"string","enum":["active","archived"],"description":"Product lifecycle state."},"archived_at":{"type":"integer","minimum":0,"description":"When the product was archived, expressed as Unix seconds since epoch."},"archive_reason":{"type":"string","description":"Reason supplied by the seller when archiving."}},"required":["id","html_url","name","workspace_id","package","marketplace","created_at","updated_at","etag","state"]},"PackageVersionPin":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["latest"]}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["pinned"]},"version":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9]\\d*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\+([0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?$","example":"1.2.3"}},"required":["kind","version"],"additionalProperties":false}]},"ProductMarketplaceState":{"type":"object","nullable":true,"properties":{"published":{"type":"boolean","description":"Whether the product is publicly visible on the marketplace"}},"required":["published"],"additionalProperties":false,"description":"Marketplace listing configuration. When null the product is not listed."},"DashboardProductList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DashboardProduct"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"DashboardProduct":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":55,"example":"prod_j572abc123def456"},"html_url":{"type":"string","maxLength":2048,"format":"uri","description":"Absolute dashboard URL for this resource. OUTPUT_ONLY.","example":"https://akua.dev/products/prod_j572abc123def456"},"name":{"type":"string","example":"PostgreSQL Managed"},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"package":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54,"example":"pkg_j572abc123def456"},"version_pin":{"$ref":"#/components/schemas/PackageVersionPin"},"default_version_id":{"type":"string","nullable":true,"minLength":1,"maxLength":55,"description":"Concrete PackageVersion currently resolved by the version pin, or null when latest has no published version yet."}},"required":["id","version_pin","default_version_id"],"additionalProperties":false,"description":"Reference to the Package backing this product. Fetch full details via `GET /v1/packages/{id}`."},"custom_image":{"type":"string","description":"Custom display image URL — overrides the package logo on dashboard catalog rows"},"marketplace":{"$ref":"#/components/schemas/ProductMarketplaceState"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"},"state":{"type":"string","enum":["active","archived"],"description":"Product lifecycle state."},"archived_at":{"type":"integer","minimum":0,"description":"When the product was archived, expressed as Unix seconds since epoch."},"archive_reason":{"type":"string","description":"Reason supplied by the seller when archiving."},"cluster_count":{"type":"integer","minimum":0},"region_count":{"type":"integer","minimum":0},"offer_count":{"type":"integer","minimum":0},"install_count":{"type":"integer","minimum":0}},"required":["id","html_url","name","workspace_id","package","marketplace","created_at","updated_at","etag","state","cluster_count","region_count","offer_count","install_count"]},"MarketplaceProductList":{"type":"array","items":{"$ref":"#/components/schemas/MarketplaceProduct"}},"MarketplaceProduct":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":50},"name":{"type":"string"},"regions":{"type":"array","items":{"$ref":"#/components/schemas/MarketplaceRegion"}},"hasStripe":{"type":"boolean"},"marketplace":{"$ref":"#/components/schemas/MarketplaceProductState"},"settings":{"$ref":"#/components/schemas/MarketplaceProductSettings"},"visibleOffer":{"$ref":"#/components/schemas/MarketplaceVisibleOffer"}},"required":["id","name","regions","hasStripe"]},"MarketplaceRegion":{"type":"object","properties":{"_id":{"type":"string","minLength":1,"maxLength":50},"_creationTime":{"type":"number"},"workspaceId":{"type":"string","minLength":1,"maxLength":50},"name":{"type":"string"},"icon":{"type":"string"}},"required":["_id","_creationTime","workspaceId","name"]},"MarketplaceProductState":{"type":"object","properties":{"published":{"type":"boolean"},"externalUrl":{"type":"string"}},"required":["published"]},"MarketplaceProductSettings":{"type":"object","properties":{"customImage":{"type":"string"},"customDescription":{"type":"string"},"showSources":{"type":"boolean"}}},"MarketplaceVisibleOffer":{"type":"object","properties":{"shortHash":{"type":"string"}},"required":["shortHash"]},"MarketplaceProductDetail":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":50},"name":{"type":"string"},"valuesSchema":{"type":"string"},"regions":{"type":"array","items":{"$ref":"#/components/schemas/MarketplaceRegion"}},"pricing":{"type":"array","items":{"$ref":"#/components/schemas/MarketplaceProductPricing"}},"isOwner":{"type":"boolean"},"settings":{"$ref":"#/components/schemas/MarketplaceProductSettings"},"stripePriceIds":{"type":"array","items":{"type":"string"}},"marketplace":{"$ref":"#/components/schemas/MarketplaceProductState"},"visibleOffer":{"$ref":"#/components/schemas/MarketplaceVisibleOffer"}},"required":["id","name","regions","pricing","isOwner","settings","stripePriceIds"]},"MarketplaceProductPricing":{"type":"object","properties":{"price":{"type":"number"},"recurring":{"type":"string"},"currency":{"type":"string"}},"required":["price","currency"]},"CreateProductBody":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":64,"example":"PostgreSQL Managed"},"package_id":{"type":"string","minLength":1,"maxLength":54},"package_version_pin":{"$ref":"#/components/schemas/PackageVersionPin"},"custom_image":{"type":"string","format":"uri","description":"Custom display image URL — overrides the package logo"},"custom_description":{"type":"string","maxLength":500,"description":"Custom display description — overrides the package description"},"marketplace":{"$ref":"#/components/schemas/ProductMarketplace"}},"required":["name","package_id","package_version_pin"],"additionalProperties":false},"ProductMarketplace":{"type":"object","properties":{"published":{"type":"boolean","description":"Whether the product is publicly visible on the marketplace"}},"required":["published"],"additionalProperties":false,"description":"Marketplace listing config. Omit to keep the product unlisted."},"UpdateProductBody":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":64,"example":"PostgreSQL Managed"},"package_version_pin":{"$ref":"#/components/schemas/PackageVersionPin"},"custom_image":{"type":"string","nullable":true,"format":"uri"},"custom_description":{"type":"string","nullable":true,"maxLength":500},"marketplace":{"$ref":"#/components/schemas/ProductMarketplace"}},"additionalProperties":false},"ArchiveProductBody":{"type":"object","properties":{"cascade_offers":{"type":"boolean","default":false},"archive_reason":{"type":"string","maxLength":500}},"additionalProperties":false},"OfferChannel":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"authority_workspace_id":{"type":"string","minLength":1,"maxLength":53},"display_name":{"type":"string","minLength":1,"maxLength":120},"partner_organization_id":{"type":"string","minLength":1,"maxLength":54},"product_scope":{"$ref":"#/components/schemas/OfferChannelProductScope"},"state":{"type":"string","enum":["active","archived"]},"commercial_authority":{"type":"string","enum":["platform","workspace"]},"active_channel_policy_id":{"type":"string","minLength":1,"maxLength":56},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","workspace_id","display_name","product_scope","state","commercial_authority","created_at","etag"],"x-platform-visibility":"TRUSTED_PARTNER"},"OfferChannelProductScope":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["all_products"]}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["selected_products"]},"product_ids":{"type":"array","items":{"type":"string","minLength":1,"maxLength":55},"maxItems":100}},"required":["type","product_ids"]}],"x-platform-visibility":"TRUSTED_PARTNER"},"CreateOfferChannelBody":{"type":"object","properties":{"workspace_id":{"type":"string","minLength":1,"maxLength":53},"display_name":{"type":"string","minLength":1,"maxLength":120},"partner_organization_id":{"type":"string","minLength":1,"maxLength":54},"product_scope":{"$ref":"#/components/schemas/OfferChannelProductScope"},"commercial_authority":{"type":"string","enum":["platform","workspace"],"default":"platform"}},"required":["display_name","product_scope"],"additionalProperties":false,"x-platform-visibility":"TRUSTED_PARTNER"},"OfferChannelList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OfferChannelListItem"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"],"x-platform-visibility":"TRUSTED_PARTNER"},"OfferChannelListItem":{"allOf":[{"$ref":"#/components/schemas/OfferChannel"},{"type":"object","properties":{"active_policy":{"$ref":"#/components/schemas/ChannelPolicy"}}}],"x-platform-visibility":"TRUSTED_PARTNER"},"ChannelPolicy":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":56},"offer_channel_id":{"type":"string","minLength":1,"maxLength":54},"version":{"type":"integer","minimum":0,"exclusiveMinimum":true},"state":{"type":"string","enum":["draft","approved","active","archived"]},"policy":{"$ref":"#/components/schemas/ChannelPolicyPayload"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"approved_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"activated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","offer_channel_id","version","state","policy","created_at","etag"],"x-platform-visibility":"TRUSTED_PARTNER"},"ChannelPolicyPayload":{"type":"object","properties":{"pricing_policy":{"type":"object","properties":{"type":{"type":"string","enum":["fixed_or_range"]},"currency":{"type":"string","enum":["eur","usd"]},"default_unit_amount":{"type":"integer","minimum":0},"minimum_unit_amount":{"type":"integer","minimum":0},"maximum_unit_amount":{"type":"integer","minimum":0},"interval":{"$ref":"#/components/schemas/PricingInterval"}},"required":["type","currency","default_unit_amount","minimum_unit_amount","maximum_unit_amount","interval"],"additionalProperties":false},"settlement_policy":{"type":"object","properties":{"type":{"type":"string","enum":["platform_resolved"]},"allowed_commercial_modes":{"type":"array","items":{"$ref":"#/components/schemas/CommercialMode"},"minItems":1}},"required":["type","allowed_commercial_modes"],"additionalProperties":false},"approval_policy":{"type":"object","properties":{"paid_offers":{"type":"string","enum":["requires_platform_approval","auto_approved"]},"non_billable_test_offers":{"type":"string","enum":["requires_platform_approval","auto_approved"]}},"required":["paid_offers","non_billable_test_offers"],"additionalProperties":false},"trusted_testing_policy":{"type":"object","properties":{"stripe_checkout_environment":{"type":"string","enum":["sandbox"]}},"required":["stripe_checkout_environment"],"additionalProperties":false},"support_access_policy":{"$ref":"#/components/schemas/OfferSupportScope"}},"required":["pricing_policy","settlement_policy","approval_policy","support_access_policy"],"additionalProperties":false,"x-platform-visibility":"TRUSTED_PARTNER"},"PricingInterval":{"type":"string","enum":["month","year"]},"CommercialMode":{"type":"string","enum":["paid","non_billable_test"],"description":"Customer commercial path requested for an offer. `paid` routes through checkout when policy requires it; `non_billable_test` creates a non-billable test offer when policy allows it."},"OfferSupportScope":{"type":"object","properties":{"type":{"type":"string","enum":["scoped_support_relationship"]},"visibility":{"type":"array","items":{"type":"string","enum":["install_state","app_urls"]},"maxItems":20}},"required":["type","visibility"],"additionalProperties":false},"CreateChannelPolicyBody":{"type":"object","properties":{"offer_channel_id":{"type":"string","minLength":1,"maxLength":54},"policy":{"$ref":"#/components/schemas/ChannelPolicyPayload"}},"required":["offer_channel_id","policy"],"additionalProperties":false,"x-platform-visibility":"TRUSTED_PARTNER"},"ChannelPolicyList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ChannelPolicy"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"],"x-platform-visibility":"TRUSTED_PARTNER"},"OfferList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Offer"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"Offer":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":56,"description":"Offer ID"},"short_hash":{"type":"string","description":"8-char base62 code that appears in the customer-clicked URL `/i/<short_hash>`","example":"aB3xK9pQ"},"workspace_id":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"target_workspace_id":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace that receives the offer outcome when visible to the caller"},"created_by":{"type":"string","description":"User ID of the seller who issued the offer"},"product_id":{"type":"string","minLength":1,"maxLength":55,"description":"Product ID"},"package_id":{"type":"string","minLength":1,"maxLength":54,"description":"Package ID"},"package_version_id":{"type":"string","minLength":1,"maxLength":55,"description":"Package version ID — pinned at create time"},"input_schema":{"type":"object","additionalProperties":{"nullable":true},"description":"JSON Schema 2020-12 with x-ui extensions for the pinned package version. Present on customer resolve responses so the install wizard can render the configure step."},"allowed_emails":{"type":"array","items":{"type":"string"},"description":"Empty / omitted = anyone authed can claim. Non-empty = the customer's verified email must match. Only returned to authed callers."},"field_values":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"nullable":true,"description":"Pre-fill value for this schema property"},"locked":{"type":"boolean","description":"When true the customer cannot override; submit ignores client value"}},"required":["value","locked"]},"description":"Seller pre-fills keyed by package input-schema property name. Only returned to authed callers whose email matches the allowlist."},"tier":{"type":"string","description":"Suggested billing tier"},"region_id":{"type":"string","minLength":1,"maxLength":54,"description":"Region pin"},"cluster_id":{"type":"string","minLength":1,"maxLength":54,"description":"Cluster pin"},"offer_channel_id":{"type":"string","minLength":1,"maxLength":54,"description":"Offer Channel that resolved private-offer policy for this offer"},"commercial_mode":{"$ref":"#/components/schemas/CommercialMode"},"approval_state":{"$ref":"#/components/schemas/OfferApprovalState"},"requested_policy_snapshot":{"$ref":"#/components/schemas/OfferPolicySnapshot"},"approved_policy_snapshot":{"$ref":"#/components/schemas/OfferPolicySnapshot"},"notes":{"type":"string"},"expires_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"max_uses":{"type":"integer","minimum":0,"exclusiveMinimum":true},"order_ttl_minutes":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":1440,"description":"Per-redemption order TTL in minutes. Defaults to 120; capped at 1440 (24h)."},"used_count":{"type":"integer","minimum":0},"archived_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"status":{"$ref":"#/components/schemas/OfferStatus"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"},"product_name":{"type":"string","description":"Display name of the offered product"},"image_url":{"type":"string","description":"Logo or icon URL for the customer landing page"},"seller_name":{"type":"string","description":"Display name of the seller who issued this offer"}},"required":["id","short_hash","package_id","package_version_id","status","created_at"]},"OfferApprovalState":{"type":"string","enum":["not_required","pending","approved","rejected"]},"OfferPolicySnapshot":{"type":"object","properties":{"offer_channel_id":{"type":"string","minLength":1,"maxLength":54},"channel_policy_id":{"type":"string","minLength":1,"maxLength":56},"channel_policy_version":{"type":"integer","minimum":0,"exclusiveMinimum":true},"commercial_mode":{"$ref":"#/components/schemas/CommercialMode"},"approval_required":{"type":"boolean"},"checkout_required":{"type":"boolean"},"approval_mode":{"type":"string","enum":["requires_platform_approval","auto_approved_within_policy"],"x-platform-visibility":"TRUSTED_PARTNER"},"checkout_environment":{"type":"string","enum":["none","stripe_live","stripe_sandbox"],"x-platform-visibility":"TRUSTED_PARTNER"},"pricing_bounds":{"$ref":"#/components/schemas/OfferPricingBounds"},"pricing_summary":{"$ref":"#/components/schemas/OfferPricingSummary"},"support_scope":{"$ref":"#/components/schemas/OfferSupportScope"},"blocking_reasons":{"type":"array","items":{"type":"string"},"default":[]}},"required":["offer_channel_id","channel_policy_id","channel_policy_version","commercial_mode","approval_required","checkout_required","support_scope"]},"OfferPricingBounds":{"type":"object","properties":{"currency":{"type":"string","enum":["eur","usd"]},"default_unit_amount":{"type":"integer","minimum":0},"minimum_unit_amount":{"type":"integer","minimum":0},"maximum_unit_amount":{"type":"integer","minimum":0},"interval":{"$ref":"#/components/schemas/PricingInterval"}},"required":["currency","default_unit_amount","minimum_unit_amount","maximum_unit_amount","interval"],"additionalProperties":false,"x-platform-visibility":"TRUSTED_PARTNER"},"OfferPricingSummary":{"type":"object","properties":{"currency":{"type":"string","enum":["eur","usd"]},"unit_amount":{"type":"integer","minimum":0},"interval":{"$ref":"#/components/schemas/PricingInterval"},"source":{"type":"string","enum":["channel_policy","request"]}},"required":["currency","unit_amount","interval","source"]},"OfferStatus":{"type":"string","enum":["active","archived","expired","redeemed"],"description":"Computed lifecycle status — never set directly; derived from row state."},"PreviewOfferBody":{"type":"object","properties":{"package_version_id":{"type":"string","minLength":1,"maxLength":55,"description":"Package version ID to preview against. Preview requires a concrete package version because no offer row is created to store a resolved product pin."},"product_id":{"type":"string","minLength":1,"maxLength":55,"description":"Product ID for channel policy attribution."},"target_workspace_id":{"type":"string","minLength":1,"maxLength":53,"description":"Existing customer workspace used for preview context."},"allowed_emails":{"type":"array","items":{"type":"string","maxLength":254,"format":"email"},"maxItems":50,"description":"Verified customer email allowlist used for preview context."},"field_values":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"nullable":true,"description":"Pre-fill value for this schema property"},"locked":{"type":"boolean","description":"When true the customer cannot override; submit ignores client value"}},"required":["value","locked"]},"description":"Package input pre-fills used for preview context."},"region_id":{"type":"string","minLength":1,"maxLength":54,"description":"Delivery region pin used for preview context."},"cluster_id":{"type":"string","minLength":1,"maxLength":54,"description":"Delivery cluster pin used for preview context."},"offer_channel_id":{"type":"string","minLength":1,"maxLength":54,"description":"Offer Channel whose active policy is previewed."},"commercial_mode":{"allOf":[{"$ref":"#/components/schemas/CommercialMode"},{"description":"Requested customer path for channel policy resolution. This is not settlement authority; the active channel policy decides the final terms."}]},"pricing_request":{"$ref":"#/components/schemas/OfferPricingRequest"}},"required":["package_version_id","product_id","offer_channel_id","commercial_mode"],"additionalProperties":false,"description":"Preview channel policy resolution for a concrete package version and product before creating an offer.","x-platform-visibility":"TRUSTED_PARTNER"},"OfferPricingRequest":{"type":"object","properties":{"currency":{"type":"string","enum":["eur","usd"],"example":"eur","description":"ISO currency code for the requested price."},"unit_amount":{"type":"integer","minimum":0,"maximum":100000000,"description":"Requested price in the smallest currency unit, for example cents for EUR or USD."},"interval":{"allOf":[{"$ref":"#/components/schemas/PricingInterval"},{"description":"Billing interval for the requested price."}]}},"required":["currency","unit_amount","interval"],"additionalProperties":false,"description":"Requested customer-visible price for channel policy resolution. The active policy validates the request before the offer is created."},"OfferCreated":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":56,"description":"Offer ID"},"short_hash":{"type":"string"}},"required":["id","short_hash"]},"CreateOfferBody":{"anyOf":[{"type":"object","properties":{"product_id":{"type":"string","minLength":1,"maxLength":55,"description":"Product ID for attribution and package-version resolution. Required for channel-backed offers. When `package_version_id` is omitted, the server uses the product’s current package version pin."},"package_version_id":{"type":"string","minLength":1,"maxLength":55,"description":"Package version ID to pin explicitly at create time. Optional when `product_id` is supplied; if both are supplied, this value overrides the product’s current package version pin."},"target_workspace_id":{"type":"string","minLength":1,"maxLength":53,"description":"Trusted-partner delivery target. When supplied, the redeemed order is created for this existing customer workspace instead of selecting or creating a workspace during checkout. Requires the target-existing-workspace entitlement and customer workspace membership.","x-platform-visibility":"TRUSTED_PARTNER"},"region_id":{"type":"string","minLength":1,"maxLength":54,"description":"Trusted-partner delivery region pin. Requires a fixed delivery workspace or pinned cluster and the target-managed-workspace entitlement.","x-platform-visibility":"TRUSTED_PARTNER"},"cluster_id":{"type":"string","minLength":1,"maxLength":54,"description":"Trusted-partner delivery cluster pin. The cluster must belong to the delivery workspace and requires the target-managed-workspace entitlement.","x-platform-visibility":"TRUSTED_PARTNER"},"allowed_emails":{"type":"array","items":{"type":"string","maxLength":254,"format":"email"},"maxItems":50,"description":"Verified customer email allowlist. Empty or omitted means any authenticated customer can redeem the offer."},"field_values":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"nullable":true,"description":"Pre-fill value for this schema property"},"locked":{"type":"boolean","description":"When true the customer cannot override; submit ignores client value"}},"required":["value","locked"]},"description":"Package input pre-fills keyed by input-schema property name. Values are validated against the resolved package version input schema before the offer is created."},"tier":{"type":"string","maxLength":32,"description":"Legacy advisory billing tier for non-channel offers. Do not send this with `offer_channel_id`; channel-backed offers use `commercial_mode` and `pricing_request`."},"offer_channel_id":{"type":"string","minLength":1,"maxLength":54,"description":"Offer Channel whose active policy resolves approval, checkout, support, and pricing terms. Requires `product_id`."},"commercial_mode":{"allOf":[{"$ref":"#/components/schemas/CommercialMode"},{"description":"Requested customer path for channel policy resolution. This is not settlement authority; the active channel policy decides the final terms."}]},"pricing_request":{"$ref":"#/components/schemas/OfferPricingRequest"},"notes":{"type":"string","maxLength":500,"description":"Seller-private note for operators reviewing or supporting the offer. Not shown to the customer."},"expires_at":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Unix timestamp in seconds after which the offer can no longer be redeemed. Omit for no explicit expiration."},"max_uses":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":10000,"description":"Maximum number of successful redemptions allowed for this offer. Omit for the default single-use behavior."},"order_ttl_minutes":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":1440,"description":"Per-redemption order TTL in minutes. Defaults to 120; capped at 1440 (24h)."}},"required":["product_id"],"additionalProperties":false},{"type":"object","properties":{"package_version_id":{"type":"string","minLength":1,"maxLength":55,"description":"Package version ID to pin explicitly at create time. Optional when `product_id` is supplied; if both are supplied, this value overrides the product’s current package version pin."},"product_id":{"type":"string","minLength":1,"maxLength":55,"description":"Product ID for attribution and package-version resolution. Required for channel-backed offers. When `package_version_id` is omitted, the server uses the product’s current package version pin."},"target_workspace_id":{"type":"string","minLength":1,"maxLength":53,"description":"Trusted-partner delivery target. When supplied, the redeemed order is created for this existing customer workspace instead of selecting or creating a workspace during checkout. Requires the target-existing-workspace entitlement and customer workspace membership.","x-platform-visibility":"TRUSTED_PARTNER"},"region_id":{"type":"string","minLength":1,"maxLength":54,"description":"Trusted-partner delivery region pin. Requires a fixed delivery workspace or pinned cluster and the target-managed-workspace entitlement.","x-platform-visibility":"TRUSTED_PARTNER"},"cluster_id":{"type":"string","minLength":1,"maxLength":54,"description":"Trusted-partner delivery cluster pin. The cluster must belong to the delivery workspace and requires the target-managed-workspace entitlement.","x-platform-visibility":"TRUSTED_PARTNER"},"allowed_emails":{"type":"array","items":{"type":"string","maxLength":254,"format":"email"},"maxItems":50,"description":"Verified customer email allowlist. Empty or omitted means any authenticated customer can redeem the offer."},"field_values":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"nullable":true,"description":"Pre-fill value for this schema property"},"locked":{"type":"boolean","description":"When true the customer cannot override; submit ignores client value"}},"required":["value","locked"]},"description":"Package input pre-fills keyed by input-schema property name. Values are validated against the resolved package version input schema before the offer is created."},"tier":{"type":"string","maxLength":32,"description":"Legacy advisory billing tier for non-channel offers. Do not send this with `offer_channel_id`; channel-backed offers use `commercial_mode` and `pricing_request`."},"offer_channel_id":{"type":"string","minLength":1,"maxLength":54,"description":"Offer Channel whose active policy resolves approval, checkout, support, and pricing terms. Requires `product_id`."},"commercial_mode":{"allOf":[{"$ref":"#/components/schemas/CommercialMode"},{"description":"Requested customer path for channel policy resolution. This is not settlement authority; the active channel policy decides the final terms."}]},"pricing_request":{"$ref":"#/components/schemas/OfferPricingRequest"},"notes":{"type":"string","maxLength":500,"description":"Seller-private note for operators reviewing or supporting the offer. Not shown to the customer."},"expires_at":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Unix timestamp in seconds after which the offer can no longer be redeemed. Omit for no explicit expiration."},"max_uses":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":10000,"description":"Maximum number of successful redemptions allowed for this offer. Omit for the default single-use behavior."},"order_ttl_minutes":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":1440,"description":"Per-redemption order TTL in minutes. Defaults to 120; capped at 1440 (24h)."}},"required":["package_version_id"],"additionalProperties":false}],"description":"Provide either `product_id` or `package_version_id`. Product-backed requests may omit `package_version_id`; the server resolves the product’s current package version pin at create time, validates `field_values` against the resolved package version input schema, and stores the resolved package version on the offer."},"OrderDraft":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":55,"description":"Order draft ID"},"offer_id":{"type":"string","minLength":1,"maxLength":56,"description":"Offer this order draft is redeeming"},"status":{"$ref":"#/components/schemas/OrderDraftStatus"},"termination_reason":{"$ref":"#/components/schemas/OrderDraftTerminationReason"},"user_id":{"type":"string","minLength":1,"description":"Authenticated customer"},"customer_email":{"type":"string"},"workspace_id":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace selected/created during the workspace phase"},"cluster_id":{"type":"string","minLength":1,"maxLength":54,"description":"Cluster allocated during the compute phase"},"cluster_ready":{"type":"boolean"},"server_joined":{"type":"boolean"},"payment_completed":{"type":"boolean"},"current_checkout_session":{"$ref":"#/components/schemas/CurrentOrderDraftCheckoutSession"},"install_operation_id":{"type":"string","minLength":1,"maxLength":53,"description":"Operation tracking the spawned install workflow"},"order":{"$ref":"#/components/schemas/OrderSummary"},"delivery":{"$ref":"#/components/schemas/OrderDeliverySummary"},"field_values":{"type":"object","additionalProperties":{"nullable":true},"description":"Customer-supplied configure values, including any pre-fills from the offer. Only returned to the order draft’s own customer; never to other authed callers."},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"},"ttl_expires_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["id","offer_id","status","cluster_ready","server_joined","payment_completed","created_at","updated_at","etag","ttl_expires_at"]},"OrderDraftStatus":{"type":"string","enum":["auth","workspace","compute","compute_bootstrap","configure","payment","install","done","cleaning_up","terminated"],"description":"Wizard phase. Driven by the order draft actor; mirrored on every patch to the row so reactive UIs render one column. `done` and `terminated` are terminal."},"OrderDraftTerminationReason":{"type":"string","enum":["timeout","revoked","offer_expired","install_failed","cluster_allocation_failed","quota_exceeded"],"description":"Set when status=terminated; explains why the order draft ended."},"CurrentOrderDraftCheckoutSession":{"type":"object","properties":{"stripe_environment":{"$ref":"#/components/schemas/StripeEnvironment"},"id":{"type":"string","description":"Stripe Checkout Session ID","example":"cs_test_..."},"draft_revision":{"type":"integer","minimum":0,"description":"Order draft revision this Checkout Session belongs to"},"url":{"type":"string","format":"uri","description":"Stripe-hosted Checkout URL"},"expires_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["stripe_environment","id","draft_revision"]},"StripeEnvironment":{"type":"string","enum":["live","sandbox"],"description":"Stripe payment environment for this Checkout Session."},"OrderSummary":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54,"description":"Order ID"},"status":{"$ref":"#/components/schemas/OrderStatus"},"stripe_environment":{"allOf":[{"$ref":"#/components/schemas/StripeEnvironment"},{"description":"Stripe payment environment for paid Stripe checkout orders."}]},"stripe_checkout_id":{"type":"string"},"draft_revision":{"type":"integer","minimum":0},"cleanup_policy":{"$ref":"#/components/schemas/OrderCleanupPolicy"},"committed_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["id","status","stripe_checkout_id","draft_revision","cleanup_policy","committed_at"]},"OrderStatus":{"type":"string","enum":["delivery_pending","delivery_running","delivered","delivery_failed"]},"OrderCleanupPolicy":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["none"]}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["temporal_actor_ttl"]},"cleanup_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"removable_by":{"type":"string","enum":["platform_policy","platform_admin"]},"conversion_required":{"type":"string","enum":["paid_order","platform_approval"]}},"required":["kind","cleanup_at","removable_by","conversion_required"],"additionalProperties":false}],"description":"Cleanup policy attached to committed order resources. Demo/test policies are visible so customers and sellers can see when resources will be removed."},"OrderDeliverySummary":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":55,"description":"Order delivery ID"},"kind":{"type":"string","enum":["install"]},"authorization_kind":{"type":"string","enum":["paid_order","non_billable_test_order"]},"status":{"$ref":"#/components/schemas/OrderDeliveryStatus"},"cleanup_policy":{"$ref":"#/components/schemas/OrderCleanupPolicy"},"install_id":{"type":"string","minLength":1,"maxLength":55},"urls":{"type":"array","items":{"type":"object","properties":{"route_key":{"type":"string"},"hostname":{"type":"string"},"url":{"type":"string","format":"uri"},"protocol":{"type":"string","enum":["http","websocket","grpc"],"description":"Transport class for route forwarding."},"routing_mode":{"type":"string","enum":["through_dispatcher","bypass_dispatcher"],"description":"Whether traffic uses the dispatcher Worker or bypasses it."},"status":{"type":"string","enum":["pending","provisioning","active","not_ready","failed"],"description":"Customer-facing install URL routing state."},"error":{"type":"string"},"last_observed_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["route_key","hostname","url","protocol","routing_mode","status","updated_at"]}},"install_operation_id":{"type":"string","minLength":1,"maxLength":53,"description":"Operation tracking the spawned install workflow"},"started_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"completed_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["id","kind","authorization_kind","status","cleanup_policy","urls"]},"OrderDeliveryStatus":{"type":"string","enum":["pending","running","succeeded","failed"]},"OrderDraftList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OrderDraft"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"ClaimOrderDraftBody":{"type":"object","properties":{"claim_token":{"type":"string"}},"required":["claim_token"],"additionalProperties":false},"SelectOrderDraftWorkspaceBody":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["existing"]},"workspace_id":{"type":"string","minLength":1,"maxLength":53}},"required":["kind","workspace_id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["new"]},"name":{"type":"string","minLength":1,"maxLength":100}},"required":["kind"],"additionalProperties":false}]},"SubmitConfigureOrderDraftBody":{"type":"object","properties":{"field_values":{"type":"object","additionalProperties":{"nullable":true},"description":"Customer-supplied configure form values, keyed by field name"}},"required":["field_values"],"additionalProperties":false},"OrderDraftWorkerBootstrap":{"type":"object","properties":{"token":{"type":"string","description":"Short-lived worker join token (one-time view)."},"expires_at":{"type":"integer","minimum":0,"description":"Token expiry time (unix seconds)."},"command":{"type":"string","description":"Bash bootstrap command with the token already substituted, ready to run on a worker node."},"cloud_init":{"type":"string","description":"Cloud-init YAML with the token already substituted, ready to use as worker-node user-data."},"artifacts":{"$ref":"#/components/schemas/WorkerBootstrapArtifacts"}},"required":["token","expires_at","command","cloud_init"]},"WorkerBootstrapArtifacts":{"type":"object","properties":{"linux":{"type":"object","properties":{"amd64":{"$ref":"#/components/schemas/WorkerBootstrapArtifact"},"arm64":{"$ref":"#/components/schemas/WorkerBootstrapArtifact"}}},"windows":{"type":"object","properties":{"amd64":{"$ref":"#/components/schemas/WorkerBootstrapArtifact"},"arm64":{"$ref":"#/components/schemas/WorkerBootstrapArtifact"}}}},"description":"Platform-specific bootstrap artifacts with tokens already substituted. Populated only on create responses."},"WorkerBootstrapArtifact":{"oneOf":[{"type":"object","properties":{"supported":{"type":"boolean","enum":[true],"description":"Whether this platform/architecture artifact is currently supported."},"command":{"type":"string","description":"Bootstrap command with the token already substituted. Reveal-on-create only."},"shell":{"type":"string","enum":["bash","powershell"],"description":"Shell expected to execute the bootstrap command or downloaded script."},"download_url":{"type":"string","format":"uri","description":"Token-free script URL used by the bootstrap command."},"cloud_init":{"type":"string","description":"Cloud-init YAML with the token already substituted. Reveal-on-create only."}},"required":["supported"]},{"type":"object","properties":{"supported":{"type":"boolean","enum":[false],"description":"Whether this platform/architecture artifact is currently supported. Unsupported entries do not include token-bearing commands."}},"required":["supported"],"additionalProperties":false}]},"OrderDraftCheckoutSession":{"type":"object","properties":{"id":{"type":"string","description":"Stripe Checkout Session ID","example":"cs_test_..."},"url":{"type":"string","format":"uri","description":"Stripe-hosted Checkout URL"},"expires_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"stripe_environment":{"$ref":"#/components/schemas/StripeEnvironment"}},"required":["id","url","expires_at","stripe_environment"]},"CheckoutSessionList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CheckoutSession"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"CheckoutSession":{"type":"object","properties":{"id":{"type":"string","description":"Checkout session ID","example":"chk_j572abc..."},"stripe_environment":{"$ref":"#/components/schemas/StripeEnvironment"},"order_draft_id":{"type":"string","minLength":1,"maxLength":55,"description":"Parent order draft ID","example":"odft_j572abc..."},"order_draft_etag_at_mint":{"type":"string","description":"Parent order draft etag when this checkout session was minted."},"state":{"$ref":"#/components/schemas/CheckoutSessionStatus"},"url":{"type":"string","format":"uri","description":"Stripe-hosted Checkout URL"},"expires_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"stripe_checkout_session_id":{"type":"string","description":"Stripe Checkout session identifier","example":"cs_test_..."},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["id","stripe_environment","order_draft_id","order_draft_etag_at_mint","state","stripe_checkout_session_id","created_at","updated_at"]},"CheckoutSessionStatus":{"type":"string","enum":["open","expired","payment_failed","superseded","paid"]},"DemoCleanupRemoval":{"type":"object","properties":{"order_id":{"type":"string","minLength":1,"maxLength":54,"description":"Order whose demo cleanup was removed."},"delivery_id":{"type":"string","minLength":1,"maxLength":55,"description":"Order delivery whose demo cleanup was removed."},"cleanup_workflow_id":{"type":"string","minLength":1,"description":"Previously scheduled Temporal cleanup workflow ID. The workflow will skip after re-reading the removed cleanup policy."}},"required":["order_id","delivery_id","cleanup_workflow_id"],"additionalProperties":false,"x-platform-visibility":"ADMIN"},"RemoveDemoCleanupAfterPlatformApprovalBody":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":1000,"description":"Platform approval reason for removing non-billable demo cleanup."}},"required":["reason"],"additionalProperties":false,"x-platform-visibility":"ADMIN"},"EntitlementList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Entitlement"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."},"etag":{"type":"string"}},"required":["data","has_more","next_cursor","etag"]},"Entitlement":{"type":"object","properties":{"workspace_id":{"type":"string","minLength":1,"maxLength":53},"feature":{"type":"object","properties":{"feature_set":{"type":"string"},"key":{"type":"string"},"name":{"type":"string"}},"required":["feature_set","key","name"]},"allocation":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["bool"]},"value":{"type":"boolean"}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["max_count"]},"value":{"type":"integer","minimum":0}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["unlimited"]},"value":{"nullable":true}},"required":["type","value"]}]}},"required":["workspace_id","feature","allocation"]},"OperationList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Operation"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"Operation":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":53},"workspace_id":{"type":"string","nullable":true,"minLength":1,"maxLength":53},"organization_id":{"type":"string","nullable":true,"minLength":1,"maxLength":54},"owner_type":{"type":"string","enum":["install","repository_change_request","repository","workspace","machine","cluster","package"],"description":"Domain entity collection the operation acts on."},"owner_id":{"type":"string","description":"Prefixed ID of the entity this operation acts on. Prefix matches `owner_type` (`ws_`, `mch_`, `clu_`, `pkg_`, `inst_`, `rcr_`, `repo_`)."},"parent_operation_id":{"type":"string","nullable":true,"minLength":1,"maxLength":53,"description":"ID of the chained parent operation, when present."},"state":{"type":"string","enum":["RUNNING","SUCCEEDED","FAILED","CANCELLED"],"description":"Lifecycle state. Past-participle terminal states per AIP-216."},"done":{"type":"boolean","description":"True iff state is a terminal value."},"html_url":{"type":"string","maxLength":2048,"format":"uri","description":"Deep link to the dashboard view of this operation's owning resource when available, otherwise the operation detail page.","example":"https://akua.dev/installs/inst_j572abc123def456?tab=operations"},"metadata":{"$ref":"#/components/schemas/OperationMetadata"},"response":{"$ref":"#/components/schemas/OperationResponse"},"error":{"type":"object","nullable":true,"properties":{"message":{"type":"string"}},"required":["message"],"description":"Populated when `state` is `FAILED` or `CANCELLED`."},"last_error":{"type":"object","nullable":true,"properties":{"message":{"type":"string"},"step_name":{"type":"string"}},"required":["message"],"description":"Latest error from any failed step. Populated even mid-flight; cleared when the step succeeds on retry."},"started_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"completed_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds)"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/OperationStep"}}},"required":["id","workspace_id","organization_id","owner_type","owner_id","parent_operation_id","state","done","html_url","metadata","response","error","last_error","started_at","completed_at"]},"OperationMetadata":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["machine.create"]},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"cluster_id":{"type":"string","minLength":1,"maxLength":54},"compute_config_id":{"type":"string","minLength":1,"maxLength":54},"instance_type":{"type":"string"},"managed":{"type":"boolean"},"request_fingerprint":{"type":"string","minLength":1}},"required":["type","workspace_id","cluster_id","instance_type","managed","request_fingerprint"]},{"type":"object","properties":{"type":{"type":"string","enum":["cluster.delete"]},"cluster_id":{"type":"string","minLength":1,"maxLength":54}},"required":["type","cluster_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["cluster.create"]},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"region_id":{"type":"string","minLength":1,"maxLength":54},"name":{"type":"string"}},"required":["type","workspace_id","region_id","name"]},{"type":"object","properties":{"type":{"type":"string","enum":["cluster.suspend"]},"cluster_id":{"type":"string","minLength":1,"maxLength":54}},"required":["type","cluster_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["cluster.resume"]},"cluster_id":{"type":"string","minLength":1,"maxLength":54}},"required":["type","cluster_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["cluster.capabilities.refresh"]},"cluster_id":{"type":"string","minLength":1,"maxLength":54}},"required":["type","cluster_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["cluster.capability.ensure"]},"cluster_id":{"type":"string","minLength":1,"maxLength":54},"capability":{"type":"string","minLength":1}},"required":["type","cluster_id","capability"]},{"type":"object","properties":{"type":{"type":"string","enum":["cluster.worker_bootstrap.revoke"]},"cluster_id":{"type":"string","minLength":1,"maxLength":54},"worker_bootstrap_id":{"type":"string","minLength":1,"maxLength":54}},"required":["type","cluster_id","worker_bootstrap_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["install.create"]},"idempotency_key":{"type":"string"},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"product_id":{"type":"string","minLength":1,"maxLength":55}},"required":["type","idempotency_key","workspace_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["install.render"]},"install_id":{"type":"string","minLength":1,"maxLength":55},"trigger_commit_sha":{"type":"string"}},"required":["type","install_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["install.delete"]},"install_id":{"type":"string","minLength":1,"maxLength":55}},"required":["type","install_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["preview_hostname.bind_pinned"]},"install_id":{"type":"string","minLength":1,"maxLength":55},"render_id":{"type":"string","minLength":1,"maxLength":54},"protocol":{"type":"string","enum":["http","websocket","grpc"]},"routing_mode":{"type":"string","enum":["through_dispatcher","bypass_dispatcher"]},"idempotency_key":{"type":"string"}},"required":["type","install_id","render_id","protocol","routing_mode","idempotency_key"]},{"type":"object","properties":{"type":{"type":"string","enum":["preview_hostname.bind_floating"]},"install_id":{"type":"string","minLength":1,"maxLength":55},"track":{"type":"string","minLength":1,"maxLength":100},"render_id":{"type":"string","minLength":1,"maxLength":54},"protocol":{"type":"string","enum":["http","websocket","grpc"]},"routing_mode":{"type":"string","enum":["through_dispatcher","bypass_dispatcher"]},"idempotency_key":{"type":"string"}},"required":["type","install_id","track","render_id","protocol","routing_mode","idempotency_key"]},{"type":"object","properties":{"type":{"type":"string","enum":["preview_hostname.delete"]},"install_id":{"type":"string","minLength":1,"maxLength":55},"preview_hostname_id":{"type":"string","minLength":1,"maxLength":54},"if_match":{"type":"string"},"idempotency_key":{"type":"string"}},"required":["type","install_id","preview_hostname_id","if_match","idempotency_key"]},{"type":"object","properties":{"type":{"type":"string","enum":["workspace.delete"]},"workspace_id":{"type":"string","minLength":1,"maxLength":53}},"required":["type","workspace_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["workspace.subscription.cancel"]},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"mode":{"type":"string","enum":["period_end"]}},"required":["type","workspace_id","mode"]},{"type":"object","properties":{"type":{"type":"string","enum":["workspace.subdomain.set_name"]},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"name":{"type":"string","minLength":1,"maxLength":63},"idempotency_key":{"type":"string"}},"required":["type","workspace_id","name","idempotency_key"]},{"type":"object","properties":{"type":{"type":"string","enum":["custom_domain.create"]},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"hostname":{"type":"string","minLength":1,"maxLength":253},"target":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["install"]},"install_id":{"type":"string","minLength":1,"maxLength":55}},"required":["kind","install_id"]},{"type":"object","properties":{"kind":{"type":"string","enum":["cluster"]},"cluster_id":{"type":"string","minLength":1,"maxLength":54}},"required":["kind","cluster_id"]},{"type":"object","properties":{"kind":{"type":"string","enum":["external"]},"endpoint":{"type":"string","format":"uri"},"mtls_secret_id":{"type":"string","minLength":1,"maxLength":54}},"required":["kind","endpoint"]}]},"protocol":{"type":"string","enum":["http","websocket","grpc"]},"routing_mode":{"type":"string","enum":["through_dispatcher","bypass_dispatcher"]},"idempotency_key":{"type":"string"}},"required":["type","workspace_id","hostname","target","protocol","routing_mode","idempotency_key"]},{"type":"object","properties":{"type":{"type":"string","enum":["custom_domain.update"]},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"custom_domain_id":{"type":"string","minLength":1,"maxLength":54},"target":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["install"]},"install_id":{"type":"string","minLength":1,"maxLength":55}},"required":["kind","install_id"]},{"type":"object","properties":{"kind":{"type":"string","enum":["cluster"]},"cluster_id":{"type":"string","minLength":1,"maxLength":54}},"required":["kind","cluster_id"]},{"type":"object","properties":{"kind":{"type":"string","enum":["external"]},"endpoint":{"type":"string","format":"uri"},"mtls_secret_id":{"type":"string","minLength":1,"maxLength":54}},"required":["kind","endpoint"]}]},"protocol":{"type":"string","enum":["http","websocket","grpc"]},"routing_mode":{"type":"string","enum":["through_dispatcher","bypass_dispatcher"]},"if_match":{"type":"string"},"idempotency_key":{"type":"string"}},"required":["type","workspace_id","custom_domain_id","if_match","idempotency_key"]},{"type":"object","properties":{"type":{"type":"string","enum":["custom_domain.delete"]},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"custom_domain_id":{"type":"string","minLength":1,"maxLength":54},"if_match":{"type":"string"},"idempotency_key":{"type":"string"}},"required":["type","workspace_id","custom_domain_id","if_match","idempotency_key"]},{"type":"object","properties":{"type":{"type":"string","enum":["cloudflare.private_origin_route.prepare"]},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"cluster_id":{"type":"string","minLength":1,"maxLength":54},"route_intent_id":{"type":"string","minLength":1,"maxLength":54}},"required":["type","workspace_id","cluster_id","route_intent_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["cloudflare.private_origin_route.release"]},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"route_intent_id":{"type":"string","minLength":1,"maxLength":54}},"required":["type","workspace_id","route_intent_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["package.create"]},"idempotency_key":{"type":"string"},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"name":{"type":"string"}},"required":["type","idempotency_key","workspace_id","name"]},{"type":"object","properties":{"type":{"type":"string","enum":["repository_change_request.create"]},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"parent_repository_id":{"type":"string","minLength":1,"maxLength":55},"created_by_kind":{"type":"string","enum":["agent","wizard","user"]}},"required":["type","workspace_id","parent_repository_id","created_by_kind"]},{"type":"object","properties":{"type":{"type":"string","enum":["repository_change_request.accept"]},"repository_change_request_id":{"type":"string","minLength":1,"maxLength":54},"user_id":{"type":"string"}},"required":["type","repository_change_request_id","user_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["repository_change_request.reject"]},"repository_change_request_id":{"type":"string","minLength":1,"maxLength":54},"user_id":{"type":"string"},"reason":{"type":"string"}},"required":["type","repository_change_request_id","user_id","reason"]},{"type":"object","properties":{"type":{"type":"string","enum":["repository_change_request.withdraw"]},"repository_change_request_id":{"type":"string","minLength":1,"maxLength":54},"user_id":{"type":"string"}},"required":["type","repository_change_request_id","user_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["repository_change_request.expire"]},"repository_change_request_id":{"type":"string","minLength":1,"maxLength":54}},"required":["type","repository_change_request_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["repository.delete"]},"repository_id":{"type":"string","minLength":1,"maxLength":55}},"required":["type","repository_id"]}]},"OperationResponse":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["machine.create"]},"machine_id":{"type":"string","minLength":1,"maxLength":54},"provider_id":{"type":"string"}},"required":["type","machine_id","provider_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["cluster.delete"]},"cluster_id":{"type":"string","minLength":1,"maxLength":54}},"required":["type","cluster_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["cluster.create"]},"cluster_id":{"type":"string","minLength":1,"maxLength":54}},"required":["type","cluster_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["cluster.suspend"]},"cluster_id":{"type":"string","minLength":1,"maxLength":54}},"required":["type","cluster_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["cluster.resume"]},"cluster_id":{"type":"string","minLength":1,"maxLength":54}},"required":["type","cluster_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["cluster.capabilities.refresh"]},"cluster_id":{"type":"string","minLength":1,"maxLength":54}},"required":["type","cluster_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["cluster.capability.ensure"]},"cluster_id":{"type":"string","minLength":1,"maxLength":54},"capability":{"type":"string","minLength":1}},"required":["type","cluster_id","capability"]},{"type":"object","properties":{"type":{"type":"string","enum":["cluster.worker_bootstrap.revoke"]},"note":{"type":"string"}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["install.create"]},"install_id":{"type":"string","minLength":1,"maxLength":55},"argo_app_name":{"type":"string"},"argo_app_namespace":{"type":"string"}},"required":["type","install_id","argo_app_name","argo_app_namespace"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["install.create"]},"install_id":{"type":"string","minLength":1,"maxLength":55},"sandbox_skipped":{"type":"boolean","enum":[true]}},"required":["type","install_id","sandbox_skipped"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["install.render"]},"install_render_id":{"type":"string","minLength":1,"maxLength":54},"repository_id":{"type":"string","minLength":1,"maxLength":55},"commit_sha":{"type":"string"},"render_hash":{"type":"string"},"skipped":{"type":"boolean"}},"required":["type","install_render_id","repository_id","render_hash","skipped"]},{"type":"object","properties":{"type":{"type":"string","enum":["install.delete"]},"argo_app_deleted":{"type":"boolean"},"repo_purged":{"type":"boolean"}},"required":["type","argo_app_deleted","repo_purged"]},{"type":"object","properties":{"type":{"type":"string","enum":["preview_hostname.bind_pinned"]},"install_id":{"type":"string","minLength":1,"maxLength":55},"preview_hostname_id":{"type":"string","minLength":1,"maxLength":54},"hostname":{"type":"string","minLength":1,"maxLength":253}},"required":["type","install_id","preview_hostname_id","hostname"]},{"type":"object","properties":{"type":{"type":"string","enum":["preview_hostname.bind_floating"]},"install_id":{"type":"string","minLength":1,"maxLength":55},"preview_hostname_id":{"type":"string","minLength":1,"maxLength":54},"hostname":{"type":"string","minLength":1,"maxLength":253}},"required":["type","install_id","preview_hostname_id","hostname"]},{"type":"object","properties":{"type":{"type":"string","enum":["preview_hostname.delete"]},"install_id":{"type":"string","minLength":1,"maxLength":55},"preview_hostname_id":{"type":"string","minLength":1,"maxLength":54},"hostname":{"type":"string","minLength":1,"maxLength":253}},"required":["type","install_id","preview_hostname_id","hostname"]},{"type":"object","properties":{"type":{"type":"string","enum":["workspace.delete"]},"workspace_id":{"type":"string","minLength":1,"maxLength":53}},"required":["type","workspace_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["workspace.subscription.cancel"]},"subscription_id":{"type":"string"},"cancel_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["type","subscription_id","cancel_at"]},{"type":"object","properties":{"type":{"type":"string","enum":["workspace.subdomain.set_name"]},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"workspace_subdomain_id":{"type":"string","minLength":1,"maxLength":54},"fqdn":{"type":"string","minLength":1,"maxLength":253}},"required":["type","workspace_id","workspace_subdomain_id","fqdn"]},{"type":"object","properties":{"type":{"type":"string","enum":["custom_domain.create"]},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"custom_domain_id":{"type":"string","minLength":1,"maxLength":54},"hostname":{"type":"string","minLength":1,"maxLength":253}},"required":["type","workspace_id","custom_domain_id","hostname"]},{"type":"object","properties":{"type":{"type":"string","enum":["custom_domain.update"]},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"custom_domain_id":{"type":"string","minLength":1,"maxLength":54},"hostname":{"type":"string","minLength":1,"maxLength":253}},"required":["type","workspace_id","custom_domain_id","hostname"]},{"type":"object","properties":{"type":{"type":"string","enum":["custom_domain.delete"]},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"custom_domain_id":{"type":"string","minLength":1,"maxLength":54},"hostname":{"type":"string","minLength":1,"maxLength":253}},"required":["type","workspace_id","custom_domain_id","hostname"]},{"type":"object","properties":{"type":{"type":"string","enum":["cloudflare.private_origin_route.prepare"]},"origin_route_id":{"type":"string","minLength":1,"maxLength":54}},"required":["type","origin_route_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["cloudflare.private_origin_route.release"]},"route_intent_id":{"type":"string","minLength":1,"maxLength":54}},"required":["type","route_intent_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["package.create"]},"package_id":{"type":"string","minLength":1,"maxLength":54},"package_version_id":{"type":"string","minLength":1,"maxLength":55},"repository_id":{"type":"string","minLength":1,"maxLength":55}},"required":["type","package_id","package_version_id","repository_id"]},{"type":"object","properties":{"type":{"type":"string","enum":["repository_change_request.create"]},"repository_change_request_id":{"type":"string","minLength":1,"maxLength":54},"fork_repository_id":{"type":"string","minLength":1,"maxLength":55},"expires_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["type","repository_change_request_id","fork_repository_id","expires_at"]},{"type":"object","properties":{"type":{"type":"string","enum":["repository_change_request.accept"]},"merged_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"triggered_install_render":{"type":"boolean"}},"required":["type","merged_at","triggered_install_render"]},{"type":"object","properties":{"type":{"type":"string","enum":["repository_change_request.reject"]},"rejected_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["type","rejected_at"]},{"type":"object","properties":{"type":{"type":"string","enum":["repository_change_request.withdraw"]},"withdrawn_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["type","withdrawn_at"]},{"type":"object","properties":{"type":{"type":"string","enum":["repository_change_request.expire"]},"expired":{"type":"boolean"}},"required":["type","expired"]},{"type":"object","properties":{"type":{"type":"string","enum":["repository.delete"]},"purged_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["type","purged_at"]},{"nullable":true}],"description":"Populated only when `done && state === \"SUCCEEDED\"`. Discriminated by `type`."},"OperationStep":{"type":"object","properties":{"name":{"type":"string","description":"User-visible milestone name."},"status":{"type":"string","enum":["pending","running","completed","failed","skipped"],"description":"Step lifecycle state."},"execution_type":{"type":"string","enum":["system","user","approval","skipped"],"description":"Step execution kind. `user`/`approval` mean the workflow is blocked on a human action. Internal bookkeeping steps are filtered from public responses."},"started_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"completed_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds)"},"error_message":{"type":"string","nullable":true},"retryable":{"type":"boolean"},"skippable":{"type":"boolean"}},"required":["name","status","execution_type","started_at","completed_at","error_message","retryable","skippable"]},"DashboardInstallList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DashboardInstall"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"DashboardInstall":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":55},"html_url":{"type":"string","maxLength":2048,"format":"uri","description":"Absolute dashboard URL for this resource. OUTPUT_ONLY.","example":"https://akua.dev/installs/inst_j572abc123def456"},"name":{"type":"string"},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"cluster_id":{"type":"string","minLength":1,"maxLength":54},"cluster_name":{"type":"string"},"region_name":{"type":"string"},"region_icon":{"type":"string","nullable":true},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","html_url","name","workspace_id","cluster_id","cluster_name","region_name","region_icon","created_at","updated_at","etag"]},"DashboardInstallDetail":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":55},"html_url":{"type":"string","maxLength":2048,"format":"uri","description":"Absolute dashboard URL for this resource. OUTPUT_ONLY.","example":"https://akua.dev/installs/inst_j572abc123def456"},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"cluster_id":{"type":"string","minLength":1,"maxLength":54},"name":{"type":"string","nullable":true},"is_standalone":{"type":"boolean"},"argo_app_namespace":{"type":"string"},"public_urls":{"type":"array","items":{"$ref":"#/components/schemas/InstallUrl"}},"argo_status":{"$ref":"#/components/schemas/DashboardInstallArgoStatus"},"cluster":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"name":{"type":"string"},"region":{"type":"object","properties":{"name":{"type":"string"},"icon":{"type":"string","nullable":true}},"required":["name","icon"]}},"required":["id","name","region"]},"product":{"type":"object","nullable":true,"properties":{"name":{"type":"string"},"is_owner":{"type":"boolean"}},"required":["name","is_owner"]},"demo_cleanup":{"$ref":"#/components/schemas/InstallDemoCleanup"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","html_url","workspace_id","cluster_id","name","is_standalone","argo_app_namespace","public_urls","argo_status","cluster","product","created_at","updated_at","etag"]},"InstallUrl":{"type":"object","properties":{"route_key":{"type":"string"},"hostname":{"type":"string"},"url":{"type":"string","format":"uri"},"protocol":{"type":"string","enum":["http","websocket","grpc"],"description":"Transport class for route forwarding."},"routing_mode":{"type":"string","enum":["through_dispatcher","bypass_dispatcher"],"description":"Whether traffic uses the dispatcher Worker or bypasses it."},"status":{"type":"string","enum":["pending","provisioning","active","not_ready","failed"],"description":"Customer-facing install URL routing state."},"error":{"type":"string"},"last_observed_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["route_key","hostname","url","protocol","routing_mode","status","updated_at"]},"DashboardInstallArgoStatus":{"type":"object","nullable":true,"properties":{"status":{"type":"object","properties":{"health":{"type":"object","properties":{"status":{"type":"string"}},"required":["status"],"additionalProperties":{"nullable":true}},"sync":{"type":"object","properties":{"status":{"type":"string"},"revision":{"type":"string"}},"required":["status"],"additionalProperties":{"nullable":true}},"operation_state":{"type":"object","properties":{"phase":{"type":"string"}},"required":["phase"],"additionalProperties":{"nullable":true}},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ResourceStatus"}}},"required":["health","sync","resources"],"additionalProperties":{"nullable":true}},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["status","updated_at"]},"ResourceStatus":{"type":"object","properties":{"group":{"type":"string"},"kind":{"type":"string"},"name":{"type":"string"},"namespace":{"type":"string"},"version":{"type":"string"},"status":{"type":"string"},"health":{"type":"object","properties":{"status":{"type":"string"}},"required":["status"]}},"required":["kind","name"],"additionalProperties":{"nullable":true}},"InstallDemoCleanup":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["scheduled"]},"cleanup_at":{"type":"integer","minimum":0,"description":"Unix timestamp when the non-billable demo install is scheduled for cleanup."},"removable_by":{"type":"string","enum":["platform_policy","platform_admin"],"description":"Authority that may remove the scheduled cleanup policy."},"conversion_required":{"type":"string","enum":["paid_order","platform_approval"],"description":"Required approval path before the demo install can continue without cleanup."},"delivery_status":{"type":"string","enum":["pending","running","succeeded","failed"],"description":"Order delivery status for the install that owns this cleanup policy."}},"required":["kind","cleanup_at","removable_by","conversion_required","delivery_status"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["removed"]},"delivery_status":{"type":"string","enum":["pending","running","succeeded","failed"],"description":"Order delivery status for the demo install whose cleanup was removed."}},"required":["kind","delivery_status"],"additionalProperties":false}],"description":"Visible cleanup state for non-billable demo installs. Temporal workflow IDs and internal cleanup evidence are intentionally omitted."},"InstallList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Install"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"Install":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":55},"html_url":{"type":"string","maxLength":2048,"format":"uri","description":"Absolute dashboard URL for this resource. OUTPUT_ONLY.","example":"https://akua.dev/installs/inst_j572abc123def456"},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"customer_workspace":{"$ref":"#/components/schemas/InstallCustomerWorkspace"},"cluster_id":{"type":"string","minLength":1,"maxLength":54},"product_id":{"type":"string","minLength":1,"maxLength":55},"package_version_id":{"type":"string","minLength":1,"maxLength":55},"state":{"type":"string","enum":["pending","rendering","syncing","healthy","degraded","failed","deleted"],"description":"Install lifecycle state from the control plane perspective."},"reconciling":{"type":"boolean"},"urls":{"type":"array","items":{"$ref":"#/components/schemas/InstallUrl"}},"demo_cleanup":{"$ref":"#/components/schemas/InstallDemoCleanup"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","html_url","workspace_id","customer_workspace","cluster_id","product_id","package_version_id","state","reconciling","urls","created_at","updated_at","etag"]},"InstallCustomerWorkspace":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":53},"name":{"type":"string","minLength":1,"maxLength":100}},"required":["id","name"]},"InstallDomainSettings":{"type":"object","properties":{"workspace_subdomain":{"$ref":"#/components/schemas/InstallDomainSettingsWorkspaceSubdomain"},"preview_hostnames":{"type":"array","items":{"$ref":"#/components/schemas/InstallDomainSettingsPreviewHostname"}},"custom_domains":{"type":"array","items":{"$ref":"#/components/schemas/InstallDomainSettingsCustomDomain"}}},"required":["workspace_subdomain","preview_hostnames","custom_domains"]},"InstallDomainSettingsWorkspaceSubdomain":{"type":"object","nullable":true,"properties":{"id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"name":{"type":"string","minLength":1,"maxLength":63},"fqdn":{"type":"string","minLength":1,"maxLength":253},"status":{"type":"string","enum":["active","propagating","reserved"]},"name_changed_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds)"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","workspace_id","name","fqdn","status","name_changed_at","created_at","updated_at","etag"]},"InstallDomainSettingsPreviewHostname":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"install_id":{"type":"string","minLength":1,"maxLength":55},"hostname":{"type":"string","minLength":1,"maxLength":253},"protocol":{"type":"string","enum":["http","websocket","grpc"],"description":"Transport class for route forwarding."},"routing_mode":{"type":"string","enum":["through_dispatcher","bypass_dispatcher"],"description":"Whether traffic uses the dispatcher Worker or bypasses it."},"binding_kind":{"type":"string","enum":["pinned","floating"]},"track":{"type":"string","nullable":true,"minLength":1,"maxLength":100},"binding":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["pinned"]},"render_id":{"type":"string","minLength":1,"maxLength":54}},"required":["kind","render_id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["floating"]},"track":{"type":"string","minLength":1,"maxLength":100},"render_id":{"type":"string","minLength":1,"maxLength":54}},"required":["kind","track","render_id"],"additionalProperties":false}]},"status":{"type":"string","enum":["provisioning","active","evicted","releasing"]},"last_seen_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds)"},"observed_url":{"type":"string","nullable":true},"error":{"type":"string","nullable":true},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","workspace_id","install_id","hostname","protocol","routing_mode","binding_kind","track","binding","status","last_seen_at","observed_url","error","created_at","updated_at","etag"]},"InstallDomainSettingsCustomDomain":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"hostname":{"type":"string","minLength":1,"maxLength":253},"target":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["install"]},"install_id":{"type":"string","minLength":1,"maxLength":55}},"required":["kind","install_id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["cluster"]},"cluster_id":{"type":"string","minLength":1,"maxLength":54}},"required":["kind","cluster_id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["external"]},"endpoint":{"type":"string","format":"uri"},"mtls_secret_id":{"type":"string","minLength":1,"maxLength":54}},"required":["kind","endpoint"],"additionalProperties":false}]},"protocol":{"type":"string","enum":["http","websocket","grpc"],"description":"Transport class for route forwarding."},"routing_mode":{"type":"string","enum":["through_dispatcher","bypass_dispatcher"],"description":"Whether traffic uses the dispatcher Worker or bypasses it."},"target_kind":{"type":"string","enum":["install","cluster","external"]},"cloudflare_custom_hostname_id":{"type":"string","nullable":true},"ssl":{"type":"object","properties":{"status":{"type":"string","enum":["pending_validation","active","failed"]},"validation_records":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}}}},"required":["status"]},"status":{"type":"string","enum":["provisioning","active","failed","releasing"]},"error":{"type":"string","nullable":true},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","workspace_id","hostname","target","protocol","routing_mode","target_kind","cloudflare_custom_hostname_id","ssl","status","error","created_at","updated_at","etag"]},"CreateInstallBody":{"type":"object","properties":{"product_id":{"type":"string","minLength":1,"maxLength":55},"region_id":{"type":"string","minLength":1,"maxLength":54},"initial_values":{"type":"object","additionalProperties":{"nullable":true}}},"required":["product_id","region_id"],"additionalProperties":false},"InstallRender":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"install_id":{"type":"string","minLength":1,"maxLength":55},"operation_id":{"type":"string","nullable":true,"minLength":1,"maxLength":53},"repository_change_request_id":{"type":"string","nullable":true,"minLength":1,"maxLength":54},"render_hash":{"type":"string","nullable":true},"commit_sha":{"type":"string","nullable":true},"state":{"type":"string","enum":["running","deployed","skipped","failed"]},"message":{"type":"string","nullable":true},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["id","workspace_id","install_id","render_hash","state","created_at","updated_at"]},"CreateInstallRenderBody":{"type":"object","properties":{"message":{"type":"string","maxLength":255},"skip_unchanged":{"type":"boolean","nullable":true,"default":true},"extra_annotations":{"type":"object","additionalProperties":{"type":"string"}}},"additionalProperties":false},"InstallRenderList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/InstallRender"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"InstallStatus":{"type":"object","properties":{"install_id":{"type":"string","minLength":1,"maxLength":55},"health":{"type":"string","nullable":true},"sync":{"type":"string","nullable":true},"revision":{"type":"string","nullable":true},"resources":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/ResourceStatus"}},"operation_phase":{"type":"string","nullable":true},"updated_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds)"},"state":{"type":"string","enum":["pending","rendering","syncing","healthy","degraded","failed","deleted"],"description":"Install lifecycle state from the control plane perspective."},"reconciling":{"type":"boolean"}},"required":["install_id","health","sync","revision","resources","operation_phase","updated_at","state","reconciling"]},"PodList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Pod"}}},"required":["data"]},"Pod":{"type":"object","properties":{"name":{"type":"string"},"containers":{"type":"array","items":{"type":"string"}}},"required":["name","containers"]},"PackageList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Package"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"Package":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"html_url":{"type":"string","maxLength":2048,"format":"uri","description":"Absolute dashboard URL for this resource. OUTPUT_ONLY.","example":"https://akua.dev/packages/pkg_j572abc123def456"},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"name":{"type":"string"},"latest_version_id":{"type":"string","minLength":1,"maxLength":55},"description":{"type":"string","nullable":true},"source":{"$ref":"#/components/schemas/PackageSource"},"composed_from_sources":{"type":"array","nullable":true,"items":{"type":"object","additionalProperties":{"nullable":true}},"description":"Source provenance used to create this Package (helm URLs, OCI refs, git source details). Only visible in `view=full`."},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","html_url","workspace_id","name","latest_version_id","description","source","created_at"]},"PackageSource":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["hosted"]},"repository_id":{"type":"string","minLength":1,"maxLength":55,"description":"platform-hosted repository that contains the package source"}},"required":["kind","repository_id"]},{"type":"object","properties":{"kind":{"type":"string","enum":["oci"]},"oci_ref":{"type":"string","description":"OCI reference to the package source (no digest)"}},"required":["kind","oci_ref"]}]},"PackageWithVersionsList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PackageWithVersions"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"PackageWithVersions":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"name":{"type":"string"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/PackageVersionSummary"}}},"required":["id","name","versions"]},"PackageVersionSummary":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":55},"semver":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9]\\d*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\+([0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?$"}},"required":["id","semver"]},"PackageInventoryList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PackageInventoryRow"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"PackageInventoryRow":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"name":{"type":"string"},"description":{"type":"string","nullable":true},"source":{"$ref":"#/components/schemas/PackageSource"},"composed_from_sources":{"type":"array","nullable":true,"items":{"type":"object","additionalProperties":{"nullable":true}}},"versions":{"type":"array","items":{"$ref":"#/components/schemas/PackageVersionSummary"}},"has_more_versions":{"type":"boolean"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","workspace_id","name","description","source","versions","has_more_versions","created_at","etag"]},"PackageDetailResponse":{"type":"object","nullable":true,"properties":{"package":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"name":{"type":"string"},"description":{"type":"string","nullable":true},"source":{"$ref":"#/components/schemas/PackageSource"},"composed_from_sources":{"type":"array","nullable":true,"items":{"type":"object","additionalProperties":{"nullable":true}}},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","workspace_id","name","description","source","created_at","etag"]},"versions":{"type":"array","items":{"$ref":"#/components/schemas/PackageDetailVersion"}}},"required":["package","versions"]},"PackageDetailVersion":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":55},"package_id":{"type":"string","minLength":1,"maxLength":54},"semver":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9]\\d*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\+([0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?$"},"ref":{"type":"string"},"input_schema":{"$ref":"#/components/schemas/PackageVersionInputs"},"compatibility":{"type":"object","properties":{"clusterTypes":{"type":"array","items":{"type":"string"}},"kubernetes":{"type":"object","properties":{"minVersion":{"type":"string"},"maxVersion":{"type":"string"}}},"placement":{"type":"object","properties":{"providers":{"anyOf":[{"type":"string","enum":["any"]},{"type":"array","items":{"type":"string"}}]},"regions":{"anyOf":[{"type":"string","enum":["any"]},{"type":"array","items":{"type":"string"}}]}},"required":["providers","regions"]},"kaas":{"type":"object","properties":{"networkProfile":{"type":"string","enum":["linux_cilium","mixed_os_calico"]}},"required":["networkProfile"]}},"required":["clusterTypes","kubernetes","placement"]},"published_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","package_id","semver","ref","input_schema","published_at","created_at","etag"]},"PackageVersionInputs":{"type":"object","additionalProperties":{"nullable":true}},"PackageVersionList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PackageVersion"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"PackageVersion":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":55},"package_id":{"type":"string","minLength":1,"maxLength":54},"semver":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9]\\d*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\+([0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?$"},"ref":{"type":"string"},"input_schema":{"type":"object","additionalProperties":{"nullable":true}},"published_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","package_id","semver","ref","input_schema","published_at","created_at"]},"PackageArtifacthubValuesSchema":{"type":"object","properties":{"values":{"type":"object","additionalProperties":{"nullable":true},"description":"Parsed chart values object"},"schema":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"JSON Schema for the values (null when the values cannot be parsed)"},"values_yaml":{"type":"string","description":"Raw chart values YAML"}},"required":["values","schema","values_yaml"]},"ImportPackageBody":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","nullable":true,"maxLength":1000},"oci_ref":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^oci:\\/\\/","description":"OCI reference for the published Akua Package repository. If this registry matches an active workspace registry credential, Akua uses that credential to inspect the artifact."},"version":{"$ref":"#/components/schemas/CreatePackageVersionBody"}},"required":["name","oci_ref","version"],"additionalProperties":false},"CreatePackageVersionBody":{"type":"object","properties":{"semver":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9]\\d*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\+([0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?$","example":"1.2.3"},"ref":{"type":"string","minLength":1,"maxLength":512,"description":"Immutable package content reference. For OCI-backed packages this is normally the digest returned by `akua publish`; Akua verifies it against the published artifact before registering the version."},"input_schema":{"allOf":[{"$ref":"#/components/schemas/PackageVersionInputs"},{"description":"JSON Schema exported from the Akua package version. Used to render future install forms; Akua verifies it against the published artifact before registering the version."}]},"compatibility":{"type":"object","properties":{"clusterTypes":{"type":"array","items":{"type":"string"}},"kubernetes":{"type":"object","properties":{"minVersion":{"type":"string"},"maxVersion":{"type":"string"}}},"placement":{"type":"object","properties":{"providers":{"anyOf":[{"type":"string","enum":["any"]},{"type":"array","items":{"type":"string"}}]},"regions":{"anyOf":[{"type":"string","enum":["any"]},{"type":"array","items":{"type":"string"}}]}},"required":["providers","regions"]},"kaas":{"type":"object","properties":{"networkProfile":{"type":"string","enum":["linux_cilium","mixed_os_calico"]}},"required":["networkProfile"]}},"required":["clusterTypes","kubernetes","placement"]}},"required":["semver","ref","input_schema"],"additionalProperties":false},"PackageOperationEnvelope":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":53},"workspace_id":{"type":"string","nullable":true,"minLength":1,"maxLength":53},"organization_id":{"type":"string","nullable":true,"minLength":1,"maxLength":54},"owner_type":{"type":"string","enum":["install","repository_change_request","repository","workspace","machine","cluster","package"],"description":"Domain entity collection the operation acts on."},"owner_id":{"type":"string","description":"Prefixed ID of the entity this operation acts on. Prefix matches `owner_type` (`ws_`, `mch_`, `clu_`, `pkg_`, `inst_`, `rcr_`, `repo_`)."},"parent_operation_id":{"type":"string","nullable":true,"minLength":1,"maxLength":53,"description":"ID of the chained parent operation, when present."},"state":{"type":"string","enum":["RUNNING","SUCCEEDED","FAILED","CANCELLED"],"description":"Lifecycle state. Past-participle terminal states per AIP-216."},"done":{"type":"boolean","description":"True iff state is a terminal value."},"html_url":{"type":"string","maxLength":2048,"format":"uri","description":"Deep link to the dashboard view of this operation.","example":"https://akua.dev/packages/pkg_j572abc123def456?tab=operations"},"metadata":{"$ref":"#/components/schemas/PackageOperationMetadata"},"response":{"$ref":"#/components/schemas/PackageOperationResponse"},"error":{"type":"object","nullable":true,"properties":{"message":{"type":"string"}},"required":["message"],"description":"Populated when `state` is `FAILED` or `CANCELLED`."},"last_error":{"type":"object","nullable":true,"properties":{"message":{"type":"string"},"step_name":{"type":"string"}},"required":["message"],"description":"Latest error from any failed step. Populated even mid-flight; cleared when the step succeeds on retry."},"started_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"completed_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds)"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/PackageOperationStep"}}},"required":["id","workspace_id","organization_id","owner_type","owner_id","parent_operation_id","state","done","html_url","metadata","response","error","last_error","started_at","completed_at"]},"PackageOperationMetadata":{"type":"object","properties":{"type":{"type":"string","enum":["package.create"]},"idempotency_key":{"type":"string"},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"name":{"type":"string"}},"required":["type","idempotency_key","workspace_id","name"]},"PackageOperationResponse":{"type":"object","nullable":true,"properties":{"type":{"type":"string","enum":["package.create"]},"package_id":{"type":"string","minLength":1,"maxLength":54},"package_version_id":{"type":"string","minLength":1,"maxLength":55},"repository_id":{"type":"string","minLength":1,"maxLength":55}},"required":["type","package_id","package_version_id","repository_id"],"description":"Populated only when `done && state === \"SUCCEEDED\"`."},"PackageOperationStep":{"type":"object","properties":{"name":{"type":"string","description":"User-visible milestone name."},"status":{"type":"string","enum":["pending","running","completed","failed","skipped"],"description":"Step lifecycle state."},"execution_type":{"type":"string","enum":["system","user","approval","skipped"],"description":"Step execution kind. `user`/`approval` mean the workflow is blocked on a human action. Internal bookkeeping steps are filtered from public responses."},"started_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"completed_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds)"},"error_message":{"type":"string","nullable":true},"retryable":{"type":"boolean"},"skippable":{"type":"boolean"}},"required":["name","status","execution_type","started_at","completed_at","error_message","retryable","skippable"]},"CreatePackageBody":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"sources":{"type":"array","items":{"$ref":"#/components/schemas/CreatePackageHelmSource"},"minItems":1,"maxItems":1}},"required":["name","sources"],"additionalProperties":false},"CreatePackageHelmSource":{"type":"object","properties":{"kind":{"type":"string","enum":["helm"]},"repo_url":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^oci:\\/\\/"},"chart":{"type":"string","maxLength":255},"target_revision":{"type":"string","minLength":1,"maxLength":256},"path":{"type":"string","maxLength":2048},"values":{"type":"object","additionalProperties":{"nullable":true}}},"required":["kind","repo_url","target_revision"],"additionalProperties":false},"WorkspaceList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Workspace"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"Workspace":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID","example":"ws_j572abc123def456"},"name":{"type":"string","description":"Display name","example":"Acme Research"},"slug":{"type":"string","description":"URL-safe workspace slug"},"plan":{"type":"object","properties":{"tier":{"type":"string"},"billed_by":{"type":"string","enum":["platform","seller"]}},"required":["tier","billed_by"]},"workspace_class":{"type":"string","enum":["standard","platform","sandbox"]},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","name","slug","plan","workspace_class","created_at","updated_at","etag"]},"WorkspaceMemberList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceMember"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"WorkspaceMember":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54,"description":"Workspace member ID","example":"wsm_j572abc123def456"},"user_id":{"type":"string","description":"Member user ID","example":"usr_j572abc123def456"},"role":{"type":"string","enum":["owner","admin","member"]},"joined_at":{"type":"string","format":"date-time","description":"ISO 8601 join timestamp"}},"required":["id","user_id","role","joined_at"]},"WorkspaceSubscription":{"type":"object","properties":{"id":{"type":"string"},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"tier":{"type":"string"},"status":{"type":"string"},"cancellation_scheduled":{"type":"boolean"},"current_period_end":{"type":"string","nullable":true},"billed_by":{"type":"string","enum":["platform","seller"]},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["id","workspace_id","tier","status","cancellation_scheduled","current_period_end","billed_by","created_at"]},"WorkspaceAccessState":{"type":"object","properties":{"workspace_id":{"type":"string","minLength":1,"maxLength":53},"status":{"type":"string","enum":["active","payment_grace","restricted","suspended","ended","reactivating"]},"access_version":{"type":"integer","minimum":0},"accessible":{"type":"boolean"},"reason":{"type":"string","nullable":true,"enum":["payment_grace","restricted","suspended","ended","reactivating",null]},"reconciliation_status":{"type":"string","enum":["pending","reconciled","failed"]},"payment_grace_ends_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds)"},"restricted_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds)"},"suspend_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds)"},"ended_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds)"}},"required":["workspace_id","status","access_version","accessible","reason","reconciliation_status","payment_grace_ends_at","restricted_at","suspend_at","ended_at"]},"SubscriptionChangeRequestList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SubscriptionChangeRequest"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"SubscriptionChangeRequest":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":55},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"requested_tier":{"type":"string"},"status":{"type":"string"},"effective_at":{"type":"string","nullable":true},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["id","workspace_id","requested_tier","status","effective_at","created_at"]},"CreatedApiToken":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"name":{"type":"string"},"token":{"type":"string","description":"The full token. This is shown only once - store it securely.","example":"sk_akua_a3b2c4d5e6f7g8h9i0j1k2l3m4n5o6p7"}},"required":["id","workspace_id","name","token"]},"CreateApiTokenRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Human-readable name for the token","example":"My CLI token"},"expires_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds) when the token expires. Omit or pass null for no expiry.","example":1742169600}},"required":["name"],"additionalProperties":false},"ApiTokenList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ApiToken"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"ApiToken":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"name":{"type":"string","example":"My CLI token"},"prefix":{"type":"string","example":"sk_akua_a3b2","description":"Short identifier prefix of the full token, for display only."},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"last_used_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds) of last use, or null if never used"},"expires_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds) when the token expires, or null if never"}},"required":["id","workspace_id","name","prefix","created_at","last_used_at","expires_at"]},"RepositoryList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Repository"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"Repository":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":55},"name":{"type":"string"},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"},"reconciling":{"type":"boolean"},"purpose":{"type":"string","enum":["deploy"]},"cluster_id":{"type":"string","minLength":1,"maxLength":54},"last_deploy_sha":{"type":"string","nullable":true},"last_render_hash":{"type":"string","nullable":true}},"required":["id","name","workspace_id","created_at","updated_at","etag","reconciling","purpose","cluster_id"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":55},"name":{"type":"string"},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"},"reconciling":{"type":"boolean"},"purpose":{"type":"string","enum":["package"]},"package_id":{"type":"string","minLength":1,"maxLength":54}},"required":["id","name","workspace_id","created_at","updated_at","etag","reconciling","purpose","package_id"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":55},"name":{"type":"string"},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"},"reconciling":{"type":"boolean"},"purpose":{"type":"string","enum":["repository_change_request"]},"repository_change_request_id":{"type":"string","minLength":1,"maxLength":54}},"required":["id","name","workspace_id","created_at","updated_at","etag","reconciling","purpose","repository_change_request_id"]}]},"GithubInstallationUrl":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]},"GithubCreateInstallationUrlBody":{"type":"object","properties":{"redirect_url":{"type":"string","format":"uri"}},"additionalProperties":false},"GithubRepoList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/GithubRepo"}}},"required":["data"]},"GithubRepo":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string"},"full_name":{"type":"string"},"archived":{"type":"boolean"},"disabled":{"type":"boolean"},"default_branch":{"type":"string"},"html_url":{"type":"string"},"owner":{"type":"object","properties":{"id":{"type":"number"},"login":{"type":"string"},"type":{"type":"string"},"avatar_url":{"type":"string"},"html_url":{"type":"string"}},"required":["id","login","type","avatar_url","html_url"]}},"required":["id","name","full_name","archived","disabled","default_branch","html_url","owner"]},"GithubAppInstallationList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/GithubAppInstallation"}}},"required":["data"]},"GithubAppInstallation":{"type":"object","properties":{"installation_id":{"type":"integer","minimum":0,"exclusiveMinimum":true},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"account":{"type":"object","properties":{"type":{"type":"string","enum":["User","Organization"]},"login":{"type":"string"},"id":{"type":"number"}},"required":["type","login","id"]}},"required":["installation_id","workspace_id","account"]},"GithubWorkflowPrGet":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/GithubWorkflowPr"}},"required":["data"]},"GithubWorkflowPr":{"type":"object","nullable":true,"properties":{"pr_id":{"type":"integer","minimum":0,"exclusiveMinimum":true},"pr_url":{"type":"string","format":"uri"},"status":{"type":"string","enum":["open","merged","closed","draft"]}},"required":["pr_id","pr_url","status"]},"GithubWorkflowRunList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/GithubWorkflowRun"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"GithubWorkflowRun":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"custom":{"type":"object","properties":{"image":{"type":"string"},"sent_at":{"type":"number"}},"required":["image","sent_at"]},"installation":{"type":"object","properties":{"id":{"type":"number"}},"required":["id"]},"workflow_run":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string"},"path":{"type":"string"},"workflow_id":{"type":"number"},"run_number":{"type":"number"},"html_url":{"type":"string","format":"uri"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"run_started_at":{"type":"string"},"event":{"type":"string"},"head_branch":{"type":"string"},"head_sha":{"type":"string"},"status":{"type":"string","enum":["queued","in_progress","completed","action_required","cancelled","failure","neutral","skipped","stale","success","timed_out","requested","waiting","pending"]},"conclusion":{"type":"string","nullable":true,"enum":["success","failure","cancelled","timed_out","action_required","neutral","skipped","stale","startup_failure",null]},"actor":{"type":"object","properties":{"login":{"type":"string"},"id":{"type":"number"},"avatar_url":{"type":"string"},"html_url":{"type":"string","format":"uri"}},"required":["login","id"]},"referenced_workflows":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"sha":{"type":"string"},"ref":{"type":"string"}},"required":["path","sha"]}},"head_commit":{"type":"object","properties":{"id":{"type":"string"},"tree_id":{"type":"string"},"timestamp":{"type":"string"},"message":{"type":"string"},"author":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"}},"required":["name"]},"committer":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"}},"required":["name"]}},"required":["id","tree_id","timestamp","message","author","committer"]}},"required":["id","name","path","workflow_id","run_number","html_url","created_at","updated_at","run_started_at","event","head_branch","head_sha","status","conclusion","head_commit"]},"repository":{"type":"object","properties":{"id":{"type":"number"},"owner":{"type":"object","properties":{"login":{"type":"string"},"id":{"type":"number"},"avatar_url":{"type":"string","format":"uri"},"html_url":{"type":"string","format":"uri"}},"required":["login","id","avatar_url","html_url"]},"name":{"type":"string"},"full_name":{"type":"string"},"html_url":{"type":"string","format":"uri"}},"required":["id","owner","name","full_name","html_url"]}},"required":["id","installation","workflow_run","repository"]},"GithubPackagePermissions":{"type":"object","properties":{"has_warning":{"type":"boolean"},"warning":{"type":"string"},"fix_url":{"type":"string"}},"required":["has_warning"]},"GithubCheckPackagePermissionsBody":{"type":"object","properties":{"repository":{"type":"object","properties":{"id":{"type":"number"},"owner":{"type":"string"},"name":{"type":"string"}},"required":["id","owner","name"]},"installation_id":{"type":"integer","minimum":0,"exclusiveMinimum":true}},"required":["repository","installation_id"],"additionalProperties":false},"GithubWorkflowPrCreated":{"type":"object","properties":{"pr_id":{"type":"integer","minimum":0,"exclusiveMinimum":true},"pr_url":{"type":"string","format":"uri"},"status":{"type":"string","enum":["open"]}},"required":["pr_id","pr_url","status"]},"GithubCreateWorkflowPrBody":{"type":"object","properties":{"repository":{"type":"object","properties":{"id":{"type":"number"},"owner":{"type":"string"},"name":{"type":"string"},"default_branch":{"type":"string"}},"required":["id","owner","name","default_branch"]},"build_settings":{"type":"object","properties":{"buildContext":{"type":"string","default":"./"},"buildCommand":{"type":"string"},"startCommand":{"type":"string"},"installCommand":{"type":"string"},"buildAptPackages":{"type":"string"},"runtimeAptPackages":{"type":"string"}}},"installation_id":{"type":"integer","minimum":0,"exclusiveMinimum":true}},"required":["repository","build_settings","installation_id"],"additionalProperties":false},"GithubVerifyInstallationResponse":{"type":"object","properties":{"redirect_url":{"type":"string"}},"required":["redirect_url"]},"GithubVerifyInstallationBody":{"type":"object","properties":{"installation_id":{"type":"integer","minimum":0,"exclusiveMinimum":true},"code":{"type":"string","minLength":1},"state":{"type":"string","minLength":1}},"required":["installation_id","code","state"],"additionalProperties":false},"Secret":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"html_url":{"type":"string","maxLength":2048,"format":"uri","description":"Absolute dashboard URL for this resource. OUTPUT_ONLY.","example":"https://akua.dev/secrets/sec_j572abc123def456"},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"name":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","description":"Secret kind. Current public create values: cloud_provider/hcloud, cloud_provider/aws, cloud_provider/gcp, cloud_provider/azure, oci_registry, cloudflare_api, webhook_signing, generic. cloud_credential is migration-only metadata and cannot be used for new public creates.","example":"generic"},"description":{"type":"string","maxLength":500},"labels":{"type":"object","additionalProperties":{"type":"string","maxLength":200}},"state":{"type":"string","enum":["active","soft_deleted"]},"validation":{"$ref":"#/components/schemas/SecretValidation"},"mime_type":{"type":"string","maxLength":100},"version_aliases":{"type":"object","additionalProperties":{"type":"integer","minimum":0,"exclusiveMinimum":true}},"version_count":{"type":"integer","minimum":0},"enabled_version_count":{"type":"integer","minimum":0},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"deleted_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"purge_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"expire_time":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","html_url","workspace_id","name","kind","state","validation","version_count","enabled_version_count","created_at","updated_at","etag"]},"SecretValidation":{"type":"object","nullable":true,"properties":{"state":{"type":"string","enum":["unspecified","valid","invalid"]},"validated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"error":{"type":"string"}},"required":["state","validated_at"],"description":"Server-managed validation telemetry. Populated for credential-typed secrets; null otherwise. OUTPUT_ONLY — clients cannot set this on create/update."},"CreateSecretBody":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":500},"labels":{"type":"object","additionalProperties":{"type":"string","maxLength":200}},"kind":{"type":"string","enum":["cloud_provider/hcloud"]},"value":{"type":"string","minLength":1}},"required":["name","kind","value"],"additionalProperties":false},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":500},"labels":{"type":"object","additionalProperties":{"type":"string","maxLength":200}},"kind":{"type":"string","enum":["cloud_provider/aws"]},"value":{"type":"string","minLength":1},"aws_access_key_id":{"type":"string"}},"required":["name","kind","value"],"additionalProperties":false},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":500},"labels":{"type":"object","additionalProperties":{"type":"string","maxLength":200}},"kind":{"type":"string","enum":["cloud_provider/gcp"]},"value":{"type":"string","minLength":1}},"required":["name","kind","value"],"additionalProperties":false},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":500},"labels":{"type":"object","additionalProperties":{"type":"string","maxLength":200}},"kind":{"type":"string","enum":["cloud_provider/azure"]},"value":{"type":"string","minLength":1}},"required":["name","kind","value"],"additionalProperties":false},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":500},"labels":{"type":"object","additionalProperties":{"type":"string","maxLength":200}},"kind":{"type":"string","enum":["oci_registry"]},"value":{"type":"string","minLength":1},"username":{"type":"string"}},"required":["name","kind","value"],"additionalProperties":false},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":500},"labels":{"type":"object","additionalProperties":{"type":"string","maxLength":200}},"kind":{"type":"string","enum":["cloudflare_api"]},"value":{"type":"string","minLength":1}},"required":["name","kind","value"],"additionalProperties":false},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":500},"labels":{"type":"object","additionalProperties":{"type":"string","maxLength":200}},"kind":{"type":"string","enum":["webhook_signing"]},"value":{"type":"string","minLength":16}},"required":["name","kind","value"],"additionalProperties":false},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":500},"labels":{"type":"object","additionalProperties":{"type":"string","maxLength":200}},"kind":{"type":"string","enum":["generic"]},"value":{"type":"string","minLength":1}},"required":["name","kind","value"],"additionalProperties":false}]},"SecretList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Secret"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"UpdateSecretBody":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":500},"labels":{"type":"object","additionalProperties":{"type":"string","maxLength":200}},"mime_type":{"type":"string","maxLength":100},"version_aliases":{"type":"object","additionalProperties":{"type":"integer","minimum":0,"exclusiveMinimum":true}}},"additionalProperties":false},"ValidateProviderTokenResult":{"type":"object","properties":{"valid":{"type":"boolean","description":"Whether the token authenticated successfully."},"error":{"type":"string","description":"Human-readable reason when `valid` is false."}},"required":["valid"]},"ValidateProviderTokenBody":{"type":"object","properties":{"provider":{"type":"string","enum":["hcloud"],"description":"Cloud provider to validate the token against."},"value":{"type":"string","minLength":1,"description":"The provider API token to probe. Consumed, never stored."}},"required":["provider","value"]},"SecretVersion":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":55},"secret_id":{"type":"string","minLength":1,"maxLength":54},"version_number":{"type":"integer","minimum":0,"exclusiveMinimum":true},"state":{"type":"string","enum":["enabled","disabled","destroyed"]},"comment":{"type":"string","maxLength":200},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"destroyed_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","secret_id","version_number","state","created_at","etag"]},"CreateSecretVersionBody":{"type":"object","properties":{"value":{"type":"string","minLength":1},"comment":{"type":"string","maxLength":200}},"required":["value"],"additionalProperties":false},"SecretVersionList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SecretVersion"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"SecretPlaintext":{"type":"object","properties":{"value":{"type":"string"}},"required":["value"]},"StripeAccountCreated":{"type":"object","properties":{"stripe_account_id":{"type":"string"}},"required":["stripe_account_id"]},"CreateStripeAccountBody":{"type":"object","properties":{},"additionalProperties":false},"StripeAccountStatus":{"type":"object","properties":{"stripe_account_id":{"type":"string"},"charges_enabled":{"type":"boolean"},"payouts_enabled":{"type":"boolean"}},"required":["stripe_account_id","charges_enabled","payouts_enabled"]},"StripeAccountLinkCreated":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]},"CreateStripeAccountLinkBody":{"type":"object","properties":{"return_url":{"type":"string","format":"uri"},"refresh_url":{"type":"string","format":"uri"}},"additionalProperties":false},"StripeAccountSessionCreated":{"type":"object","properties":{"client_secret":{"type":"string"}},"required":["client_secret"]},"CreateStripeAccountSessionBody":{"type":"object","properties":{},"additionalProperties":false},"WorkspaceStripeProducts":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/StripeProduct"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."},"stripe_account_id":{"type":"string","nullable":true}},"required":["data","has_more","next_cursor","stripe_account_id"]},"StripeProduct":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"images":{"type":"array","items":{"type":"string"}},"prices":{"type":"array","items":{"$ref":"#/components/schemas/StripePrice"}}},"required":["id","name","images","prices"]},"StripePrice":{"type":"object","properties":{"id":{"type":"string"},"currency":{"type":"string"},"billing_scheme":{"type":"string"},"nickname":{"type":"string","nullable":true},"unit_amount":{"type":"number","nullable":true},"unit_amount_decimal":{"type":"string","nullable":true},"recurring":{"type":"object","nullable":true,"properties":{"interval":{"type":"string"},"interval_count":{"type":"number"},"usage_type":{"type":"string"}},"required":["interval","interval_count","usage_type"]}},"required":["id","currency","billing_scheme","nickname","unit_amount","unit_amount_decimal","recurring"]},"UpgradeCheckoutCreated":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]},"CreateUpgradeCheckoutBody":{"type":"object","properties":{"success_url":{"type":"string","format":"uri"},"cancel_url":{"type":"string","format":"uri"}},"required":["success_url","cancel_url"],"additionalProperties":false},"BillingPortalSessionCreated":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]},"CreateBillingPortalSessionBody":{"type":"object","properties":{"return_url":{"type":"string","format":"uri"}},"required":["return_url"],"additionalProperties":false},"ClusterList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Cluster"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"Cluster":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"html_url":{"type":"string","maxLength":2048,"format":"uri","description":"Absolute dashboard URL for this resource. OUTPUT_ONLY.","example":"https://akua.dev/clusters/clu_j572abc123def456"},"name":{"type":"string"},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"state":{"type":"string","enum":["pending","provisioning","active","suspended","deleting"],"description":"Cluster lifecycle state in canonical lowercase, past-participle naming."},"provider":{"type":"string","enum":["managed_kaas","imported_byoc"],"description":"Cluster control-plane family: managed (`managed_kaas`) vs imported self-managed (`imported_byoc`)."},"reconciling":{"type":"boolean"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","html_url","name","workspace_id","state","provider","reconciling","created_at","updated_at","etag"]},"DashboardClusterList":{"type":"object","properties":{"clusters":{"type":"array","items":{"$ref":"#/components/schemas/DashboardCluster"}},"regions":{"type":"array","items":{"$ref":"#/components/schemas/DashboardClusterRegion"}}},"required":["clusters","regions"]},"DashboardCluster":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"html_url":{"type":"string","maxLength":2048,"format":"uri","description":"Absolute dashboard URL for this resource. OUTPUT_ONLY.","example":"https://akua.dev/clusters/clu_j572abc123def456"},"name":{"type":"string"},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"region_id":{"type":"string","minLength":1,"maxLength":54},"region":{"$ref":"#/components/schemas/DashboardClusterRegion"},"kaas":{"$ref":"#/components/schemas/ClusterKaas"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"product_count":{"type":"integer","minimum":0},"installs_count":{"type":"integer","minimum":0},"etag":{"type":"string"}},"required":["id","html_url","name","workspace_id","region_id","region","kaas","created_at","updated_at","product_count","installs_count","etag"]},"DashboardClusterRegion":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"name":{"type":"string"},"icon":{"type":"string","nullable":true},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["id","name","icon","workspace_id","created_at"]},"ClusterKaas":{"type":"object","nullable":true,"properties":{"namespace":{"type":"string"},"version":{"type":"string"},"network_profile":{"type":"string","enum":["linux_cilium","mixed_os_calico"],"default":"linux_cilium","description":"Immutable networking profile for managed KaaS clusters. Defaults to `linux_cilium`; Windows workers require `mixed_os_calico`."},"status":{"type":"string","enum":["PROVISIONING","RUNNING","RECONCILING","SUSPENDING","SUSPENDED","RESUMING","DELETING","ERROR","DEGRADED"]},"status_message":{"type":"string","nullable":true},"suspended_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds)"},"suspended_by":{"type":"string","nullable":true}},"required":["namespace","version","network_profile","status","status_message","suspended_at","suspended_by"]},"ClusterCapabilities":{"type":"object","properties":{"api_groups":{"type":"array","items":{"type":"string"}},"storage_classes":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"provisioner":{"type":"string"},"is_default":{"type":"boolean"},"reclaim_policy":{"type":"string"},"volume_binding_mode":{"type":"string"}},"required":["name","provisioner","is_default","reclaim_policy","volume_binding_mode"]}},"gateway_classes":{"type":"array","items":{"type":"string"}},"gateways":{"type":"array","items":{"type":"object","properties":{"namespace":{"type":"string"},"name":{"type":"string"},"gateway_class_name":{"type":"string"},"listeners":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"protocol":{"type":"string"},"port":{"type":"number"},"hostname":{"type":"string"}},"required":["name","protocol","port"]}},"addresses":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"value":{"type":"string"}},"required":["type","value"]}},"status":{"type":"string","enum":["Ready","Accepted","Pending","Error","Unknown"]},"status_message":{"type":"string"}},"required":["namespace","name","gateway_class_name","listeners"]}},"default_gateway":{"type":"object","properties":{"namespace":{"type":"string"},"name":{"type":"string"}},"required":["namespace","name"]},"ingress_classes":{"type":"array","items":{"type":"string"}},"nodes":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"ready":{"type":"boolean"},"worker_capacity":{"type":"boolean"},"status_message":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}},"created_at":{"type":"string"},"version":{"type":"string"},"cpu_capacity":{"type":"string"},"memory_capacity":{"type":"string"},"os_image":{"type":"string"},"operating_system":{"type":"string"},"architecture":{"type":"string"}},"required":["name","roles","version","cpu_capacity","memory_capacity","os_image","architecture"]}}},"required":["api_groups","storage_classes","gateway_classes","gateways","ingress_classes","nodes"]},"Kubeconfig":{"type":"object","properties":{"kubeconfig":{"type":"string"}},"required":["kubeconfig"]},"ExecResult":{"type":"object","properties":{"output":{"type":"string"},"exit_code":{"type":"integer"},"duration_ms":{"type":"number","minimum":0}},"required":["output","exit_code","duration_ms"]},"ExecBody":{"type":"object","properties":{"namespace":{"type":"string","minLength":1,"maxLength":253},"pod":{"type":"string","minLength":1,"maxLength":253},"container":{"type":"string","minLength":1,"maxLength":253},"command":{"type":"array","items":{"type":"string"}}},"required":["namespace","pod","command"],"additionalProperties":false},"WorkerBootstrap":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"cluster_id":{"type":"string","minLength":1,"maxLength":54},"status":{"type":"string","enum":["active","revoked","expired"],"description":"Lifecycle state for a one-time worker bootstrap token."},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"expires_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"},"token":{"type":"string","description":"One-time-view bearer token. Populated only on the create response; never returned on subsequent GET/LIST/:revoke reads."},"command":{"type":"string","description":"Bash bootstrap command with the token already substituted, ready to run on a worker node. Reveal-on-create only."},"cloud_init":{"type":"string","description":"Cloud-init YAML with the token already substituted, ready to use as worker-node user-data. Reveal-on-create only."},"artifacts":{"$ref":"#/components/schemas/WorkerBootstrapArtifacts"}},"required":["id","cluster_id","status","created_at","updated_at","etag"]},"WorkerBootstrapList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WorkerBootstrap"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"AdminStatus":{"type":"object","properties":{"is_admin":{"type":"boolean","description":"Whether the authenticated user has platform administrator access."}},"required":["is_admin"],"x-platform-visibility":"ADMIN"},"DashboardCounts":{"type":"object","properties":{"install_count":{"type":"integer","minimum":0},"product_count":{"type":"integer","minimum":0},"cluster_count":{"type":"integer","minimum":0}},"required":["install_count","product_count","cluster_count"],"x-platform-visibility":"INTERNAL"},"OrganizationList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Organization"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"Organization":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"name":{"type":"string","example":"Code Zero"},"slug":{"type":"string","nullable":true,"example":"code-zero"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","name","slug","created_at","updated_at","etag"]},"OrganizationCreateRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":50,"pattern":"^[\\p{L}\\p{N}](?:[\\p{L}\\p{N}\\s\\-'&.]*[\\p{L}\\p{N}])?$/u"},"slug":{"type":"string","minLength":3,"maxLength":39,"pattern":"^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"}},"required":["name"],"additionalProperties":false},"OrganizationOk":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"]},"OrganizationUpdateRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":50,"pattern":"^[\\p{L}\\p{N}](?:[\\p{L}\\p{N}\\s\\-'&.]*[\\p{L}\\p{N}])?$/u"},"slug":{"type":"string","minLength":3,"maxLength":39,"pattern":"^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"}},"additionalProperties":false},"OrganizationMemberList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationMember"}}},"required":["data"]},"OrganizationMember":{"type":"object","properties":{"user_id":{"type":"string","example":"user_abc123","description":"BetterAuth user ID of the member"},"role":{"type":"string","enum":["owner","admin","member"],"description":"Membership role in the organization","example":"admin"},"joined_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["user_id","role","joined_at","updated_at","etag"]},"OrganizationAddMemberRequest":{"type":"object","properties":{"user_id":{"type":"string","example":"user_abc123","description":"BetterAuth user ID of the user to add"},"role":{"type":"string","enum":["owner","admin","member"],"default":"member","description":"Membership role in the organization"}},"required":["user_id"],"additionalProperties":false},"OrganizationUpdateMemberRoleRequest":{"type":"object","properties":{"role":{"type":"string","enum":["owner","admin","member"],"description":"Membership role in the organization"}},"required":["role"],"additionalProperties":false},"ManagedWorkspaceList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ManagedWorkspace"}}},"required":["data"]},"ManagedWorkspace":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":53},"name":{"type":"string","example":"My Workspace"},"icon":{"type":"string","nullable":true,"example":null},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["id","name","icon","created_at"]},"NotificationList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Notification"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"Notification":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"type":{"type":"string","example":"machine_expiry"},"resource_type":{"type":"string","example":"machine"},"resource_id":{"type":"string"},"title":{"type":"string","nullable":true},"body":{"type":"string","nullable":true},"severity":{"type":"string","nullable":true,"enum":["info","warning","critical",null],"description":"Severity level surfaced to UI indicators."},"context":{"type":"object","nullable":true,"additionalProperties":{"type":"string"}},"read_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds) when read, null if unread"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["id","type","resource_type","resource_id","title","body","severity","context","read_at","created_at"]},"UnreadCount":{"type":"object","properties":{"count":{"type":"number"}},"required":["count"]},"QuotaInfoList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/QuotaInfo"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"QuotaInfo":{"type":"object","properties":{"metric":{"type":"string","example":"compute/machines","description":"Metric: service/resource"},"type":{"type":"string","enum":["allocation","rate","concurrency"],"description":"Allocation = max owned, rate = max per time window, concurrency = max in-flight.","example":"allocation"},"display_name":{"type":"string","example":"Compute machines"},"unit":{"type":"string","enum":["count","cores","bytes","seconds","count/day","count/minute","cents/day"],"description":"Unit the limit/usage numbers are measured in.","example":"count"},"limit":{"type":"number","example":1},"usage":{"type":"number","example":0},"remaining":{"type":"number","example":1},"resets_at":{"type":"integer","minimum":0,"description":"For rate quotas: Unix timestamp (seconds) reset time"}},"required":["metric","type","display_name","unit","limit","usage","remaining"]},"RegionList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Region"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"Region":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"name":{"type":"string","example":"us-east-1"},"icon":{"type":"string","nullable":true,"description":"Icon URL"},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["id","name","icon","workspace_id","created_at"]},"DashboardRegionList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DashboardRegion"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"DashboardRegion":{"allOf":[{"$ref":"#/components/schemas/Region"},{"type":"object","properties":{"cluster_pool_health":{"$ref":"#/components/schemas/ClusterPoolHealth"}},"required":["cluster_pool_health"]}]},"ClusterPoolHealth":{"type":"object","properties":{"region_id":{"type":"string","minLength":1,"maxLength":54},"target_size":{"type":"number"},"enabled":{"type":"boolean"},"available":{"type":"number"},"provisioning":{"type":"number"},"allocation_requests":{"type":"number"},"allocated_last_24h":{"type":"number"},"deleted_last_24h":{"type":"number"},"failed_last_24h":{"type":"number"},"last_refill_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"last_error":{"type":"string"}},"required":["region_id","target_size","enabled","available","provisioning","allocation_requests","allocated_last_24h","deleted_last_24h","failed_last_24h"]},"RegistryCredentialList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RegistryCredential"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"RegistryCredential":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":55},"name":{"type":"string","example":"GitHub Container Registry"},"registry_url":{"type":"string","example":"ghcr.io"},"type":{"type":"string","enum":["basic","token","oauth"],"description":"Authentication scheme used to talk to the upstream registry."},"is_active":{"type":"boolean","description":"Whether the credential is active"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"last_used_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds), null if never used"}},"required":["id","name","registry_url","type","is_active","created_at","last_used_at"]},"RegistryStats":{"type":"object","properties":{"total_pulls":{"type":"number"},"successful_pulls":{"type":"number"},"failed_pulls":{"type":"number"},"success_rate":{"type":"number"},"auth_successes":{"type":"number"},"auth_failures":{"type":"number"},"by_registry":{"type":"array","items":{"type":"object","properties":{"registry_url":{"type":"string"},"pulls":{"type":"number"},"failures":{"type":"number"}},"required":["registry_url","pulls","failures"]}},"latency":{"type":"object","properties":{"avg":{"type":"number","nullable":true},"p95":{"type":"number","nullable":true}},"required":["avg","p95"]}},"required":["total_pulls","successful_pulls","failed_pulls","success_rate","auth_successes","auth_failures","by_registry","latency"]},"RegistryActivityResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RegistryActivityBucket"}}},"required":["data"]},"RegistryActivityBucket":{"type":"object","properties":{"timestamp":{"type":"number","description":"Unix timestamp in milliseconds."},"success":{"type":"number"},"failed":{"type":"number"}},"required":["timestamp","success","failed"]},"RegistryAuditLogList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RegistryAuditLog"}}},"required":["data"]},"RegistryAuditLog":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"timestamp":{"type":"number","description":"Unix timestamp in milliseconds."},"operation":{"type":"string","enum":["pull_manifest","pull_blob","pull_failed","auth_success","auth_failed"]},"registry_url":{"type":"string"},"repository":{"type":"string"},"reference":{"type":"string","nullable":true},"success":{"type":"boolean"},"install_name":{"type":"string","nullable":true}},"required":["id","timestamp","operation","registry_url","repository","reference","success","install_name"]},"RegistryErrorList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RegistryError"}}},"required":["data"]},"RegistryError":{"type":"object","properties":{"message":{"type":"string"},"count":{"type":"number"}},"required":["message","count"]},"CreateRepositoryChangeRequestResponse":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"html_url":{"type":"string","maxLength":2048,"format":"uri","description":"Absolute dashboard URL for this resource. OUTPUT_ONLY.","example":"https://akua.dev/repository-change-requests/rcr_j572abc123def456"},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"parent_repository_id":{"type":"string","minLength":1,"maxLength":55},"fork_repository_id":{"type":"string","minLength":1,"maxLength":55},"state":{"type":"string","enum":["AWAITING_CHANGES","VALIDATING","READY","ACCEPTING","ACCEPTED","REJECTED","WITHDRAWN","EXPIRED","FAILED"],"description":"Repository change request lifecycle state"},"change_type":{"type":"string","enum":["manifest_patch","inputs_change","package_change","unknown"]},"created_by_type":{"type":"string","enum":["user","wizard","agent"]},"created_by_id":{"type":"string"},"remediation_evidence":{"type":"object","nullable":true,"properties":{"summary":{"type":"string","minLength":1,"maxLength":2000},"likely_fix":{"type":"string","minLength":1,"maxLength":2000},"resource_refs":{"type":"array","items":{"type":"object","properties":{"resource":{"type":"string","minLength":1,"maxLength":120},"id":{"type":"string","minLength":1,"maxLength":200}},"required":["resource","id"],"additionalProperties":false},"minItems":1,"maxItems":20}},"required":["summary","likely_fix","resource_refs"],"additionalProperties":false},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"expires_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"rejection_reason":{"type":"string","nullable":true},"etag":{"type":"string"}},"required":["id","html_url","workspace_id","parent_repository_id","fork_repository_id","state","change_type","created_by_type","created_by_id","remediation_evidence","created_at","updated_at","expires_at","rejection_reason","etag"]},"CreateRepositoryChangeRequestBody":{"oneOf":[{"type":"object","properties":{"parent_repository_id":{"type":"string","minLength":1,"maxLength":55,"description":"Repository that will receive the accepted change request."},"expires_at_seconds":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Seconds until the repository change request expires."},"kind":{"type":"string","enum":["user"]}},"required":["parent_repository_id","kind"],"additionalProperties":false},{"type":"object","properties":{"parent_repository_id":{"type":"string","minLength":1,"maxLength":55,"description":"Repository that will receive the accepted change request."},"expires_at_seconds":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Seconds until the repository change request expires."},"kind":{"type":"string","enum":["wizard"]}},"required":["parent_repository_id","kind"],"additionalProperties":false},{"type":"object","properties":{"parent_repository_id":{"type":"string","minLength":1,"maxLength":55,"description":"Repository that will receive the accepted change request."},"expires_at_seconds":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Seconds until the repository change request expires."},"kind":{"type":"string","enum":["agent"],"description":"Agent actor creating the change request."},"agent_id":{"type":"string","minLength":1,"maxLength":54,"description":"Agent that found the likely source or configuration fix."},"remediation_evidence":{"type":"object","properties":{"summary":{"type":"string","minLength":1,"maxLength":2000},"likely_fix":{"type":"string","minLength":1,"maxLength":2000},"resource_refs":{"type":"array","items":{"type":"object","properties":{"resource":{"type":"string","minLength":1,"maxLength":120},"id":{"type":"string","minLength":1,"maxLength":200}},"required":["resource","id"],"additionalProperties":false},"minItems":1,"maxItems":20}},"required":["summary","likely_fix","resource_refs"],"additionalProperties":false,"description":"Evidence that the agent found a likely source or configuration fix before opening the change request."}},"required":["parent_repository_id","kind","agent_id","remediation_evidence"],"additionalProperties":false}]},"CreateRepositoryChangeRequestTokenResponse":{"type":"object","properties":{"repository_change_request_id":{"type":"string","minLength":1,"maxLength":54},"fork_remote_url":{"type":"string","format":"uri"},"fork_write_token":{"type":"string"},"expires_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["repository_change_request_id","fork_remote_url","fork_write_token","expires_at"]},"CreateRepositoryChangeRequestTokenBody":{"type":"object","properties":{"scope":{"type":"string","enum":["read","write"],"default":"write"},"expires_in_seconds":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":3600,"description":"Seconds until the fork write token expires. Maximum is one hour."}},"additionalProperties":false},"RepositoryChangeRequestList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RepositoryChangeRequest"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"RepositoryChangeRequest":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"html_url":{"type":"string","maxLength":2048,"format":"uri","description":"Absolute dashboard URL for this resource. OUTPUT_ONLY.","example":"https://akua.dev/repository-change-requests/rcr_j572abc123def456"},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"parent_repository_id":{"type":"string","minLength":1,"maxLength":55},"fork_repository_id":{"type":"string","minLength":1,"maxLength":55},"state":{"type":"string","enum":["AWAITING_CHANGES","VALIDATING","READY","ACCEPTING","ACCEPTED","REJECTED","WITHDRAWN","EXPIRED","FAILED"],"description":"Repository change request lifecycle state"},"change_type":{"type":"string","enum":["manifest_patch","inputs_change","package_change","unknown"]},"created_by_type":{"type":"string","enum":["user","wizard","agent"]},"created_by_id":{"type":"string"},"remediation_evidence":{"type":"object","nullable":true,"properties":{"summary":{"type":"string","minLength":1,"maxLength":2000},"likely_fix":{"type":"string","minLength":1,"maxLength":2000},"resource_refs":{"type":"array","items":{"type":"object","properties":{"resource":{"type":"string","minLength":1,"maxLength":120},"id":{"type":"string","minLength":1,"maxLength":200}},"required":["resource","id"],"additionalProperties":false},"minItems":1,"maxItems":20}},"required":["summary","likely_fix","resource_refs"],"additionalProperties":false},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"expires_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"rejection_reason":{"type":"string","nullable":true},"etag":{"type":"string"}},"required":["id","html_url","workspace_id","parent_repository_id","fork_repository_id","state","change_type","created_by_type","created_by_id","remediation_evidence","created_at","updated_at","expires_at","rejection_reason","etag"]},"AcceptRepositoryChangeRequestResponse":{"type":"object","properties":{"repository_change_request_id":{"type":"string","minLength":1,"maxLength":54},"operation_id":{"type":"string","minLength":1,"maxLength":53},"accepted_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["repository_change_request_id","operation_id","accepted_at"]},"RejectRepositoryChangeRequestResponse":{"type":"object","properties":{"repository_change_request_id":{"type":"string","minLength":1,"maxLength":54},"rejected_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["repository_change_request_id","rejected_at"]},"RejectRepositoryChangeRequestBody":{"type":"object","properties":{"rejection_reason":{"type":"string","minLength":1,"maxLength":2000,"description":"Reason shown in audit logs and review UI."}},"required":["rejection_reason"],"additionalProperties":false},"WithdrawRepositoryChangeRequestResponse":{"type":"object","properties":{"repository_change_request_id":{"type":"string","minLength":1,"maxLength":54},"withdrawn_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["repository_change_request_id","withdrawn_at"]},"Agent":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"organization_id":{"type":"string","nullable":true,"minLength":1,"maxLength":54},"name":{"type":"string"},"description":{"type":"string","nullable":true},"instructions":{"type":"string"},"state":{"type":"string","enum":["ENABLED","ARCHIVED"]},"origin":{"type":"string","enum":["PLATFORM","USER","SYSTEM"]},"capabilities":{"type":"array","items":{"type":"string","enum":["CHAT","CODING","AMBIENT"]}},"ambient":{"$ref":"#/components/schemas/AgentAmbientConfig"},"model_policy":{"$ref":"#/components/schemas/AgentModelPolicy"},"created_by":{"type":"string"},"usage_summary":{"$ref":"#/components/schemas/AgentUsageSummary"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","workspace_id","organization_id","name","description","instructions","state","origin","capabilities","ambient","model_policy","created_by","usage_summary","created_at","updated_at","etag"]},"AgentAmbientConfig":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean"},"policy":{"$ref":"#/components/schemas/AgentAmbientPolicy"},"triggers":{"type":"array","items":{"$ref":"#/components/schemas/AgentAmbientTrigger"},"maxItems":50}},"required":["enabled","triggers"]},"AgentAmbientPolicy":{"type":"object","properties":{"remediation_mode":{"type":"string","enum":["READ_ONLY","APPROVAL_GATED"]},"allowed_resource_scopes":{"type":"array","items":{"$ref":"#/components/schemas/AgentAmbientResourceScope"},"maxItems":100},"max_spend_cents_per_trigger":{"type":"integer","minimum":0}},"required":["remediation_mode","allowed_resource_scopes"]},"AgentAmbientResourceScope":{"type":"object","properties":{"type":{"type":"string","minLength":1,"maxLength":120},"id":{"type":"string","minLength":1,"maxLength":200}},"required":["type"]},"AgentAmbientTrigger":{"type":"object","properties":{"trigger_id":{"type":"string","minLength":1,"maxLength":120},"type":{"type":"string","enum":["INSTALL_STATE","CLUSTER_DEGRADATION","SECURITY_FINDING","QUOTA_PRESSURE","COST_ANOMALY","MANUAL_TEST"]},"state":{"type":"string","enum":["ENABLED","DISABLED"]},"severity_min":{"type":"string","enum":["LOW","MEDIUM","HIGH","CRITICAL"]},"runtime_hint":{"type":"string","enum":["AUTO","CODE_MODE","RETAINED_RUNTIME"]},"cooldown_seconds":{"type":"integer","minimum":0,"exclusiveMinimum":true},"relationship_scope":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["WORKSPACE"]}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["SELLER_CUSTOMER"]},"seller_workspace_id":{"type":"string","minLength":1,"maxLength":53},"customer_workspace_id":{"type":"string","minLength":1,"maxLength":53},"support_relationship_id":{"type":"string","minLength":1,"maxLength":200}},"required":["type","seller_workspace_id","customer_workspace_id"]}]},"resource_filters":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","minLength":1,"maxLength":120},"id":{"type":"string","minLength":1,"maxLength":200}},"required":["type","id"]},"maxItems":50},"quiet_hours":{"type":"object","properties":{"timezone":{"type":"string","minLength":1,"maxLength":120},"start":{"type":"string","pattern":"^\\d{2}:\\d{2}$"},"end":{"type":"string","pattern":"^\\d{2}:\\d{2}$"}},"required":["timezone","start","end"]}},"required":["trigger_id","type","state","runtime_hint"]},"AgentModelPolicy":{"type":"object","properties":{"default_model":{"type":"string","minLength":1,"maxLength":120},"billing_mode":{"type":"string","enum":["PLATFORM_SUBSCRIPTION","PLATFORM_API","WORKSPACE_BYOK"]},"credential_secret_id":{"type":"string","nullable":true,"minLength":1,"maxLength":54},"allowed_models":{"type":"array","items":{"type":"string","minLength":1,"maxLength":120},"minItems":1,"maxItems":50},"severity_model_overrides":{"type":"array","items":{"type":"object","properties":{"severity":{"type":"string","enum":["LOW","MEDIUM","HIGH","CRITICAL"]},"model":{"type":"string","minLength":1,"maxLength":120}},"required":["severity","model"]},"maxItems":4},"max_budget_cents":{"type":"integer","minimum":0},"budget_period":{"type":"string","enum":["DAY","WEEK","MONTH"]},"max_turn_budget_cents":{"type":"integer","minimum":0}},"required":["default_model","billing_mode","credential_secret_id","allowed_models"]},"AgentUsageSummary":{"type":"object","properties":{"provider_cost_cents":{"type":"integer","minimum":0},"provider_token_count":{"type":"integer","minimum":0},"runtime_compute_seconds":{"type":"number","minimum":0},"runtime_storage_gb_hours":{"type":"number","minimum":0},"mcp_call_count":{"type":"integer","minimum":0},"api_call_count":{"type":"integer","minimum":0},"ambient_trigger_count":{"type":"integer","minimum":0}},"required":["provider_cost_cents","provider_token_count","runtime_compute_seconds","runtime_storage_gb_hours","mcp_call_count","api_call_count","ambient_trigger_count"]},"AgentList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Agent"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"AgentSkillList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AgentSkill"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"AgentSkill":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"name":{"type":"string"},"version":{"type":"string"},"description":{"type":"string"},"state":{"type":"string","enum":["PUBLISHED","ARCHIVED"]},"required_grants":{"type":"array","items":{"type":"object","properties":{"resource":{"type":"string"},"actions":{"type":"array","items":{"type":"string"}}},"required":["resource","actions"]}},"supported_capabilities":{"type":"array","items":{"type":"string","enum":["CHAT","CODING","AMBIENT"]}},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","workspace_id","name","version","description","state","required_grants","supported_capabilities","created_at","updated_at","etag"]},"AgentTemplateList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AgentTemplate"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"AgentTemplate":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":56},"name":{"type":"string"},"description":{"type":"string"},"instructions":{"type":"string"},"state":{"type":"string","enum":["PUBLISHED"]},"capabilities":{"type":"array","items":{"type":"string","enum":["CHAT","CODING","AMBIENT"]}},"ambient":{"$ref":"#/components/schemas/AgentAmbientConfig"},"trigger_filters":{"type":"array","items":{"$ref":"#/components/schemas/AgentTemplateTriggerFilter"}},"model_policy":{"$ref":"#/components/schemas/AgentModelPolicy"},"runtime_policy":{"$ref":"#/components/schemas/AgentRuntimePolicy"},"remediation_policy":{"$ref":"#/components/schemas/AgentTemplateRemediationPolicy"},"grants":{"type":"array","items":{"type":"object","properties":{"resource":{"type":"string"},"actions":{"type":"array","items":{"type":"string"}}},"required":["resource","actions"]}},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","name","description","instructions","state","capabilities","ambient","trigger_filters","model_policy","runtime_policy","remediation_policy","grants","created_at","updated_at","etag"]},"AgentTemplateTriggerFilter":{"type":"object","properties":{"type":{"type":"string","enum":["INSTALL_STATE","CLUSTER_DEGRADATION","SECURITY_FINDING","QUOTA_PRESSURE","COST_ANOMALY","MANUAL_TEST"]},"resource_types":{"type":"array","items":{"type":"string"}},"states":{"type":"array","items":{"type":"string"}},"min_severity":{"type":"string","enum":["LOW","MEDIUM","HIGH","CRITICAL"]}},"required":["type","resource_types","states"]},"AgentRuntimePolicy":{"type":"object","properties":{"execution_environment":{"type":"string","enum":["CODE_MODE_FIRST","RETAINED_RUNTIME_ALLOWED","NO_RETAINED_RUNTIME"]},"filesystem":{"type":"string"},"shell":{"type":"string"},"browser":{"type":"string"}},"required":["execution_environment","filesystem","shell","browser"]},"AgentTemplateRemediationPolicy":{"type":"object","nullable":true,"properties":{"repository_change_request":{"$ref":"#/components/schemas/AgentTemplateRepositoryChangeRequestRemediationPolicy"}},"required":["repository_change_request"]},"AgentTemplateRepositoryChangeRequestRemediationPolicy":{"type":"object","properties":{"mode":{"type":"string","enum":["LIKELY_SOURCE_OR_CONFIG_FIX_ONLY"]},"evidence_required":{"type":"boolean"},"allowed_actions":{"type":"array","items":{"type":"string"}},"blocked_actions":{"type":"array","items":{"type":"string"}}},"required":["mode","evidence_required","allowed_actions","blocked_actions"]},"AgentPreference":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"user_id":{"type":"string"},"communication_profile":{"type":"string","enum":["BEGINNER","INTERMEDIATE","ADVANCED","EXPERT","ADAPTIVE"]},"learning_mode_enabled":{"type":"boolean"},"seen_concepts":{"type":"array","items":{"type":"string"}},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","workspace_id","user_id","communication_profile","learning_mode_enabled","seen_concepts","created_at","updated_at","etag"]},"SandboxOperationsSummary":{"type":"object","properties":{"active_sandbox_count":{"type":"integer","minimum":0},"idle_retained_filesystem_count":{"type":"integer","minimum":0},"retained_filesystem_age_ms":{"type":"number","minimum":0},"estimated_retained_filesystem_gb_hours":{"type":"number","minimum":0},"stuck_sandbox_count_by_state":{"type":"array","items":{"type":"object","properties":{"state":{"type":"string","enum":["CREATING","STARTING","ACTIVE","STOPPING","STOPPED","DELETING","DELETED","FAILED"]},"count":{"type":"integer","minimum":0}},"required":["state","count"]}},"average_cold_start_latency_ms":{"type":"number","nullable":true,"minimum":0},"average_resume_latency_ms":{"type":"number","nullable":true,"minimum":0}},"required":["active_sandbox_count","idle_retained_filesystem_count","retained_filesystem_age_ms","estimated_retained_filesystem_gb_hours","stuck_sandbox_count_by_state","average_cold_start_latency_ms","average_resume_latency_ms"]},"AgentSession":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"organization_id":{"type":"string","nullable":true,"minLength":1,"maxLength":54},"agent_id":{"type":"string","minLength":1,"maxLength":54},"state":{"type":"string","enum":["ACTIVE","WAITING_FOR_INPUT","WAITING_FOR_PERMISSION","COMPLETED","FAILED","CANCELLED","ARCHIVED"]},"origin":{"type":"string","enum":["DASHBOARD","API","MCP","ACP","AMBIENT","SYSTEM"]},"title":{"type":"string","nullable":true},"communication_profile":{"type":"string","enum":["BEGINNER","INTERMEDIATE","ADVANCED","EXPERT","ADAPTIVE"]},"created_by":{"type":"string"},"parent_session_id":{"type":"string","nullable":true,"minLength":1,"maxLength":54},"forked_from_session_id":{"type":"string","nullable":true,"minLength":1,"maxLength":54},"spawned_by_turn_id":{"type":"string","nullable":true,"minLength":1,"maxLength":54},"agent_role":{"type":"string","nullable":true},"current_sandbox_id":{"type":"string","nullable":true,"minLength":1,"maxLength":54},"last_event_cursor":{"type":"string","nullable":true},"events_retained_until":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"filesystem_retained_until":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"filesystem_pinned":{"type":"boolean"},"usage_summary":{"$ref":"#/components/schemas/AgentUsageSummary"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","workspace_id","organization_id","agent_id","state","origin","title","communication_profile","created_by","parent_session_id","forked_from_session_id","spawned_by_turn_id","agent_role","current_sandbox_id","last_event_cursor","events_retained_until","filesystem_retained_until","filesystem_pinned","usage_summary","created_at","updated_at","etag"]},"AgentSessionList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AgentSession"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"AgentWorkConflictList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AgentWorkConflict"}}},"required":["data"],"additionalProperties":false},"AgentWorkConflict":{"type":"object","properties":{"agent_id":{"type":"string","minLength":1,"maxLength":54},"session_id":{"type":"string","minLength":1,"maxLength":54},"turn_id":{"type":"string","minLength":1,"maxLength":54},"event_id":{"type":"string","minLength":1,"maxLength":54},"event_type":{"type":"string","enum":["message.created","widget.created","artifact.created","progress.updated","execution_environment.started","execution_environment.stopped","execution_environment.resumed","execution_environment.deleted","execution_environment.failed","handoff_summary.created","turn.cancelled"]},"reason":{"type":"string","minLength":1,"maxLength":500},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["agent_id","session_id","turn_id","event_id","event_type","reason","created_at"],"additionalProperties":false},"SetAgentSessionRetentionBody":{"type":"object","properties":{"events_retained_until":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"filesystem_retained_until":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"filesystem_pinned":{"type":"boolean"},"retention_reason":{"type":"string","enum":["SESSION_ACTIVE","PINNED","POLICY","TERMINAL_GRACE","MANUAL_DELETE"]}},"required":["events_retained_until","filesystem_retained_until","filesystem_pinned","retention_reason"],"additionalProperties":false},"AgentTurn":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"organization_id":{"type":"string","nullable":true,"minLength":1,"maxLength":54},"agent_id":{"type":"string","minLength":1,"maxLength":54},"session_id":{"type":"string","minLength":1,"maxLength":54},"state":{"type":"string","enum":["QUEUED","RUNNING","WAITING_FOR_INPUT","WAITING_FOR_PERMISSION","COMPLETED","FAILED","CANCELLED"]},"origin":{"type":"string","enum":["DASHBOARD","API","MCP","ACP","AMBIENT","SYSTEM"]},"input":{"type":"object","properties":{"type":{"type":"string","enum":["message"]},"content":{"type":"string"}},"required":["type","content"]},"runtime_hint":{"type":"string","enum":["AUTO","CODE_MODE","RETAINED_RUNTIME"]},"model":{"type":"string","nullable":true},"created_by":{"type":"string"},"started_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds)"},"completed_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds)"},"runtime_decision":{"type":"string","nullable":true,"enum":["ALLOWED","DENIED","APPROVAL_REQUIRED",null]},"decision_reason":{"type":"string","nullable":true},"resolved_execution_mode":{"type":"string","nullable":true,"enum":["CODE_MODE","RETAINED_RUNTIME",null]},"admission_error":{"type":"object","nullable":true,"properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},"usage_summary":{"$ref":"#/components/schemas/AgentUsageSummary"},"failure":{"type":"object","nullable":true,"properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","workspace_id","organization_id","agent_id","session_id","state","origin","input","runtime_hint","model","created_by","started_at","completed_at","runtime_decision","decision_reason","resolved_execution_mode","admission_error","usage_summary","failure","created_at","updated_at","etag"]},"AgentTurnList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AgentTurn"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"AgentEvent":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"agent_id":{"type":"string","minLength":1,"maxLength":54},"session_id":{"type":"string","minLength":1,"maxLength":54},"turn_id":{"type":"string","minLength":1,"maxLength":54},"sequence":{"type":"integer"},"cursor":{"type":"string"},"type":{"type":"string","enum":["message.created","widget.created","artifact.created","progress.updated","execution_environment.started","execution_environment.stopped","execution_environment.resumed","execution_environment.deleted","execution_environment.failed","handoff_summary.created","turn.cancelled"]},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"data":{"nullable":true}},"required":["id","workspace_id","agent_id","session_id","turn_id","sequence","cursor","type","created_at"]},"AgentProviderExchangeList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AgentProviderExchange"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"AgentProviderExchange":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"organization_id":{"type":"string","nullable":true,"minLength":1,"maxLength":54},"agent_id":{"type":"string","minLength":1,"maxLength":54},"session_id":{"type":"string","minLength":1,"maxLength":54},"turn_id":{"type":"string","minLength":1,"maxLength":54},"provider":{"type":"string"},"model":{"type":"string","nullable":true},"fallback_from_model":{"type":"string","nullable":true},"fallback_reason":{"type":"string","nullable":true},"credential_mode":{"type":"string","enum":["PLATFORM_SUBSCRIPTION","PLATFORM_API","WORKSPACE_BYOK"]},"credential_secret_id":{"type":"string","nullable":true,"minLength":1,"maxLength":54},"requested_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"responded_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"provider_cost_cents":{"type":"integer","minimum":0},"provider_token_count":{"type":"integer","minimum":0},"token_counts":{"type":"object","nullable":true,"properties":{"input":{"type":"integer","minimum":0},"output":{"type":"integer","minimum":0},"total":{"type":"integer","minimum":0}}},"message_summary":{"type":"string","nullable":true},"upstream_error_code":{"type":"string","nullable":true},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"}},"required":["id","workspace_id","organization_id","agent_id","session_id","turn_id","provider","model","fallback_from_model","fallback_reason","credential_mode","credential_secret_id","requested_at","responded_at","provider_cost_cents","provider_token_count","token_counts","message_summary","upstream_error_code","created_at"]},"AgentEventList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AgentEvent"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"ApprovalRequestList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ApprovalRequest"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"ApprovalRequest":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"agent_id":{"type":"string","minLength":1,"maxLength":54},"session_id":{"type":"string","minLength":1,"maxLength":54},"turn_id":{"type":"string","minLength":1,"maxLength":54},"state":{"type":"string","enum":["PENDING","APPROVED","REJECTED"]},"title":{"type":"string"},"summary":{"type":"string"},"actions":{"type":"array","items":{"nullable":true},"default":[]},"created_by":{"type":"string"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","workspace_id","agent_id","session_id","turn_id","state","title","summary","created_by","created_at","updated_at","etag"]},"WorkspaceSubdomain":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"name":{"type":"string","minLength":1,"maxLength":63},"fqdn":{"type":"string","minLength":1,"maxLength":253},"status":{"type":"string","enum":["active","propagating","reserved"],"description":"Current workspace subdomain lifecycle state."},"name_changed_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds)"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","workspace_id","name","fqdn","status","name_changed_at","created_at","updated_at","etag"]},"SetWorkspaceSubdomainNameBody":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":63}},"required":["name"],"additionalProperties":false},"PreviewHostnameList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PreviewHostname"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"PreviewHostname":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"install_id":{"type":"string","minLength":1,"maxLength":55},"hostname":{"type":"string","minLength":1,"maxLength":253},"protocol":{"type":"string","enum":["http","websocket","grpc"],"description":"Transport class for route forwarding."},"routing_mode":{"type":"string","enum":["through_dispatcher","bypass_dispatcher"],"description":"Whether traffic uses the dispatcher Worker or bypasses it."},"binding":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["pinned"]},"render_id":{"type":"string","minLength":1,"maxLength":54}},"required":["kind","render_id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["floating"]},"track":{"type":"string","minLength":1,"maxLength":100},"render_id":{"type":"string","minLength":1,"maxLength":54}},"required":["kind","track","render_id"],"additionalProperties":false}]},"status":{"type":"string","enum":["provisioning","active","evicted","releasing"],"description":"Current preview hostname lifecycle state."},"last_seen_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds)"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","workspace_id","install_id","hostname","protocol","routing_mode","binding","status","last_seen_at","created_at","updated_at","etag"]},"BindPinnedPreviewHostnameBody":{"type":"object","properties":{"render_id":{"type":"string","minLength":1,"maxLength":54},"protocol":{"type":"string","enum":["http","websocket","grpc"],"default":"http","description":"Transport class for route forwarding."},"routing_mode":{"type":"string","enum":["through_dispatcher","bypass_dispatcher"],"default":"through_dispatcher","description":"Whether traffic uses the dispatcher Worker or bypasses it."}},"required":["render_id"],"additionalProperties":false},"BindFloatingPreviewHostnameBody":{"type":"object","properties":{"track":{"type":"string","minLength":1,"maxLength":100},"render_id":{"type":"string","minLength":1,"maxLength":54},"protocol":{"type":"string","enum":["http","websocket","grpc"],"default":"http","description":"Transport class for route forwarding."},"routing_mode":{"type":"string","enum":["through_dispatcher","bypass_dispatcher"],"default":"through_dispatcher","description":"Whether traffic uses the dispatcher Worker or bypasses it."}},"required":["track","render_id"],"additionalProperties":false},"CustomDomainList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CustomDomain"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"CustomDomain":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"hostname":{"type":"string","minLength":1,"maxLength":253},"target":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["install"]},"install_id":{"type":"string","minLength":1,"maxLength":55}},"required":["kind","install_id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["cluster"]},"cluster_id":{"type":"string","minLength":1,"maxLength":54}},"required":["kind","cluster_id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["external"]},"endpoint":{"type":"string","format":"uri"},"mtls_secret_id":{"type":"string","minLength":1,"maxLength":54}},"required":["kind","endpoint"],"additionalProperties":false}]},"protocol":{"type":"string","enum":["http","websocket","grpc"],"description":"Transport class for route forwarding."},"routing_mode":{"type":"string","enum":["through_dispatcher","bypass_dispatcher"],"description":"Whether traffic uses the dispatcher Worker or bypasses it."},"ssl":{"type":"object","properties":{"status":{"type":"string","enum":["pending_validation","active","failed"]},"validation_records":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}}}},"required":["status"]},"status":{"type":"string","enum":["provisioning","active","failed","releasing"]},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"updated_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"etag":{"type":"string"}},"required":["id","workspace_id","hostname","target","protocol","routing_mode","ssl","status","created_at","updated_at","etag"]},"CreateCustomDomainBody":{"type":"object","properties":{"hostname":{"type":"string","minLength":1,"maxLength":253},"target":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["install"]},"install_id":{"type":"string","minLength":1,"maxLength":55}},"required":["kind","install_id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["cluster"]},"cluster_id":{"type":"string","minLength":1,"maxLength":54}},"required":["kind","cluster_id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["external"]},"endpoint":{"type":"string","format":"uri"},"mtls_secret_id":{"type":"string","minLength":1,"maxLength":54}},"required":["kind","endpoint"],"additionalProperties":false}]},"protocol":{"type":"string","enum":["http","websocket","grpc"],"default":"http","description":"Transport class for route forwarding."},"routing_mode":{"type":"string","enum":["through_dispatcher","bypass_dispatcher"],"default":"through_dispatcher","description":"Whether traffic uses the dispatcher Worker or bypasses it."}},"required":["hostname","target"],"additionalProperties":false},"UpdateCustomDomainBody":{"type":"object","properties":{"target":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["install"]},"install_id":{"type":"string","minLength":1,"maxLength":55}},"required":["kind","install_id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["cluster"]},"cluster_id":{"type":"string","minLength":1,"maxLength":54}},"required":["kind","cluster_id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["external"]},"endpoint":{"type":"string","format":"uri"},"mtls_secret_id":{"type":"string","minLength":1,"maxLength":54}},"required":["kind","endpoint"],"additionalProperties":false}]},"protocol":{"type":"string","enum":["http","websocket","grpc"],"description":"Transport class for route forwarding."},"routing_mode":{"type":"string","enum":["through_dispatcher","bypass_dispatcher"],"description":"Whether traffic uses the dispatcher Worker or bypasses it."}},"additionalProperties":false},"CloudflareCredentialList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CloudflareCredential"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"]},"CloudflareCredential":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":56},"name":{"type":"string","example":"Production Cloudflare"},"account_id":{"type":"string","description":"Cloudflare account ID."},"origin_zone_id":{"type":"string","nullable":true,"description":"Cloudflare zone ID used for Access-protected origin hostnames."},"origin_hostname_suffix":{"type":"string","nullable":true,"description":"Hostname suffix used for Access-protected origin hostnames."},"is_active":{"type":"boolean","description":"Whether the credential is active"},"created_at":{"type":"integer","minimum":0,"description":"Unix timestamp (seconds)"},"last_used_at":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp (seconds), null if never used"}},"required":["id","name","account_id","origin_zone_id","origin_hostname_suffix","is_active","created_at","last_used_at"]},"CreateCloudflareCredentialBody":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"example":"Production Cloudflare"},"account_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9_-]+$","description":"Cloudflare account ID."},"origin_zone_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9_-]+$","description":"Cloudflare zone ID used for Access-protected origin hostnames."},"origin_hostname_suffix":{"type":"string","minLength":1,"maxLength":253,"description":"Hostname suffix used for Access-protected origin hostnames."},"api_token":{"type":"string","minLength":1,"maxLength":2000,"description":"Cloudflare API token. Stored as a platform Secret; never returned."}},"required":["name","account_id","origin_zone_id","origin_hostname_suffix","api_token"],"additionalProperties":false},"AccessDecision":{"type":"object","properties":{"decision":{"$ref":"#/components/schemas/AccessDecisionResult"},"action":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1}},"required":["id","name"],"additionalProperties":false},"reasons":{"type":"array","items":{"$ref":"#/components/schemas/AccessReason"}}},"required":["decision","action","reasons"],"additionalProperties":false},"AccessDecisionResult":{"oneOf":[{"type":"object","properties":{"result":{"type":"string","enum":["allowed"]}},"required":["result"],"additionalProperties":false},{"type":"object","properties":{"result":{"type":"string","enum":["denied"]},"message":{"type":"string","minLength":1}},"required":["result","message"],"additionalProperties":false},{"type":"object","properties":{"result":{"type":"string","enum":["unknown"]},"message":{"type":"string","minLength":1}},"required":["result","message"],"additionalProperties":false}]},"AccessReason":{"type":"object","properties":{"kind":{"type":"string","enum":["catalog_default","external_feature_flag","external_billing_entitlement","workspace_access_status","admin_override","policy_rule","quota_limit","quota_usage","quota_override","actor_context","resource_state","workspace_membership","workspace_role","organization_membership","organization_role","workspace_class","resource_ownership","relationship","domain_policy"]},"result":{"type":"string","enum":["allowed","denied","not_evaluated"]},"key":{"type":"string"},"source":{"type":"string"},"message":{"type":"string"},"metric":{"type":"string"},"scope":{"type":"string","enum":["global","organization","workspace","user"]},"limit":{"type":"number"},"usage":{"type":"number"},"remaining":{"type":"number"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"relationship":{"type":"string"}},"required":["kind","result"],"additionalProperties":false},"ExplainAccessDecisionBody":{"oneOf":[{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["offers.create_via_channel"]},"resource":{"$ref":"#/components/schemas/OfferChannelCreateResource"},"context":{"$ref":"#/components/schemas/OfferChannelDecisionContext"}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["offers.create_non_channel_paid_product_offer"]},"resource":{"$ref":"#/components/schemas/NonChannelPaidProductOfferResource"}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["offers.create_non_billable_test_offer"]},"resource":{"$ref":"#/components/schemas/NonBillableTestOfferResource"}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["offer_channels.create"]},"resource":{"$ref":"#/components/schemas/OfferChannelCreateDecisionResource"}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["offer_channels.inspect"]},"resource":{"$ref":"#/components/schemas/OfferChannelInspectResource"}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["channel_policies.approve"]},"resource":{"$ref":"#/components/schemas/ChannelPolicyApproveResource"}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["channel_policies.activate"]},"resource":{"$ref":"#/components/schemas/ChannelPolicyActivateResource"}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["offers.approve_channel_offer"]},"resource":{"$ref":"#/components/schemas/OfferChannelModerationResource"},"context":{"$ref":"#/components/schemas/OfferChannelDecisionContext"}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["offers.reject_channel_offer"]},"resource":{"$ref":"#/components/schemas/OfferChannelModerationResource"},"context":{"$ref":"#/components/schemas/OfferChannelDecisionContext"}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["workspaces.inspect_class"]},"resource":{"$ref":"#/components/schemas/WorkspaceClassResource"}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["workspaces.inspect_membership"]},"resource":{"$ref":"#/components/schemas/WorkspaceMembershipResource"}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["products.create"]},"resource":{"$ref":"#/components/schemas/ProductCockpitResource"}},"required":["permission"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["products.get"]},"resource":{"type":"object","properties":{"product_id":{"type":"string","minLength":1,"maxLength":55},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"package_id":{"type":"string","minLength":1,"maxLength":54},"package_version_id":{"type":"string","minLength":1,"maxLength":55},"resource_state":{"type":"string","enum":["draft","active","archived"]}},"required":["product_id","workspace_id"],"additionalProperties":false}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["products.update"]},"resource":{"type":"object","properties":{"product_id":{"type":"string","minLength":1,"maxLength":55},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"package_id":{"type":"string","minLength":1,"maxLength":54},"package_version_id":{"type":"string","minLength":1,"maxLength":55},"resource_state":{"type":"string","enum":["draft","active","archived"]}},"required":["product_id","workspace_id"],"additionalProperties":false}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["products.archive"]},"resource":{"type":"object","properties":{"product_id":{"type":"string","minLength":1,"maxLength":55},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"package_id":{"type":"string","minLength":1,"maxLength":54},"package_version_id":{"type":"string","minLength":1,"maxLength":55},"resource_state":{"type":"string","enum":["draft","active","archived"]}},"required":["product_id","workspace_id"],"additionalProperties":false}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["products.unarchive"]},"resource":{"type":"object","properties":{"product_id":{"type":"string","minLength":1,"maxLength":55},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"package_id":{"type":"string","minLength":1,"maxLength":54},"package_version_id":{"type":"string","minLength":1,"maxLength":55},"resource_state":{"type":"string","enum":["draft","active","archived"]}},"required":["product_id","workspace_id"],"additionalProperties":false}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["products.inspect_readiness"]},"resource":{"type":"object","properties":{"product_id":{"type":"string","minLength":1,"maxLength":55},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"package_id":{"type":"string","minLength":1,"maxLength":54},"package_version_id":{"type":"string","minLength":1,"maxLength":55},"resource_state":{"type":"string","enum":["draft","active","archived"]}},"required":["product_id","workspace_id"],"additionalProperties":false}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["products.inspect_offer_creation"]},"resource":{"type":"object","properties":{"product_id":{"type":"string","minLength":1,"maxLength":55},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"package_id":{"type":"string","minLength":1,"maxLength":54},"package_version_id":{"type":"string","minLength":1,"maxLength":55},"resource_state":{"type":"string","enum":["draft","active","archived"]}},"required":["product_id","workspace_id"],"additionalProperties":false}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["products.inspect_channels"]},"resource":{"type":"object","properties":{"product_id":{"type":"string","minLength":1,"maxLength":55},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"package_id":{"type":"string","minLength":1,"maxLength":54},"package_version_id":{"type":"string","minLength":1,"maxLength":55},"resource_state":{"type":"string","enum":["draft","active","archived"]}},"required":["product_id","workspace_id"],"additionalProperties":false}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["products.inspect_installs"]},"resource":{"type":"object","properties":{"product_id":{"type":"string","minLength":1,"maxLength":55},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"package_id":{"type":"string","minLength":1,"maxLength":54},"package_version_id":{"type":"string","minLength":1,"maxLength":55},"resource_state":{"type":"string","enum":["draft","active","archived"]}},"required":["product_id","workspace_id"],"additionalProperties":false}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["packages.create"]},"resource":{"$ref":"#/components/schemas/PackageCockpitResource"}},"required":["permission"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["packages.import_published_package"]},"resource":{"$ref":"#/components/schemas/PackageCockpitResource"}},"required":["permission"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["packages.get"]},"resource":{"type":"object","properties":{"package_id":{"type":"string","minLength":1,"maxLength":54},"package_version_id":{"type":"string","minLength":1,"maxLength":55},"workspace_id":{"type":"string","minLength":1,"maxLength":53}},"required":["package_id","workspace_id"],"additionalProperties":false}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["package_versions.get"]},"resource":{"type":"object","properties":{"package_id":{"type":"string","minLength":1,"maxLength":54},"package_version_id":{"type":"string","minLength":1,"maxLength":55},"workspace_id":{"type":"string","minLength":1,"maxLength":53}},"required":["package_id","package_version_id","workspace_id"],"additionalProperties":false}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["package_versions.inputs"]},"resource":{"type":"object","properties":{"package_id":{"type":"string","minLength":1,"maxLength":54},"package_version_id":{"type":"string","minLength":1,"maxLength":55},"workspace_id":{"type":"string","minLength":1,"maxLength":53}},"required":["package_id","package_version_id","workspace_id"],"additionalProperties":false}},"required":["permission","resource"],"additionalProperties":false},{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/AccessSubject"},"permission":{"type":"string","enum":["catalog_actions.explain"]},"resource":{"$ref":"#/components/schemas/CatalogActionExplainResource"}},"required":["permission","resource"],"additionalProperties":false,"x-platform-visibility":"ADMIN"}]},"AccessSubject":{"type":"object","properties":{"user_id":{"type":"string","minLength":1},"organization_id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53}},"additionalProperties":false},"OfferChannelCreateResource":{"type":"object","properties":{"offer_channel_id":{"type":"string","minLength":1,"maxLength":54},"target_workspace_id":{"type":"string","minLength":1,"maxLength":53},"product_id":{"type":"string","minLength":1,"maxLength":55},"commercial_mode":{"type":"string","enum":["paid","non_billable_test"]}},"required":["offer_channel_id","product_id","commercial_mode"],"additionalProperties":false},"OfferChannelDecisionContext":{"type":"object","properties":{"selected_organization_id":{"type":"string","minLength":1,"maxLength":54},"stripe_mode":{"type":"string","enum":["live","test","sandbox"]}},"additionalProperties":false},"NonChannelPaidProductOfferResource":{"type":"object","properties":{"workspace_id":{"type":"string","minLength":1,"maxLength":53},"product_id":{"type":"string","minLength":1,"maxLength":55},"package_version_id":{"type":"string","minLength":1,"maxLength":55},"target_workspace_id":{"type":"string","minLength":1,"maxLength":53},"commercial_mode":{"type":"string","enum":["paid"]}},"required":["workspace_id","product_id","package_version_id","commercial_mode"],"additionalProperties":false},"NonBillableTestOfferResource":{"type":"object","properties":{"workspace_id":{"type":"string","minLength":1,"maxLength":53},"product_id":{"type":"string","minLength":1,"maxLength":55},"package_version_id":{"type":"string","minLength":1,"maxLength":55},"target_workspace_id":{"type":"string","minLength":1,"maxLength":53},"target_workspace_class":{"type":"string","enum":["standard","platform","sandbox"]},"commercial_mode":{"type":"string","enum":["non_billable_test"]}},"required":["workspace_id","product_id","package_version_id","commercial_mode"],"additionalProperties":false},"OfferChannelCreateDecisionResource":{"type":"object","properties":{"workspace_id":{"type":"string","minLength":1,"maxLength":53},"product_id":{"type":"string","minLength":1,"maxLength":55},"partner_organization_id":{"type":"string","minLength":1,"maxLength":54}},"required":["workspace_id"],"additionalProperties":false},"OfferChannelInspectResource":{"type":"object","properties":{"workspace_id":{"type":"string","minLength":1,"maxLength":53},"offer_channel_id":{"type":"string","minLength":1,"maxLength":54},"product_id":{"type":"string","minLength":1,"maxLength":55}},"required":["workspace_id"],"additionalProperties":false},"ChannelPolicyApproveResource":{"type":"object","properties":{"workspace_id":{"type":"string","minLength":1,"maxLength":53},"offer_channel_id":{"type":"string","minLength":1,"maxLength":54},"channel_policy_id":{"type":"string","minLength":1,"maxLength":56},"resource_state":{"type":"string","enum":["draft"]}},"required":["workspace_id","offer_channel_id","channel_policy_id","resource_state"],"additionalProperties":false},"ChannelPolicyActivateResource":{"type":"object","properties":{"workspace_id":{"type":"string","minLength":1,"maxLength":53},"offer_channel_id":{"type":"string","minLength":1,"maxLength":54},"channel_policy_id":{"type":"string","minLength":1,"maxLength":56},"resource_state":{"type":"string","enum":["approved"]}},"required":["workspace_id","offer_channel_id","channel_policy_id","resource_state"],"additionalProperties":false},"OfferChannelModerationResource":{"type":"object","properties":{"offer_id":{"type":"string","minLength":1,"maxLength":56},"offer_channel_id":{"type":"string","minLength":1,"maxLength":54},"owner_workspace_id":{"type":"string","minLength":1,"maxLength":53},"resource_state":{"type":"string","enum":["pending_approval","approved","rejected"]},"platform_policy_snapshot_id":{"type":"string","minLength":1,"x-platform-visibility":"ADMIN"},"partner_price_band_key":{"type":"string","minLength":1,"x-platform-visibility":"TRUSTED_PARTNER"}},"required":["offer_id","offer_channel_id","owner_workspace_id","resource_state"],"additionalProperties":false},"WorkspaceClassResource":{"type":"object","properties":{"workspace_id":{"type":"string","minLength":1,"maxLength":53},"required_class":{"type":"string","enum":["standard","platform","sandbox"]}},"required":["workspace_id"],"additionalProperties":false},"WorkspaceMembershipResource":{"type":"object","properties":{"workspace_id":{"type":"string","minLength":1,"maxLength":53},"required_roles":{"type":"array","items":{"type":"string","enum":["owner","admin","member"]}}},"required":["workspace_id"],"additionalProperties":false},"ProductCockpitResource":{"type":"object","properties":{"product_id":{"type":"string","minLength":1,"maxLength":55},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"package_id":{"type":"string","minLength":1,"maxLength":54},"package_version_id":{"type":"string","minLength":1,"maxLength":55},"resource_state":{"type":"string","enum":["draft","active","archived"]}},"required":["workspace_id"],"additionalProperties":false},"PackageCockpitResource":{"type":"object","properties":{"package_id":{"type":"string","minLength":1,"maxLength":54},"package_version_id":{"type":"string","minLength":1,"maxLength":55},"workspace_id":{"type":"string","minLength":1,"maxLength":53}},"required":["workspace_id"],"additionalProperties":false},"CatalogActionExplainResource":{"type":"object","properties":{"action_id":{"type":"string","minLength":1},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"organization_id":{"type":"string","minLength":1,"maxLength":54},"user_id":{"type":"string","minLength":1},"product_id":{"type":"string","minLength":1,"maxLength":55},"package_id":{"type":"string","minLength":1,"maxLength":54},"package_version_id":{"type":"string","minLength":1,"maxLength":55},"offer_id":{"type":"string","minLength":1,"maxLength":56},"offer_channel_id":{"type":"string","minLength":1,"maxLength":54},"channel_policy_id":{"type":"string","minLength":1,"maxLength":56}},"required":["action_id"],"additionalProperties":false,"x-platform-visibility":"ADMIN"},"AdminCapabilityList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AdminCapability"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"],"x-platform-visibility":"ADMIN"},"AdminCapability":{"type":"object","properties":{"id":{"type":"string","example":"networking"},"name":{"type":"string"},"owner":{"type":"string"},"surfaces":{"type":"array","items":{"type":"string","enum":["web","api","worker","docs"]}},"actions":{"type":"array","items":{"$ref":"#/components/schemas/AdminCapabilityAction"}},"flags":{"type":"array","items":{"type":"string"}},"entitlements":{"type":"array","items":{"type":"string"}}},"required":["id","name","owner","surfaces","actions","flags","entitlements"],"x-platform-visibility":"ADMIN"},"AdminCapabilityAction":{"type":"object","properties":{"id":{"type":"string","example":"custom_domains.use_dispatcher_bypass"},"name":{"type":"string"},"access":{"$ref":"#/components/schemas/AdminCapabilityActionAccess"},"quota_metrics":{"type":"array","items":{"type":"string"}},"operations":{"type":"array","items":{"type":"string"}}},"required":["id","name","access"],"x-platform-visibility":"ADMIN"},"AdminCapabilityActionAccess":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["baseline"]},"reason":{"type":"string"}},"required":["kind","reason"]},{"type":"object","properties":{"kind":{"type":"string","enum":["feature_flagged"]},"flags":{"type":"array","items":{"type":"string"}}},"required":["kind","flags"]},{"type":"object","properties":{"kind":{"type":"string","enum":["entitled"]},"entitlements":{"type":"array","items":{"type":"string"}}},"required":["kind","entitlements"]},{"type":"object","properties":{"kind":{"type":"string","enum":["admin"]},"reason":{"type":"string"}},"required":["kind","reason"]},{"type":"object","properties":{"kind":{"type":"string","enum":["internal"]},"reason":{"type":"string"}},"required":["kind","reason"]}],"x-platform-visibility":"ADMIN"},"AdminDirectoryOrganizationList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AdminDirectoryOrganization"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"],"x-platform-visibility":"ADMIN"},"AdminDirectoryOrganization":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"name":{"type":"string"},"slug":{"type":"string","nullable":true},"created_at":{"type":"number"},"member_count":{"type":"integer","minimum":0},"workspace_count":{"type":"integer","minimum":0}},"required":["id","name","slug","created_at","member_count","workspace_count"],"x-platform-visibility":"ADMIN"},"AdminDirectoryUserList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AdminDirectoryUser"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"],"x-platform-visibility":"ADMIN"},"AdminDirectoryUser":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"},"email":{"type":"string","format":"email"},"email_verified":{"type":"boolean"},"workspace_count":{"type":"integer","minimum":0},"organization_count":{"type":"integer","minimum":0},"created_at":{"type":"number"}},"required":["id","name","email","email_verified","workspace_count","organization_count","created_at"],"x-platform-visibility":"ADMIN"},"AdminDirectoryWorkspaceList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AdminDirectoryWorkspace"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"],"x-platform-visibility":"ADMIN"},"AdminDirectoryWorkspace":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":53},"name":{"type":"string"},"slug":{"type":"string"},"organization_id":{"type":"string","minLength":1,"maxLength":54},"organization_name":{"type":"string"},"workspace_class":{"type":"string","enum":["standard","platform","sandbox"]},"plan_tier":{"type":"string"},"access_status":{"type":"string","enum":["active","payment_grace","restricted","suspended","ended","reactivating"]},"accessible":{"type":"boolean"},"member_count":{"type":"integer","minimum":0},"cluster_count":{"type":"integer","minimum":0},"product_count":{"type":"integer","minimum":0},"operation_count":{"type":"integer","minimum":0},"created_at":{"type":"number"}},"required":["id","name","slug","workspace_class","plan_tier","member_count","cluster_count","product_count","operation_count","created_at"],"x-platform-visibility":"ADMIN"},"AdminAccessOverrideList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AdminAccessOverride"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"],"x-platform-visibility":"ADMIN"},"AdminAccessOverride":{"type":"object","properties":{"id":{"type":"string"},"target_type":{"type":"string","enum":["feature_flag","entitlement"]},"key":{"type":"string"},"scope":{"type":"string","enum":["global","organization","workspace"]},"organization_id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"effect":{"type":"string","enum":["allow","deny"]},"previous_effect":{"type":"string","nullable":true,"enum":["allow","deny",null]},"new_effect":{"type":"string","nullable":true,"enum":["allow","deny",null]},"reason":{"type":"string"},"created_by":{"type":"string","minLength":1},"created_at":{"type":"number"},"updated_by":{"type":"string","minLength":1},"updated_at":{"type":"number"},"expires_at":{"type":"number"},"revoked_at":{"type":"number"}},"required":["id","target_type","key","scope","effect","previous_effect","new_effect","reason","created_by","created_at","updated_by","updated_at"],"x-platform-visibility":"ADMIN"},"CreateAdminAccessOverrideBody":{"type":"object","properties":{"target_type":{"type":"string","enum":["feature_flag","entitlement"]},"key":{"type":"string","minLength":1,"maxLength":256},"scope":{"type":"string","enum":["global","organization","workspace"]},"organization_id":{"type":"string","minLength":1,"maxLength":54},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"effect":{"type":"string","enum":["allow","deny"]},"reason":{"type":"string","minLength":1,"maxLength":500},"expires_at":{"type":"number"}},"required":["target_type","key","scope","effect","reason"],"additionalProperties":false,"x-platform-visibility":"ADMIN"},"AdminQuotaOverrideList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AdminQuotaOverride"}},"has_more":{"type":"boolean","description":"True if more items exist after this page."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page, or null if no more pages."}},"required":["data","has_more","next_cursor"],"x-platform-visibility":"ADMIN"},"AdminQuotaOverride":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":54},"scope":{"type":"string","enum":["user","workspace"]},"user_id":{"type":"string","minLength":1},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"metric":{"type":"string"},"limit":{"type":"number"},"previous_limit":{"type":"number","nullable":true},"new_limit":{"type":"number","nullable":true},"reason":{"type":"string"},"created_by":{"type":"string","minLength":1},"created_at":{"type":"number"},"updated_by":{"type":"string","minLength":1},"updated_at":{"type":"number"},"revoked_at":{"type":"number"}},"required":["id","scope","metric","limit","previous_limit","new_limit"],"x-platform-visibility":"ADMIN"},"SetAdminQuotaOverrideBody":{"type":"object","properties":{"scope":{"type":"string","enum":["user","workspace"]},"user_id":{"type":"string","minLength":1},"workspace_id":{"type":"string","minLength":1,"maxLength":53},"metric":{"type":"string","minLength":1,"maxLength":256},"limit":{"type":"integer","minimum":0},"reason":{"type":"string","minLength":1,"maxLength":500}},"required":["scope","metric","limit","reason"],"additionalProperties":false,"x-platform-visibility":"ADMIN"}},"parameters":{}},"paths":{"/v1/compute/machines":{"post":{"x-platform-visibility":"PUBLIC","operationId":"compute.createMachine","tags":["Compute"],"summary":"Create a machine","description":"Provisions a new machine in the specified cluster with the given compute configuration.","security":[{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"config_ref":{"type":"string","description":"ComputeConfig ID"},"cluster_id":{"type":"string","description":"Cluster ID"},"node_claim":{"nullable":true,"description":"Machine requirements (instance type, resources, taints)"}},"required":["config_ref","cluster_id"]}}}},"responses":{"201":{"description":"Machine created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComputeMachine"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Config not found (NodeClassNotReady)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComputeError"}}}},"503":{"description":"No capacity available (InsufficientCapacity)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComputeError"}}}}}},"get":{"x-platform-visibility":"PUBLIC","operationId":"compute.listMachines","tags":["Compute"],"summary":"List machines in cluster","description":"Lists all machines for a cluster.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Cluster ID"},"required":true,"description":"Cluster ID","name":"cluster","in":"query"}],"responses":{"200":{"description":"List of machines","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComputeMachine"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/compute/machines/{providerId}":{"delete":{"x-platform-visibility":"PUBLIC","operationId":"compute.deleteMachine","tags":["Compute"],"summary":"Delete a machine","description":"Deletes a machine by provider ID. The node is drained before the cloud server is terminated.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Provider-assigned machine ID"},"required":true,"description":"Provider-assigned machine ID","name":"providerId","in":"path"}],"responses":{"204":{"description":"Machine deleted"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Machine not found (NodeClaimNotFound)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComputeError"}}}}}},"get":{"x-platform-visibility":"PUBLIC","operationId":"compute.getMachine","tags":["Compute"],"summary":"Get machine status","description":"Returns current state of a machine including conditions and provider metadata.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Provider-assigned machine ID"},"required":true,"description":"Provider-assigned machine ID","name":"providerId","in":"path"}],"responses":{"200":{"description":"Machine details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComputeMachine"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Machine not found (NodeClaimNotFound)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComputeError"}}}}}}},"/v1/compute/instance_types":{"get":{"x-platform-visibility":"PUBLIC","operationId":"compute.listInstanceTypes","tags":["Compute"],"summary":"List available instance types","description":"Returns instance types with pricing for a compute config. Returns available instance types for provisioning. Results are cached.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Config name (optional — derived from cluster context when omitted)"},"required":false,"description":"Config name (optional — derived from cluster context when omitted)","name":"config","in":"query"}],"responses":{"200":{"description":"Available instance types","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InstanceType"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Config not found (NodeClassNotReady)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComputeError"}}}}}}},"/v1/compute/machines/{providerId}/drift":{"get":{"x-platform-visibility":"PUBLIC","operationId":"compute.checkMachineDrift","tags":["Compute"],"summary":"Check if machine has drifted","description":"Checks if a machine has drifted from its desired compute configuration.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Provider-assigned machine ID"},"required":true,"description":"Provider-assigned machine ID","name":"providerId","in":"path"}],"responses":{"200":{"description":"Drift result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriftResult"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/compute/machines/{providerId}/suspend":{"post":{"x-platform-visibility":"PUBLIC","operationId":"compute.suspendMachine","tags":["Compute"],"summary":"Suspend a machine","description":"Snapshots the machine disk, deletes the cloud server to stop billing, and creates a suspension record.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Provider-assigned machine ID"},"required":true,"description":"Provider-assigned machine ID","name":"providerId","in":"path"}],"responses":{"204":{"description":"Suspend workflow started"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Machine not found (NodeClaimNotFound)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComputeError"}}}}}}},"/v1/compute/suspensions/{id}/resume":{"post":{"x-platform-visibility":"PUBLIC","operationId":"compute.resumeSuspension","tags":["Compute"],"summary":"Resume a suspended machine","description":"Restores the machine from its snapshot, creates a new cloud server.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Suspension ID"},"required":true,"description":"Suspension ID","name":"id","in":"path"}],"responses":{"204":{"description":"Resume workflow started"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Suspension not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComputeError"}}}}}}},"/v1/compute/suspensions":{"get":{"x-platform-visibility":"PUBLIC","operationId":"compute.listSuspensions","tags":["Compute"],"summary":"List suspended machines","description":"Lists all suspended machines for the workspace.","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"List of suspensions","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Suspension"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Akua-Context required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/compute/suspensions/{id}":{"delete":{"x-platform-visibility":"PUBLIC","operationId":"compute.deleteSuspension","tags":["Compute"],"summary":"Delete a suspension","description":"Deletes the snapshot and suspension record permanently.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Suspension ID"},"required":true,"description":"Suspension ID","name":"id","in":"path"}],"responses":{"204":{"description":"Suspension deleted"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Suspension not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComputeError"}}}}}}},"/v1/compute/configs":{"get":{"x-platform-visibility":"PUBLIC","operationId":"compute.listConfigs","tags":["Compute"],"summary":"List compute configs","description":"Lists compute configs for the workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"}],"responses":{"200":{"description":"List of compute configs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComputeConfigList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Akua-Context required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"x-platform-visibility":"PUBLIC","operationId":"compute.createConfig","tags":["Compute"],"summary":"Create a compute config","security":[{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"provider":{"type":"string","enum":["hcloud"]},"region":{"type":"string","minLength":1},"image":{"type":"string","minLength":1},"machine_type_filter":{"type":"string","description":"Glob pattern to filter available instance types (e.g., \"cx*\" for shared CPU, \"cpx*\" for dedicated)"},"secret_id":{"type":"string","description":"Secret ID for BYOM (bring your own machine). Omit to use platform-managed defaults."}},"required":["name","provider","region","image"]}}}},"responses":{"201":{"description":"Config created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatedComputeConfig"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Akua-Context required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/compute/configs/{id}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"compute.getConfig","tags":["Compute"],"summary":"Get a compute config","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"ComputeConfig ID"},"required":true,"description":"ComputeConfig ID","name":"id","in":"path"}],"responses":{"200":{"description":"Compute config","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComputeConfig"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Akua-Context required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Config not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComputeError"}}}}}},"delete":{"x-platform-visibility":"PUBLIC","operationId":"compute.deleteConfig","tags":["Compute"],"summary":"Delete a compute config","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"ComputeConfig ID"},"required":true,"description":"ComputeConfig ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"204":{"description":"Config deleted"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Akua-Context required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Config not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComputeError"}}}},"409":{"description":"Config has active machines","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComputeError"}}}}}}},"/v1/clusters/{clusterId}/compute_status":{"get":{"x-platform-visibility":"PUBLIC","operationId":"compute.getClusterStatus","tags":["Compute"],"summary":"Get cluster compute status","description":"Returns auto-scaling state, machine count, and limits for a cluster.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Cluster ID"},"required":true,"description":"Cluster ID","name":"clusterId","in":"path"}],"responses":{"200":{"description":"Compute status","content":{"application/json":{"schema":{"type":"object","properties":{"auto_scaling":{"type":"string","enum":["active","paused"]},"machines":{"type":"number"},"max_machines":{"type":"number"}},"required":["auto_scaling","machines","max_machines"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Akua-Context required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/clusters/{clusterId}/compute_settings":{"patch":{"x-platform-visibility":"PUBLIC","operationId":"compute.updateClusterSettings","tags":["Compute"],"summary":"Update cluster compute settings","description":"Controls auto-scaling behavior and machine limits for a cluster.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Cluster ID"},"required":true,"description":"Cluster ID","name":"clusterId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"auto_scaling_enabled":{"type":"boolean"},"max_machines":{"type":"number","minimum":0,"maximum":100}}}}}},"responses":{"204":{"description":"Settings updated"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Akua-Context required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/snippets":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"snippet.ui.listSnippetsForApi"},"operationId":"snippets.list","tags":["Snippets"],"summary":"List snippets in workspace","description":"Returns all snippets belonging to the workspace specified in the workspace context.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"List of snippets","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnippetList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"x-platform-visibility":"PUBLIC","operationId":"snippets.create","tags":["Snippets"],"summary":"Create snippet","description":"Creates a reusable code snippet in the workspace. Snippets are async JavaScript functions executed in a sandboxed runtime with access to platform.request() for API calls.","security":[{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"example":"Cluster Resource Audit"},"description":{"type":"string","maxLength":500,"description":"Optional human-readable description"},"code":{"type":"string","minLength":1,"maxLength":50000,"description":"Async JavaScript function body. Executed in a sandboxed runtime with access to platform.request()."},"display_type":{"type":"string","enum":["table","stat","json","logs"],"description":"Controls how the snippet result is rendered in dashboard widgets"},"visibility":{"type":"string","enum":["workspace","session"],"description":"Whether the snippet is reusable workspace state or scoped to an agent session."},"origin":{"type":"string","enum":["user","agent","system"],"description":"Who authored the snippet descriptor."},"agent_session_id":{"type":"string","minLength":1,"maxLength":54},"agent_turn_id":{"type":"string","minLength":1,"maxLength":54},"purpose":{"type":"string","enum":["general","prepared_action","reactive_read","widget"]}},"required":["name","code","display_type"],"additionalProperties":false}}}},"responses":{"201":{"description":"Snippet created","content":{"application/json":{"schema":{"type":"object","properties":{"snippet_id":{"type":"string"}},"required":["snippet_id"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/snippets:usage":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"snippet.ui.listSnippetUsageForApi"},"operationId":"snippets.listUsage","tags":["Snippets"],"summary":"List snippet dashboard usage in workspace","description":"Returns dashboard references for snippets in the workspace specified in the workspace context.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Snippet dashboard usage","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnippetUsageList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/snippets/{id}:usage":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"snippet.ui.getSnippetUsageForApi"},"operationId":"snippets.getUsage","tags":["Snippets"],"summary":"Get snippet dashboard usage","description":"Returns dashboard references for one snippet.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Snippet ID"},"required":true,"description":"Snippet ID","name":"id","in":"path"}],"responses":{"200":{"description":"Snippet dashboard usage","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnippetUsage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/snippets/{id}":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"snippet.ui.getSnippetForApi"},"operationId":"snippets.get","tags":["Snippets"],"summary":"Get snippet details","description":"Returns a snippet including its code and display type.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Snippet ID"},"required":true,"description":"Snippet ID","name":"id","in":"path"}],"responses":{"200":{"description":"Snippet details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Snippet"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"patch":{"x-platform-visibility":"PUBLIC","operationId":"snippets.update","tags":["Snippets"],"summary":"Update snippet","description":"Updates snippet properties. Only provided fields are changed. Dashboards using this snippet will pick up code changes on next run.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Snippet ID"},"required":true,"description":"Snippet ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"string","maxLength":500},"code":{"type":"string","minLength":1,"maxLength":50000},"display_type":{"type":"string","enum":["table","stat","json","logs"],"description":"Controls how the snippet result is rendered in dashboard widgets"},"visibility":{"type":"string","enum":["workspace","session"],"description":"Whether the snippet is reusable workspace state or scoped to an agent session."},"purpose":{"type":"string","enum":["general","prepared_action","reactive_read","widget"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Snippet updated","content":{"application/json":{"schema":{"type":"object","properties":{"snippet_id":{"type":"string"}},"required":["snippet_id"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"x-platform-visibility":"PUBLIC","operationId":"snippets.delete","tags":["Snippets"],"summary":"Delete snippet","description":"Permanently deletes a snippet. Fails with 409 if the snippet is referenced by any dashboard widgets.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Snippet ID"},"required":true,"description":"Snippet ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"204":{"description":"Snippet deleted"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/snippets:execute":{"post":{"x-platform-visibility":"PUBLIC","operationId":"snippets.execute","tags":["Snippets"],"summary":"Execute ad-hoc snippet code","description":"Executes ad-hoc JavaScript in the snippet sandbox and returns the synchronous result. Does not persist a snippet or run resource.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteSnippetBody"}}}},"responses":{"200":{"description":"Snippet execution result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteSnippetResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/snippets/{id}:execute":{"post":{"x-platform-visibility":"PUBLIC","operationId":"snippets.executeStored","tags":["Snippets"],"summary":"Execute stored snippet","description":"Fetches a stored snippet by ID server-side, executes its code in the snippet sandbox, and returns the synchronous result.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Snippet execution result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteSnippetResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/snippets/{id}/runs":{"post":{"x-platform-visibility":"PUBLIC","operationId":"snippets.createRun","tags":["Snippets"],"summary":"Create snippet run","description":"Creates a new snippet run resource under a snippet and starts execution. Idempotent with Idempotency-Key; callers receive the created run resource and Location header.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSnippetRunBody"}}}},"responses":{"201":{"description":"Snippet run created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnippetRun"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"snippet.ui.listSnippetRunsForApi"},"operationId":"snippets.listRuns","tags":["Snippets"],"summary":"List snippet runs","description":"Returns runs for a snippet. Use `view=basic` for a compact listing.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","enum":["succeeded","failed","timed_out"]},"required":false,"name":"state","in":"query"},{"schema":{"type":"string","enum":["basic","full"],"default":"basic","description":"Control whether output and error details are included."},"required":false,"description":"Control whether output and error details are included.","name":"view","in":"query"}],"responses":{"200":{"description":"List of snippet runs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnippetRunList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/snippets/{id}/runs/{run_id}":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"snippet.ui.getSnippetRun"},"operationId":"snippets.getRun","tags":["Snippets"],"summary":"Get snippet run","description":"Returns a single snippet run by ID.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"run_id","in":"path"}],"responses":{"200":{"description":"Snippet run details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnippetRun"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/dashboards":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"snippet.ui.listDashboardsForApi"},"operationId":"dashboards.list","tags":["Dashboards"],"summary":"List dashboards in workspace","description":"Returns all dashboards belonging to the workspace specified in the workspace context.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"List of dashboards","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"x-platform-visibility":"PUBLIC","operationId":"dashboards.create","tags":["Dashboards"],"summary":"Create dashboard","description":"Creates a dashboard in the workspace. Widgets are added through the dashboard widgets sub-collection.","security":[{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"example":"Cluster Overview"},"description":{"type":"string","maxLength":500}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Dashboard created","content":{"application/json":{"schema":{"type":"object","properties":{"dashboard_id":{"type":"string"}},"required":["dashboard_id"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/dashboards/{id}":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"snippet.ui.getDashboardForApi"},"operationId":"dashboards.get","tags":["Dashboards"],"summary":"Get dashboard details","description":"Returns a dashboard including its widget layout and snippet references.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Dashboard ID"},"required":true,"description":"Dashboard ID","name":"id","in":"path"}],"responses":{"200":{"description":"Dashboard details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"patch":{"x-platform-visibility":"PUBLIC","operationId":"dashboards.update","tags":["Dashboards"],"summary":"Update dashboard","description":"Update dashboard metadata. Widget mutations use the `/widgets` sub-collection.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Dashboard ID"},"required":true,"description":"Dashboard ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"string","maxLength":500}},"additionalProperties":false}}}},"responses":{"200":{"description":"Dashboard updated","content":{"application/json":{"schema":{"type":"object","properties":{"dashboard_id":{"type":"string"}},"required":["dashboard_id"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"x-platform-visibility":"PUBLIC","operationId":"dashboards.delete","tags":["Dashboards"],"summary":"Delete dashboard","description":"Permanently deletes a dashboard. Referenced snippets are not affected.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Dashboard ID"},"required":true,"description":"Dashboard ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"204":{"description":"Dashboard deleted"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/dashboards/{id}/widgets":{"post":{"x-platform-visibility":"PUBLIC","operationId":"dashboards.createWidget","tags":["Dashboards"],"summary":"Create dashboard widget","description":"Creates a widget as a child resource under a dashboard.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"snippet_id":{"type":"string","minLength":1,"maxLength":54},"col_span":{"anyOf":[{"type":"number","enum":[1]},{"type":"number","enum":[2]},{"type":"number","enum":[3]},{"type":"number","enum":[4]}]},"display_type":{"type":"string","nullable":true,"enum":["table","stat","json","logs",null],"description":"Controls how the snippet result is rendered in dashboard widgets"},"position":{"type":"integer"}},"required":["snippet_id","col_span"],"additionalProperties":false}}}},"responses":{"201":{"description":"Dashboard widget created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Widget"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"get":{"x-platform-visibility":"PUBLIC","operationId":"dashboards.listWidgets","tags":["Dashboards"],"summary":"List dashboard widgets","description":"Lists widgets for a dashboard.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"}],"responses":{"200":{"description":"List of dashboard widgets","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/dashboards/{id}/widgets/{wgt_id}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"dashboards.getWidget","tags":["Dashboards"],"summary":"Get dashboard widget","description":"Returns a single dashboard widget.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"wgt_id","in":"path"}],"responses":{"200":{"description":"Dashboard widget details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Widget"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"patch":{"x-platform-visibility":"PUBLIC","operationId":"dashboards.updateWidget","tags":["Dashboards"],"summary":"Update dashboard widget","description":"Updates widget placement and display settings.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"wgt_id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"col_span":{"anyOf":[{"type":"number","enum":[1]},{"type":"number","enum":[2]},{"type":"number","enum":[3]},{"type":"number","enum":[4]}]},"position":{"type":"integer"},"display_type":{"type":"string","nullable":true,"enum":["table","stat","json","logs",null],"description":"Controls how the snippet result is rendered in dashboard widgets"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Dashboard widget updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Widget"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"x-platform-visibility":"PUBLIC","operationId":"dashboards.deleteWidget","tags":["Dashboards"],"summary":"Delete dashboard widget","description":"Deletes a dashboard widget. Snippet references are preserved.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"wgt_id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"204":{"description":"Dashboard widget deleted"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/machines":{"post":{"x-platform-visibility":"PUBLIC","tags":["Machines"],"operationId":"machines.create","summary":"Create machine","description":"Creates a machine and returns a long-running operation envelope.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"cluster_id":{"type":"string","minLength":1,"maxLength":54},"instance_type":{"type":"string","minLength":1},"compute_config_id":{"type":"string","minLength":1,"maxLength":54},"name":{"type":"string","maxLength":120},"node_claim":{"type":"object","additionalProperties":{"nullable":true}}},"required":["cluster_id","instance_type","compute_config_id"],"additionalProperties":false}}}},"responses":{"202":{"description":"Machine creation accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationEnvelope"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"PUBLIC","transport":"convex","convexQuery":"compute.ui.listMachinesForApi"},"tags":["Machines"],"operationId":"machines.list","summary":"List machines","description":"Lists all machines in the workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":54},"required":false,"name":"cluster_id","in":"query"},{"schema":{"type":"string","enum":["ACTIVE","PROVISIONING","SUSPENDING","SUSPENDED","RESUMING","DELETING"],"description":"Machine lifecycle state."},"required":false,"description":"Machine lifecycle state.","name":"state","in":"query"},{"schema":{"type":"string","enum":["basic","full"],"default":"basic"},"required":false,"name":"view","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Machine list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachineList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/machines/{id}":{"get":{"x-platform-visibility":"PUBLIC","tags":["Machines"],"operationId":"machines.get","summary":"Get machine","description":"Returns a machine by ID.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Machine details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Machine"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"patch":{"x-platform-visibility":"PUBLIC","tags":["Machines"],"operationId":"machines.update","summary":"Update machine","description":"Updates machine metadata.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"anyOf":[{"type":"string","maxLength":120},{"nullable":true}]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Machine updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Machine"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"x-platform-visibility":"PUBLIC","tags":["Machines"],"operationId":"machines.delete","summary":"Delete machine","description":"Deletes a machine and returns a long-running operation envelope.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"202":{"description":"Machine deletion accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationEnvelope"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/machines/{id}:suspend":{"post":{"x-platform-visibility":"PUBLIC","tags":["Machines"],"operationId":"machines.suspend","summary":"Suspend machine","description":"Suspends a machine and returns a long-running operation envelope. On providers that recycle instances during suspension, the machine ID stays stable but the public IP usually changes on resume unless a floating IP is attached.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuspendMachineBody"}}}},"responses":{"202":{"description":"Machine suspend accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationEnvelope"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/machines/{id}:resume":{"post":{"x-platform-visibility":"PUBLIC","tags":["Machines"],"operationId":"machines.resume","summary":"Resume machine","description":"Resumes a suspended machine and returns a long-running operation envelope. The machine ID stays stable, but provider_resource.public_ip can change after resume on providers that recycle instances during suspension.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResumeMachineBody"}}}},"responses":{"202":{"description":"Machine resume accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationEnvelope"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/machines/{id}/drift_reports":{"post":{"x-platform-visibility":"PUBLIC","tags":["Machines"],"operationId":"machines.createDriftReport","summary":"Create machine drift report","description":"Runs drift detection and stores a dedicated report row.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"trigger":{"type":"string"}},"additionalProperties":false}}}},"responses":{"201":{"description":"Machine drift report created","headers":{"Location":{"schema":{"type":"string"},"description":"Location of the drift report."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriftReport"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"get":{"x-platform-visibility":"PUBLIC","tags":["Machines"],"operationId":"machines.listDriftReports","summary":"List machine drift reports","description":"Lists historical drift reports for a machine.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","enum":["in_sync","drifted"],"description":"Machine drift comparison state."},"required":false,"description":"Machine drift comparison state.","name":"state","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Drift report list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriftReportList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/machines/{id}/drift_reports/{report_id}":{"get":{"x-platform-visibility":"PUBLIC","tags":["Machines"],"operationId":"machines.getDriftReport","summary":"Get machine drift report","description":"Returns a single drift report by ID.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","description":"Drift report ID"},"required":true,"description":"Drift report ID","name":"report_id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Machine drift report","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriftReport"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/machines/{id}/suspension_events":{"get":{"x-platform-visibility":"PUBLIC","tags":["Machines"],"operationId":"machines.listSuspensionEvents","summary":"List machine suspension events","description":"Lists historical suspension events for the machine. Events record suspend, resume, expiry, and snapshot-cost details for audit and billing reports.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","enum":["manual","downgrade"]},"required":false,"name":"reason","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Suspension event list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuspensionEventList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/machines/{id}/suspension_events/{event_id}":{"get":{"x-platform-visibility":"PUBLIC","tags":["Machines"],"operationId":"machines.getSuspensionEvent","summary":"Get machine suspension event","description":"Returns a single suspension event for a machine, including snapshot reference, cost, lifecycle state, and timing details.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"event_id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Suspension event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuspensionEvent"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/compute_configs":{"post":{"x-platform-visibility":"PUBLIC","tags":["ComputeConfigs"],"operationId":"computeConfigs.create","summary":"Create compute config","description":"Creates a compute config row.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"provider":{"type":"string","enum":["hcloud"]},"provider_config":{"type":"object","properties":{"region":{"type":"string","minLength":1},"image":{"type":"string","minLength":1},"machine_type_filter":{"type":"string"}},"required":["region","image"]},"credential_scope":{"$ref":"#/components/schemas/CredentialScope"}},"required":["name","provider","provider_config","credential_scope"],"additionalProperties":false}}}},"responses":{"201":{"description":"Compute config created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComputeConfig"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"PUBLIC","transport":"convex","convexQuery":"compute.ui.listComputeConfigsForApi"},"tags":["ComputeConfigs"],"operationId":"computeConfigs.list","summary":"List compute configs","description":"Lists compute configs in the workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","enum":["basic","full"],"default":"basic"},"required":false,"name":"view","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Compute config list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComputeConfigList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/compute_configs/{id}":{"get":{"x-platform-visibility":"PUBLIC","tags":["ComputeConfigs"],"operationId":"computeConfigs.get","summary":"Get compute config","description":"Returns a compute config by ID.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Compute config details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComputeConfig"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"patch":{"x-platform-visibility":"PUBLIC","tags":["ComputeConfigs"],"operationId":"computeConfigs.update","summary":"Update compute config","description":"Updates mutable fields of a compute config.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"provider_config":{"type":"object","properties":{"region":{"type":"string","minLength":1},"image":{"type":"string","minLength":1},"machine_type_filter":{"type":"string"}}},"credential_scope":{"$ref":"#/components/schemas/CredentialScope"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Compute config updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComputeConfig"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"x-platform-visibility":"PUBLIC","tags":["ComputeConfigs"],"operationId":"computeConfigs.delete","summary":"Delete compute config","description":"Deletes a compute config.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"200":{"description":"Compute config deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComputeConfig"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/products":{"get":{"x-platform-visibility":"PUBLIC","operationId":"products.list","tags":["Products"],"summary":"List products in workspace","description":"Returns all products belonging to the workspace specified in the workspace context.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"List of products","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"x-platform-visibility":"PUBLIC","operationId":"products.create","tags":["Products"],"summary":"Create product","description":"Creates a Product backed by an existing Package and package version pin. Package source import belongs to the Packages API.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProductBody"}}}},"responses":{"201":{"description":"Product created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Product"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/products:dashboardList":{"get":{"x-platform-visibility":"INTERNAL","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"product.ui.listDashboardProductsForApi"},"operationId":"products.listDashboard","tags":["Products"],"summary":"List dashboard products in workspace","description":"Returns product rows shaped for the dashboard product catalog, including target counts.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Dashboard product list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardProductList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/products:marketplaceList":{"get":{"x-platform-visibility":"INTERNAL","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"product.ui.getMarketplaceProductsForUi"},"operationId":"products.listMarketplace","tags":["Products"],"summary":"List marketplace products","description":"Returns product rows shaped for the marketplace catalog.","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"Marketplace product list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketplaceProductList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/products/{id}":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"product.ui.getProductForApi"},"operationId":"products.get","tags":["Products"],"summary":"Get product details","description":"Returns product metadata including the backing Package and marketplace settings.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Product ID","example":"prod_j572abc..."},"required":true,"description":"Product ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Product details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Product"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"patch":{"x-platform-visibility":"PUBLIC","operationId":"products.update","tags":["Products"],"summary":"Update product","description":"Updates Product metadata, marketplace listing state, and the package version pin for future offers and installs.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Product ID","example":"prod_j572abc..."},"required":true,"description":"Product ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProductBody"}}}},"responses":{"200":{"description":"Product updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Product"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/products/{id}:marketplace":{"get":{"x-platform-visibility":"INTERNAL","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"product.ui.getPublicProductForUi"},"operationId":"products.getMarketplace","tags":["Products"],"summary":"Get marketplace product","description":"Returns product detail shaped for the marketplace product page.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Product ID","example":"prod_j572abc..."},"required":true,"description":"Product ID","name":"id","in":"path"}],"responses":{"200":{"description":"Marketplace product detail","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketplaceProductDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/products/{id}:archive":{"post":{"x-platform-visibility":"PUBLIC","operationId":"products.archive","tags":["Products"],"summary":"Archive product","description":"Archives the product and removes it from active marketplace listings. The row persists with state `archived` for audit/history/revenue-attribution. Active installs and past orders are unaffected; backing packages remain independently managed and unchanged. Dashboard callers can still render historical product context.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Product ID","example":"prod_j572abc..."},"required":true,"description":"Product ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArchiveProductBody"}}}},"responses":{"200":{"description":"Product archived","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Product"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/products/{id}:unarchive":{"post":{"x-platform-visibility":"PUBLIC","operationId":"products.unarchive","tags":["Products"],"summary":"Unarchive product","description":"Restores a previously-archived product to `active`. The row remains in place and history is preserved. Active installs continue; dependent offers stay untouched unless separately unarchived.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Product ID","example":"prod_j572abc..."},"required":true,"description":"Product ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Product unarchived","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Product"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/offer_channels":{"post":{"x-platform-visibility":"TRUSTED_PARTNER","operationId":"offerChannels.create","tags":["Offer Channels"],"summary":"Create offer channel","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOfferChannelBody"}}}},"responses":{"201":{"description":"Offer channel created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfferChannel"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"get":{"x-platform-visibility":"TRUSTED_PARTNER","x-platform-live":{"visibility":"TRUSTED_PARTNER","transport":"convex","convexQuery":"offers.ui.listOfferChannelsForApi"},"operationId":"offerChannels.list","tags":["Offer Channels"],"summary":"List offer channels","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55},"required":false,"name":"product_id","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Offer channels","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfferChannelList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/offer_channels/{id}":{"get":{"x-platform-visibility":"TRUSTED_PARTNER","operationId":"offerChannels.get","tags":["Offer Channels"],"summary":"Get offer channel","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Offer channel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfferChannel"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/offer_channels/{id}:archive":{"post":{"x-platform-visibility":"TRUSTED_PARTNER","operationId":"offerChannels.archive","tags":["Offer Channels"],"summary":"Archive offer channel","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Offer channel archived","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfferChannel"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/channel_policies":{"post":{"x-platform-visibility":"TRUSTED_PARTNER","operationId":"channelPolicies.create","tags":["Channel Policies"],"summary":"Create channel policy","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChannelPolicyBody"}}}},"responses":{"201":{"description":"Channel policy created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelPolicy"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"get":{"x-platform-visibility":"TRUSTED_PARTNER","x-platform-live":{"visibility":"TRUSTED_PARTNER","transport":"convex","convexQuery":"offers.ui.listChannelPoliciesForApi"},"operationId":"channelPolicies.list","tags":["Channel Policies"],"summary":"List channel policies","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"offer_channel","in":"query"}],"responses":{"200":{"description":"Channel policies","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelPolicyList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/channel_policies/{id}":{"get":{"x-platform-visibility":"TRUSTED_PARTNER","operationId":"channelPolicies.get","tags":["Channel Policies"],"summary":"Get channel policy","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":56},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Channel policy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelPolicy"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/channel_policies/{id}:approve":{"post":{"x-platform-visibility":"TRUSTED_PARTNER","operationId":"channelPolicies.approve","tags":["Channel Policies"],"summary":"Approve channel policy","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":56},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Channel policy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelPolicy"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/channel_policies/{id}:activate":{"post":{"x-platform-visibility":"TRUSTED_PARTNER","operationId":"channelPolicies.activate","tags":["Channel Policies"],"summary":"Activate channel policy","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":56},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Channel policy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelPolicy"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/channel_policies/{id}:archive":{"post":{"x-platform-visibility":"TRUSTED_PARTNER","operationId":"channelPolicies.archive","tags":["Channel Policies"],"summary":"Archive channel policy","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":56},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Channel policy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelPolicy"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/offers":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"TRUSTED_PARTNER","transport":"convex","convexQuery":"offers.ui.listMyWorkspaceOffers"},"operationId":"offers.list","tags":["Offers"],"summary":"List offers in workspace","description":"Returns offers belonging to the workspace specified in the workspace context, newest first.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":55},"required":false,"name":"product_id","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"List of offers","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfferList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"x-platform-visibility":"PUBLIC","operationId":"offers.create","tags":["Offers"],"summary":"Create offer","description":"Creates an Offer for a product or a specific package version. When `product_id` is supplied without `package_version_id`, the server resolves the product’s current package version pin, validates `field_values` against that resolved version’s input schema, and stores the concrete package version on the Offer. Customers reach the Offer at `/i/<short_hash>` to start an install. When `allowed_emails` is non-empty, only those email addresses can use the Offer; when empty or omitted, any authenticated customer can.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOfferBody"}}}},"responses":{"201":{"description":"Offer created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfferCreated"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/offers/{id}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"offers.get","tags":["Offers"],"summary":"Get offer details","description":"Returns the full offer record including pre-fill values and email allowlist. Caller must be a member of the offer’s workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":56,"description":"Offer ID","example":"offer_j572abc..."},"required":true,"description":"Offer ID","name":"id","in":"path"}],"responses":{"200":{"description":"Offer details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Offer"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/offers:preview":{"post":{"x-platform-visibility":"TRUSTED_PARTNER","operationId":"offers.preview","tags":["Offers"],"summary":"Preview offer policy","description":"Resolves an offer request against the active Offer Channel policy without creating an offer.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewOfferBody"}}}},"responses":{"200":{"description":"Offer policy preview","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfferPolicySnapshot"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/offers/{id}:approve":{"post":{"x-platform-visibility":"INTERNAL","operationId":"offers.approve","tags":["Offers"],"summary":"Approve offer","description":"Approves a pending channel-backed offer and freezes its requested policy snapshot as the approved effective policy snapshot.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":56,"description":"Offer ID","example":"offer_j572abc..."},"required":true,"description":"Offer ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Offer approved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Offer"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/offers/{id}:reject":{"post":{"x-platform-visibility":"INTERNAL","operationId":"offers.reject","tags":["Offers"],"summary":"Reject offer","description":"Rejects a pending channel-backed offer. Rejected offers keep their requested policy snapshot but cannot receive an approved effective snapshot.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":56,"description":"Offer ID","example":"offer_j572abc..."},"required":true,"description":"Offer ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Offer rejected","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Offer"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/offers:resolve":{"get":{"x-platform-visibility":"PUBLIC","operationId":"offers.resolve","tags":["Offers"],"summary":"Resolve offer by short hash","description":"Resolves an offer from the customer-clicked URL `/i/<short_hash>`. Anonymous callers receive the publicly-safe subset of fields needed to render the landing page (product name, logo, seller name, status, tier). Authenticated callers whose verified email matches the offer's allowlist additionally receive pre-fill values and other workspace-private fields. Authenticated callers whose email is not on the allowlist receive 403.","security":[],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Offer short hash from the customer-clicked URL"},"required":true,"description":"Offer short hash from the customer-clicked URL","name":"short_hash","in":"query"}],"responses":{"200":{"description":"Offer resolved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Offer"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/offers/{id}:archive":{"post":{"x-platform-visibility":"PUBLIC","operationId":"offers.archive","tags":["Offers"],"summary":"Archive offer","description":"Archives the offer and blocks new redemptions. The offer row remains for history and audit; callers receive the full Offer with `status: \"archived\"`. Idempotent: already-archived offers return unchanged. If-Match is required for optimistic concurrency.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":56,"description":"Offer ID","example":"offer_j572abc..."},"required":true,"description":"Offer ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"200":{"description":"Offer archived","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Offer"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/offers/{id}:unarchive":{"post":{"x-platform-visibility":"PUBLIC","operationId":"offers.unarchive","tags":["Offers"],"summary":"Unarchive offer","description":"Reverts a previously-archived offer back to `active`. Idempotent: already-active offers return unchanged. Does not auto-cascade to dependents or previously-archived child references.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":56,"description":"Offer ID","example":"offer_j572abc..."},"required":true,"description":"Offer ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"200":{"description":"Offer unarchived","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Offer"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/offers/{offer}/order_drafts":{"post":{"x-platform-visibility":"PUBLIC","operationId":"orderDrafts.create","tags":["Order Drafts"],"summary":"Create order draft","description":"Creates a customer wizard session (OrderDraft) for the parent offer. The caller is the customer; their authenticated user becomes the draft's owner. Each idempotent create call returns the same draft for the same Idempotency-Key. Concurrency limits and email-allowlist gates apply per the offer's configuration; failures map to 403 (forbidden) or 422 (offer not redeemable).","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":56,"description":"Parent offer ID","example":"offer_j572abc..."},"required":true,"description":"Parent offer ID","name":"offer","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"responses":{"201":{"description":"Order draft started","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderDraft"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/order_drafts":{"get":{"x-platform-visibility":"PUBLIC","operationId":"orderDrafts.list","tags":["Order Drafts"],"summary":"List order drafts","description":"Returns order drafts for one offer. `?offer=` is required in v1; `?status=` can further filter by wizard phase. With a workspace context (token-implied or `Akua-Context`), only workspace-member-visible drafts are returned and `field_values` is omitted.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":56,"description":"Filter by offer ID","example":"offer_j572abc123def456"},"required":false,"description":"Filter by offer ID","name":"offer","in":"query"},{"schema":{"$ref":"#/components/schemas/OrderDraftStatus"},"required":false,"description":"Wizard phase. Driven by the order draft actor; mirrored on every patch to the row so reactive UIs render one column. `done` and `terminated` are terminal.","name":"status","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"List of order drafts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderDraftList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/order_drafts:workspaceList":{"get":{"x-platform-visibility":"INTERNAL","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"orders.ui.listMyWorkspaceOrders"},"operationId":"orderDrafts.listWorkspace","tags":["Order Drafts"],"summary":"List workspace order drafts","description":"Returns order drafts for offers in the selected workspace. Intended for dashboard live reads.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"List of workspace order drafts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderDraftList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/order_drafts/{id}":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"orders.ui.getMyOrderDraft"},"operationId":"orderDrafts.get","tags":["Order Drafts"],"summary":"Get order draft details","description":"Returns the order draft row. The order draft’s own customer sees the full record including `field_values`; workspace members of the parent offer see the row with `field_values` omitted.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Order draft ID","example":"odft_j572abc..."},"required":true,"description":"Order draft ID","name":"id","in":"path"}],"responses":{"200":{"description":"Order draft details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderDraft"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/order_drafts/{id}:cancel":{"post":{"x-platform-visibility":"PUBLIC","operationId":"orderDrafts.cancel","tags":["Order Drafts"],"summary":"Cancel order draft","description":"Terminates an in-flight order draft, returning the updated record. Allowed for the order draft’s own customer or any member of the parent offer’s workspace. Idempotent — cancelling a terminated order draft returns it unchanged. Allocated cluster resources are released and any in-flight install workflow is terminated; previously-completed work is NOT undone.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Order draft ID","example":"odft_j572abc..."},"required":true,"description":"Order draft ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"200":{"description":"Order draft cancelled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderDraft"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/order_drafts/{id}:claim":{"post":{"x-platform-visibility":"PUBLIC","operationId":"orderDrafts.claim","tags":["Order Drafts"],"summary":"Claim order draft","description":"Binds the calling authenticated user to an anonymous order draft using a one-time claim token (R13 + AIP-147 INPUT_ONLY).","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Order draft ID","example":"odft_j572abc..."},"required":true,"description":"Order draft ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimOrderDraftBody"}}}},"responses":{"200":{"description":"Order draft claimed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderDraft"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/order_drafts/{id}:selectWorkspace":{"post":{"x-platform-visibility":"PUBLIC","operationId":"orderDrafts.selectWorkspace","tags":["Order Drafts"],"summary":"Select order workspace","description":"Selects the customer workspace for an order draft, or creates a new workspace for the order. This advances the draft from workspace selection to compute allocation.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Order draft ID","example":"odft_j572abc..."},"required":true,"description":"Order draft ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SelectOrderDraftWorkspaceBody"}}}},"responses":{"200":{"description":"Workspace selected","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderDraft"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/order_drafts/{id}:submitConfiguration":{"post":{"x-platform-visibility":"PUBLIC","operationId":"orderDrafts.submitConfigure","tags":["Order Drafts"],"summary":"Submit configure values","description":"Persists the customer’s configure-form values on the order draft and advances it to the payment phase, returning the updated record. Values are validated against the package version’s schema.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Order draft ID","example":"odft_j572abc..."},"required":true,"description":"Order draft ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitConfigureOrderDraftBody"}}}},"responses":{"200":{"description":"Configure submitted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderDraft"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/order_drafts/{id}:createWorkerBootstrap":{"post":{"x-platform-visibility":"PUBLIC","operationId":"orderDrafts.createWorkerBootstrap","tags":["Order Drafts"],"summary":"Create order draft worker bootstrap","description":"Creates a short-lived worker bootstrap token and renders command/cloud-init data for the cluster allocated to this order draft. Only valid while the draft is waiting for compute bootstrap.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Order draft ID","example":"odft_j572abc..."},"required":true,"description":"Order draft ID","name":"id","in":"path"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"ttl_seconds":{"type":"integer","minimum":60,"maximum":86400}},"additionalProperties":false}}}},"responses":{"200":{"description":"Worker bootstrap data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderDraftWorkerBootstrap"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/order_drafts/{id}/checkout_sessions":{"post":{"x-platform-visibility":"PUBLIC","operationId":"orderDrafts.createCheckoutSession","tags":["Order Drafts"],"summary":"Create order draft checkout session","description":"Creates a Stripe Checkout Session for the current order-draft payment revision, or returns the existing open session when it still has enough remaining lifetime. Stale sessions are expired and superseded before a replacement is created.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Order draft ID","example":"odft_j572abc..."},"required":true,"description":"Order draft ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"201":{"description":"Checkout session created or reused","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderDraftCheckoutSession"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"get":{"x-platform-visibility":"PUBLIC","operationId":"orderDrafts.listCheckoutSessions","tags":["Order Drafts"],"summary":"List order draft checkout sessions","description":"Returns historical checkout session rows for the order draft (current and past) for resume/audit workflows.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Order draft ID","example":"odft_j572abc..."},"required":true,"description":"Order draft ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"}],"responses":{"200":{"description":"List of checkout sessions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutSessionList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/order_drafts/{id}/checkout_sessions/{chk_id}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"orderDrafts.getCheckoutSession","tags":["Order Drafts"],"summary":"Get order draft checkout session","description":"Returns one historical checkout session by ID, including the current session state.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Order draft ID","example":"odft_j572abc..."},"required":true,"description":"Order draft ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Checkout session ID","example":"chk_abcdefghijk..."},"required":true,"description":"Checkout session ID","name":"chk_id","in":"path"}],"responses":{"200":{"description":"Checkout session details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutSession"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/orders/{order}/deliveries/{delivery}:removeDemoCleanup":{"post":{"x-platform-visibility":"ADMIN","operationId":"orderDrafts.removeDemoCleanup","tags":["Order Drafts"],"summary":"Remove demo cleanup after platform approval","description":"Removes scheduled cleanup from a non-billable demo/test order delivery after platform approval. This is an admin-only conversion hook; sellers and customers cannot remove cleanup unilaterally.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Committed order ID"},"required":true,"description":"Committed order ID","name":"order","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Order delivery ID"},"required":true,"description":"Order delivery ID","name":"delivery","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveDemoCleanupAfterPlatformApprovalBody"}}}},"responses":{"200":{"description":"Demo cleanup removed from the order and delivery","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoCleanupRemoval"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/entitlements":{"get":{"x-platform-visibility":"PUBLIC","operationId":"entitlements.list","tags":["Entitlements"],"x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"workspace.ui.listEffectiveEntitlementsForApi"},"summary":"List entitlements","description":"Returns active effective entitlements visible to the authenticated caller.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Filter entitlements to one workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Filter entitlements to one workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":128,"description":"Filter entitlements to one feature set, such as `compute`."},"required":false,"description":"Filter entitlements to one feature set, such as `compute`.","name":"feature_set","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"Filter entitlements to one exact feature key, such as `compute.max_clusters`."},"required":false,"description":"Filter entitlements to one exact feature key, such as `compute.max_clusters`.","name":"feature","in":"query"}],"responses":{"200":{"description":"Entitlement list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitlementList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/operations":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"operations.ui.listOperationsForWorkspaceForApi"},"operationId":"operations.list","tags":["Operations"],"summary":"List operations","description":"Workspace-scoped list of long-running operations, newest first. Without filters returns every operation in the workspace; with `?owner_type=install&owner_id=<id>` narrows to a single entity.\n\nState for in-flight operations is eventually consistent — may lag actual execution by a few seconds. State for completed operations (`done: true`) is immutable.","security":[{"BearerAuth":[]}],"x-platform-query-contracts":[{"kind":"requires-together","fields":["owner_type","owner_id"]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","enum":["install","repository_change_request","repository","workspace","machine","cluster","package"]},"required":false,"name":"owner_type","in":"query"},{"schema":{"type":"string","description":"Required when `owner_type` is set. Ignored otherwise."},"required":false,"description":"Required when `owner_type` is set. Ignored otherwise.","name":"owner_id","in":"query"}],"responses":{"200":{"description":"List of operations (without per-step detail)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationList"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/operations/{id}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"operations.get","tags":["Operations"],"x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"operations.ui.getOperationWithStepsForApi"},"summary":"Get operation details + steps","description":"Returns the operation row plus its per-step progress events. Clients poll this endpoint while `done` is false; when `done` flips true, `response` carries the typed result (`SUCCEEDED`) or `error.message` carries the failure reason. Prefer `POST /v1/operations/{id}:wait` for sync \"wait until done\" semantics — it long-polls server-side instead of asking the client to tight-poll.\n\nState for in-flight operations is eventually consistent — may lag actual execution by a few seconds. State for completed operations (`done: true`) is immutable.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Operation ID. Prefixed form `op_<id>` is canonical; bare IDs accepted during transition.","example":"op_j572abc..."},"required":true,"description":"Operation ID. Prefixed form `op_<id>` is canonical; bare IDs accepted during transition.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Operation details (with steps)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/operations/{id}:wait":{"post":{"x-platform-visibility":"PUBLIC","operationId":"operations.wait","tags":["Operations"],"summary":"Wait for an operation to reach a terminal state","description":"Long-polls server-side until the operation reaches a terminal state (`SUCCEEDED`, `FAILED`, `CANCELLED`) or the timeout elapses. Returns the latest `Operation` either way — check `done` to distinguish.\n\nServer-side this is a live subscription on the operation row, not a polling loop, so the response fires within milliseconds of the workflow reaching its terminal state.\n\nState for in-flight operations is eventually consistent — may lag actual execution by a few seconds. State for completed operations (`done: true`) is immutable.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Operation ID. Prefixed form `op_<id>` is canonical; bare IDs accepted during transition.","example":"op_j572abc..."},"required":true,"description":"Operation ID. Prefixed form `op_<id>` is canonical; bare IDs accepted during transition.","name":"id","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":60,"description":"Max seconds to wait for the operation to reach a terminal state. Default 30, max 60."},"required":false,"description":"Max seconds to wait for the operation to reach a terminal state. Default 30, max 60.","name":"timeout","in":"query"}],"responses":{"200":{"description":"Operation in its latest known state (terminal or still running on timeout)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/operations/{id}:cancel":{"post":{"x-platform-visibility":"PUBLIC","operationId":"operations.cancel","tags":["Operations"],"summary":"Request operation cancellation","description":"Requests cancellation of an in-flight operation. Cancellation is asynchronous: successful requests return the current operation envelope while the worker drains the current step before settling into a terminal result. Replaying the request with the same Idempotency-Key is supported. If the operation has already reached a terminal state, cancellation is rejected with Unprocessable Entity.\n\nWhen accepted, the operation is not cancelled instantly; it transitions through the normal cancellation flow and may still report progress for a short time.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Operation ID. Prefixed form `op_<id>` is canonical; bare IDs accepted during transition.","example":"op_j572abc..."},"required":true,"description":"Operation ID. Prefixed form `op_<id>` is canonical; bare IDs accepted during transition.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Optional optimistic concurrency token for clients that track the latest operation revision.","example":"WzQ1Njc="},"required":false,"description":"Optional optimistic concurrency token for clients that track the latest operation revision.","name":"if-match","in":"header"}],"responses":{"202":{"description":"Cancellation requested; operation transition is in progress","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/installs:dashboardList":{"get":{"x-platform-visibility":"INTERNAL","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"install.listDashboardInstallsForApi"},"operationId":"installs.listDashboard","tags":["Installs"],"summary":"List dashboard installs","description":"Returns standalone install rows shaped for the dashboard applications table.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Dashboard install list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardInstallList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/installs/{id}:dashboard":{"get":{"x-platform-visibility":"INTERNAL","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"install.getDashboardInstallForApi"},"operationId":"installs.getDashboard","tags":["Installs"],"summary":"Get dashboard install detail","description":"Returns an install detail row shaped for the dashboard install pages.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Dashboard install detail","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardInstallDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/installs":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"PUBLIC","transport":"convex","convexQuery":"install.listInstallsForApi"},"operationId":"installs.list","tags":["Installs"],"summary":"List installs","description":"Lists installs in the current workspace. With `product_id`, lists installs attributed to that product for product-owner support visibility.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":55},"required":false,"name":"product_id","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Installs list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"x-platform-visibility":"PUBLIC","operationId":"installs.create","tags":["Installs"],"summary":"Create install","description":"Creates a product install via a long-running saga that may run for several minutes. Returns an Operation envelope to poll for progress.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInstallBody"}}}},"responses":{"202":{"description":"Install workflow started","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/installs/{id}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"installs.get","tags":["Installs"],"summary":"Get install details","description":"Returns current install metadata.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Install ID","example":"inst_j572abc123def456"},"required":true,"description":"Install ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Install details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Install"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"x-platform-visibility":"PUBLIC","operationId":"installs.delete","tags":["Installs"],"summary":"Delete install","description":"Deletes an install and cascades resource cleanup asynchronously. Returns an Operation envelope to poll for progress.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Install ID","example":"inst_j572abc123def456"},"required":true,"description":"Install ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"202":{"description":"Delete workflow started","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/installs/{id}/domain_settings":{"get":{"x-platform-visibility":"INTERNAL","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"cloudflare.ui.getInstallDomainSettingsForApi"},"operationId":"installs.getDomainSettings","tags":["Installs"],"summary":"Get install domain settings","description":"Returns dashboard domain-routing settings for one install.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Install ID"},"required":true,"description":"Install ID","name":"id","in":"path"}],"responses":{"200":{"description":"Install domain settings","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallDomainSettings"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/installs/{id}/renders":{"post":{"x-platform-visibility":"PUBLIC","operationId":"installs.createRender","tags":["Installs"],"summary":"Create install render","description":"Starts a render attempt and records the resulting render artifact metadata.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Install ID","example":"inst_j572abc123def456"},"required":true,"description":"Install ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInstallRenderBody"}}}},"responses":{"201":{"description":"Render artifact created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallRender"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"get":{"x-platform-visibility":"PUBLIC","operationId":"installs.listRenders","tags":["Installs"],"summary":"List install renders","description":"Lists render artifacts for an install.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Install ID","example":"inst_j572abc123def456"},"required":true,"description":"Install ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Install renders","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallRenderList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/installs/{id}/renders/{render_id}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"installs.getRender","tags":["Installs"],"summary":"Get install render","description":"Returns a single render artifact.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Install ID","example":"inst_j572abc123def456"},"required":true,"description":"Install ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Render ID","example":"rnd_j572abc..."},"required":true,"description":"Render ID","name":"render_id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Render artifact","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallRender"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/installs/{id}/status":{"get":{"x-platform-visibility":"PUBLIC","operationId":"installs.getStatus","tags":["Installs"],"summary":"Get install status","description":"Returns the live install deploy status for dashboards and health checks.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Install ID","example":"inst_j572abc123def456"},"required":true,"description":"Install ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Install status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallStatus"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/installs/{id}/pods":{"get":{"x-platform-visibility":"PUBLIC","operationId":"installs.listPods","tags":["Installs"],"summary":"List install pods","description":"Returns current pod names and containers for the install.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Install ID","example":"inst_j572abc123def456"},"required":true,"description":"Install ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Install pods","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PodList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/installs/{id}/logs":{"get":{"x-platform-visibility":"PUBLIC","operationId":"installs.getLogs","tags":["Installs"],"summary":"Stream install logs","description":"Streams log output for an install via Server-Sent Events. Use `Accept: text/event-stream`.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Install ID","example":"inst_j572abc123def456"},"required":true,"description":"Install ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":253,"description":"Pod name (all pods if omitted)"},"required":false,"description":"Pod name (all pods if omitted)","name":"pod","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":253,"description":"Container name"},"required":false,"description":"Container name","name":"container","in":"query"},{"schema":{"type":"boolean","nullable":true,"default":true,"description":"Follow log output"},"required":false,"description":"Follow log output","name":"follow","in":"query"},{"schema":{"type":"integer","nullable":true,"description":"Lines to tail"},"required":false,"description":"Lines to tail","name":"tail","in":"query"},{"schema":{"type":"integer","nullable":true,"default":0,"description":"Only return logs newer than this many seconds"},"required":false,"description":"Only return logs newer than this many seconds","name":"since_seconds","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Log stream","content":{"text/event-stream":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/packages":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"packages.ui.listMyWorkspacePackagesForApi"},"operationId":"packages.list","tags":["Packages"],"summary":"List packages","description":"Returns all packages in the active workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","enum":["basic","full"],"default":"basic","description":"Controls whether sensitive source provenance is included. `basic` omits `composed_from_sources`."},"required":false,"description":"Controls whether sensitive source provenance is included. `basic` omits `composed_from_sources`.","name":"view","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"List of packages","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PackageList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"x-platform-visibility":"PUBLIC","tags":["Packages"],"operationId":"packages.create","summary":"Create package","description":"Creates a package from one OCI Helm source as a long-running operation.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageBody"}}}},"responses":{"202":{"description":"Package creation accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PackageOperationEnvelope"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/packages:withVersions":{"get":{"x-platform-visibility":"INTERNAL","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"packages.ui.listMyWorkspacePackagesWithVersionsForApi"},"operationId":"packages.listWithVersions","tags":["Packages"],"summary":"List packages with versions","description":"Returns dashboard package choices with newest-first version summaries for create flows.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Packages with version summaries","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PackageWithVersionsList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/packages:inventory":{"get":{"x-platform-visibility":"INTERNAL","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"packages.ui.listMyWorkspacePackageInventoryForApi"},"operationId":"packages.listInventory","tags":["Packages"],"summary":"List package inventory","description":"Returns dashboard package inventory rows with source metadata and newest version summaries.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Package inventory rows","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PackageInventoryList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/packages/{id}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"packages.get","tags":["Packages"],"summary":"Get package details","description":"Returns a single package and the `latest_version_id` pointer for this workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","enum":["basic","full"],"default":"basic","description":"Controls whether sensitive source provenance is included. `basic` omits `composed_from_sources`."},"required":false,"description":"Controls whether sensitive source provenance is included. `basic` omits `composed_from_sources`.","name":"view","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Package details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Package"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"x-platform-visibility":"PUBLIC","tags":["Packages"],"operationId":"packages.delete","summary":"Delete package","description":"Deletes a Package and its PackageVersions only when no Product references the Package and no Install references any PackageVersion.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"204":{"description":"Package deleted"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/packages/{id}:detail":{"get":{"x-platform-visibility":"INTERNAL","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"packages.ui.getMyPackageDetailForApi"},"operationId":"packages.getDetail","tags":["Packages"],"summary":"Get package detail","description":"Returns dashboard package detail with version history and input schemas.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Package ID"},"required":true,"description":"Package ID","name":"id","in":"path"}],"responses":{"200":{"description":"Package detail or null when missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PackageDetailResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/packages/{id}/versions":{"get":{"x-platform-visibility":"PUBLIC","operationId":"packages.listVersions","tags":["Packages"],"summary":"List package versions","description":"Returns published versions of a package, newest first.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"List of package versions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PackageVersionList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"x-platform-visibility":"PUBLIC","operationId":"packages.createVersion","tags":["Packages"],"summary":"Create package version","description":"Registers an immutable version for an existing OCI-backed package. Akua verifies the supplied version metadata against the published artifact before durable registration. Requires published Package import access. Hosted packages publish versions through the package creation workflow.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Package ID","example":"pkg_j572abc123def456"},"required":true,"description":"Package ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageVersionBody"}}}},"responses":{"201":{"description":"Package version created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PackageVersion"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/packages/{id}/versions/{version_id}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"packages.getVersion","tags":["Packages"],"summary":"Get package version details","description":"Returns a single version entry for a package.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":55},"required":true,"name":"version_id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Package version details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PackageVersion"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/packages/{id}/versions/{version_id}/inputs":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"packages.ui.getMyPackageVersionInputSchemaForApi"},"operationId":"packages.getVersionInputs","tags":["Packages"],"summary":"Get package version input schema","description":"Returns the version input schema used by the install wizard, typically generated JSON Schema.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":55},"required":true,"name":"version_id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Package version input schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PackageVersionInputs"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/packages/artifacthub/{package_id}/versions/{version}/values_schema":{"get":{"x-platform-visibility":"PUBLIC","operationId":"packages.getArtifacthubValuesSchema","tags":["Packages"],"summary":"Resolve Artifact Hub chart values + schema","description":"Fetches a chart's values from Artifact Hub and returns them with a JSON Schema — the chart's published schema (when present) merged over a schema inferred from the values, so the editor always has defaults to show.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Artifact Hub package id","example":"a1b2c3d4-..."},"required":true,"description":"Artifact Hub package id","name":"package_id","in":"path"},{"schema":{"type":"string","description":"Chart version","example":"1.2.3"},"required":true,"description":"Chart version","name":"version","in":"path"},{"schema":{"type":"string","enum":["true","false"],"description":"Also fetch the chart's published values-schema and merge it in"},"required":false,"description":"Also fetch the chart's published values-schema and merge it in","name":"include_schema","in":"query"}],"responses":{"200":{"description":"Resolved chart values + schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PackageArtifacthubValuesSchema"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/packages:import":{"post":{"x-platform-visibility":"PUBLIC","tags":["Packages"],"operationId":"packages.importPublished","summary":"Import published package","description":"Imports a published OCI-backed Akua package and registers its first immutable version. Akua verifies the supplied version metadata against the published artifact before durable registration. Requires published Package import access.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportPackageBody"}}}},"responses":{"201":{"description":"Package imported","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Package"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/workspaces":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"workspace.ui.listWorkspacesForApi"},"operationId":"workspaces.list","tags":["Workspaces"],"summary":"List workspaces","description":"Returns all workspaces visible to the authenticated user.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"}],"responses":{"200":{"description":"Workspace list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"x-platform-visibility":"PUBLIC","operationId":"workspaces.create","tags":["Workspaces"],"summary":"Create workspace","description":"Creates a workspace for the authenticated user.","security":[{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"slug":{"type":"string","minLength":3,"maxLength":39},"icon":{"type":"string","maxLength":256,"format":"uri","x-platform-visibility":"INTERNAL"},"auto_select":{"type":"boolean","x-platform-visibility":"INTERNAL"}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Workspace created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/workspaces/{id}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"workspaces.get","tags":["Workspaces"],"summary":"Get workspace","description":"Returns the details of a workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"required":true,"description":"Workspace ID","name":"id","in":"path"}],"responses":{"200":{"description":"Workspace details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"patch":{"x-platform-visibility":"PUBLIC","operationId":"workspaces.update","tags":["Workspaces"],"summary":"Update workspace","description":"Updates workspace metadata for the selected workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"required":true,"description":"Workspace ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"slug":{"type":"string","minLength":3,"maxLength":39},"icon":{"type":"string","maxLength":256,"format":"uri","x-platform-visibility":"INTERNAL"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Workspace updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"x-platform-visibility":"PUBLIC","operationId":"workspaces.delete","tags":["Workspaces"],"summary":"Delete workspace","description":"Asynchronously deletes a workspace and all of its workspace-owned resources.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"required":true,"description":"Workspace ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"202":{"description":"Workspace deletion accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"504":{"description":"Gateway timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/workspaces/{id}/members":{"get":{"x-platform-visibility":"PUBLIC","operationId":"workspaces.listMembers","tags":["Workspaces"],"summary":"List workspace members","description":"Returns the members and roles for a workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"required":true,"description":"Workspace ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Workspace members","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMemberList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"x-platform-visibility":"PUBLIC","operationId":"workspaces.addMember","tags":["Workspaces"],"summary":"Add workspace member","description":"Adds a user to a workspace with the requested role.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"required":true,"description":"Workspace ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"user_id":{"type":"string","description":"BetterAuth user ID of the workspace member to add","example":"user_abc123"},"role":{"type":"string","enum":["admin","member"]}},"required":["user_id","role"],"additionalProperties":false}}}},"responses":{"201":{"description":"Workspace member added"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/workspaces/{id}/members/{userId}":{"patch":{"x-platform-visibility":"PUBLIC","operationId":"workspaces.updateMember","tags":["Workspaces"],"summary":"Update workspace member role","description":"Updates the role of a workspace member.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"required":true,"description":"Workspace ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Member user ID"},"required":true,"description":"Member user ID","name":"userId","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["admin","member"]}},"required":["role"],"additionalProperties":false}}}},"responses":{"200":{"description":"Workspace member updated"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"x-platform-visibility":"PUBLIC","operationId":"workspaces.removeMember","tags":["Workspaces"],"summary":"Remove workspace member","description":"Removes a user from a workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"required":true,"description":"Workspace ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Member user ID"},"required":true,"description":"Member user ID","name":"userId","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"responses":{"204":{"description":"Workspace member removed"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/workspaces/{id}/subscription":{"get":{"x-platform-visibility":"PUBLIC","operationId":"workspaces.getSubscription","tags":["Workspaces"],"x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"workspace.ui.getSubscriptionForApi"},"summary":"Get workspace subscription","description":"Returns billing subscription information for a workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"required":true,"description":"Workspace ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Workspace subscription","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceSubscription"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/workspaces/{id}/access_state":{"get":{"x-platform-visibility":"PUBLIC","operationId":"workspaces.getAccessState","tags":["Workspaces"],"x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"workspace.ui.getAccessStateForApi"},"summary":"Get workspace access state","description":"Returns whether the workspace is currently accessible and why.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"required":true,"description":"Workspace ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Workspace access state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceAccessState"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/workspaces/{id}/subscription:cancel":{"post":{"x-platform-visibility":"PUBLIC","operationId":"workspaces.cancelSubscription","tags":["Workspaces"],"summary":"Cancel workspace subscription","description":"Cancels or schedules cancellation for a workspace subscription.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"required":true,"description":"Workspace ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"effective":{"type":"string","enum":["period_end"]}},"required":["effective"],"additionalProperties":false}}}},"responses":{"202":{"description":"Subscription cancellation accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/workspaces/{id}/subscription:reactivate":{"post":{"x-platform-visibility":"PUBLIC","operationId":"workspaces.reactivateSubscription","tags":["Workspaces"],"summary":"Reactivate workspace subscription","description":"Reactivates a workspace subscription and clears cancellation schedule.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"required":true,"description":"Workspace ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"202":{"description":"Workspace subscription reactivation accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationEnvelope"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/workspaces/{id}/subscription:changeTier":{"post":{"x-platform-visibility":"PUBLIC","operationId":"workspaces.changeSubscriptionTier","tags":["Workspaces"],"summary":"Change workspace subscription tier","description":"Schedules a subscription tier change for the workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"required":true,"description":"Workspace ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"tier":{"type":"string"}},"required":["tier"],"additionalProperties":false}}}},"responses":{"202":{"description":"Tier change accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationEnvelope"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/workspaces/{id}/subscription/change_requests":{"get":{"x-platform-visibility":"PUBLIC","operationId":"workspaces.listSubscriptionChangeRequests","tags":["Workspaces"],"summary":"List subscription change requests","description":"Returns subscription tier change requests for workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"required":true,"description":"Workspace ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Subscription change requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionChangeRequestList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/workspaces/{id}/subscription/change_requests/{req_id}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"workspaces.getSubscriptionChangeRequest","tags":["Workspaces"],"summary":"Get subscription change request","description":"Returns one subscription change request record.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"required":true,"description":"Workspace ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Subscription change request ID"},"required":true,"description":"Subscription change request ID","name":"req_id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Subscription change request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionChangeRequest"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/api_tokens":{"post":{"x-platform-visibility":"PUBLIC","operationId":"apiTokens.create","tags":["API Tokens"],"summary":"Create an API token","description":"Creates a workspace API token. The full plaintext token is returned in the response and never shown again - store it securely.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiTokenRequest"}}}},"responses":{"201":{"description":"Token created. The `token` field is shown only once.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatedApiToken"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"PUBLIC","transport":"convex","convexQuery":"apiToken.ui.listForApi"},"operationId":"apiTokens.list","tags":["API Tokens"],"summary":"List API tokens","description":"Returns metadata for the workspace's API tokens. Full token values are never shown after creation.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"List of tokens","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiTokenList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/api_tokens/{id}":{"delete":{"x-platform-visibility":"PUBLIC","operationId":"apiTokens.revoke","tags":["API Tokens"],"summary":"Revoke an API token","description":"Revokes a workspace API token. The token immediately stops authenticating requests.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Token ID. Prefixed form `tok_<id>` is canonical.","example":"tok_j572abc123def456"},"required":true,"description":"Token ID. Prefixed form `tok_<id>` is canonical.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"204":{"description":"Token revoked"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/repositories":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"PUBLIC","transport":"convex","convexQuery":"repository.ui.listRepositoriesForApi"},"operationId":"repositories.list","tags":["Repositories"],"summary":"List repositories in workspace","description":"Lists repositories visible in the workspace. Filterable by `purpose` (deploy / package / repository_change_request). Wire IDs prefixed `repo_...`. Cursor-paginated.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","enum":["deploy","package","repository_change_request"],"description":"Filter by repository purpose (deploy / package / repository_change_request)"},"required":false,"description":"Filter by repository purpose (deploy / package / repository_change_request)","name":"purpose","in":"query"},{"schema":{"type":"string","enum":["basic","full"],"default":"basic","description":"Controls inclusion of implementation detail fields."},"required":false,"description":"Controls inclusion of implementation detail fields.","name":"view","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"List of repositories","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepositoryList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/repositories/{id}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"repositories.get","tags":["Repositories"],"summary":"Get repository details","description":"Returns a single repository as a discriminated union per `purpose`; the shape varies by lifecycle.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Repository ID"},"required":true,"description":"Repository ID","name":"id","in":"path"},{"schema":{"type":"string","enum":["basic","full"],"default":"basic","description":"Basic view is the default; full includes implementation details like render hashes and implementation refs."},"required":false,"description":"Basic view is the default; full includes implementation details like render hashes and implementation refs.","name":"view","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Repository details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Repository"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/github/installation_url":{"post":{"x-platform-visibility":"INTERNAL","operationId":"github.createInstallationUrl","tags":["Github"],"summary":"Create a GitHub App installation URL","description":"Generates a GitHub App installation URL with a one-time state for the workspace. Dashboard-only.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubCreateInstallationUrlBody"}}}},"responses":{"200":{"description":"Installation URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubInstallationUrl"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/github/installations/{installation_id}/repositories":{"get":{"x-platform-visibility":"INTERNAL","operationId":"github.listInstallationRepositories","tags":["Github"],"summary":"List repositories for a GitHub App installation","description":"Lists repositories accessible to the installation. Dashboard-only.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"GitHub App installation ID","example":12345678},"required":true,"description":"GitHub App installation ID","name":"installation_id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Repositories","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubRepoList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/github/installations":{"get":{"x-platform-visibility":"INTERNAL","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"gitapp.ui.listAppInstallationsForWorkspaceForApi"},"operationId":"github.listInstallations","tags":["Github"],"summary":"List GitHub App installations for a workspace","description":"Returns GitHub App installations available to the current workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"GitHub App installations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubAppInstallationList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/github/workflow_prs/{repository_id}":{"get":{"x-platform-visibility":"INTERNAL","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"gitapp.ui.getWorkflowPullRequestForApi"},"operationId":"github.getWorkflowPullRequest","tags":["Github"],"summary":"Get workflow setup pull request for a repository","description":"Returns the workflow setup pull request for a repository, if one exists.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true},"required":true,"name":"repository_id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Workflow setup pull request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubWorkflowPrGet"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/github/installations/{installation_id}/repositories/{repository_id}/workflow_runs":{"get":{"x-platform-visibility":"INTERNAL","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"gitapp.ui.listImageBuildsForRepositoryForApi"},"operationId":"github.listWorkflowRuns","tags":["Github"],"summary":"List GitHub workflow runs for a repository","description":"Lists GitHub workflow runs captured for a repository.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true},"required":true,"name":"installation_id","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true},"required":true,"name":"repository_id","in":"path"},{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"GitHub workflow runs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubWorkflowRunList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/github/package_permissions:check":{"post":{"x-platform-visibility":"INTERNAL","operationId":"github.checkPackagePermissions","tags":["Github"],"summary":"Check GHCR package write-permission warnings for a repository","description":"Returns a warning + fix URL if the repository may lack GHCR package write access. Dashboard-only.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubCheckPackagePermissionsBody"}}}},"responses":{"200":{"description":"Permission check result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubPackagePermissions"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/github/workflow_prs":{"post":{"x-platform-visibility":"INTERNAL","operationId":"github.createWorkflowPr","tags":["Github"],"summary":"Open a PR adding the build workflow to a repository","description":"Creates a branch and pull request adding the Akua build workflow file. Dashboard-only.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubCreateWorkflowPrBody"}}}},"responses":{"200":{"description":"Created PR","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubWorkflowPrCreated"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/github/installations:verify":{"post":{"x-platform-visibility":"INTERNAL","operationId":"github.verifyInstallation","tags":["Github"],"summary":"Verify a GitHub App installation","description":"Completes the GitHub App installation OAuth callback: exchanges the code, verifies the installation belongs to the user, persists it against the one-time state, and returns the post-install redirect URL. Dashboard-only.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubVerifyInstallationBody"}}}},"responses":{"200":{"description":"Installation verified","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubVerifyInstallationResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/secrets":{"post":{"x-platform-visibility":"PUBLIC","operationId":"secrets.create","tags":["Secrets"],"summary":"Create secret","description":"Creates a workspace-scoped Secret with metadata and the first version. The plaintext value is consumed and never echoed.","security":[{"BearerAuth":["secrets:write"]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSecretBody"}}}},"responses":{"201":{"description":"Secret created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Secret"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"secrets.ui.listSecretsForApi"},"operationId":"secrets.list","tags":["Secrets"],"summary":"List secrets","description":"Lists workspace secrets. Metadata only; plaintext values are never returned.","security":[{"BearerAuth":["secrets:read"]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","description":"Filter by secret kind.","example":"generic"},"required":false,"description":"Filter by secret kind.","name":"kind","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Secret list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecretList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/secrets/{id}":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"secrets.ui.getSecretForApi"},"operationId":"secrets.get","tags":["Secrets"],"summary":"Get secret","description":"Returns secret metadata. Plaintext values are never returned.","security":[{"BearerAuth":["secrets:read"]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","example":"sec_j572abc123def456"},"required":true,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Secret metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Secret"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"patch":{"x-platform-visibility":"PUBLIC","operationId":"secrets.update","tags":["Secrets"],"summary":"Update secret","description":"Updates secret metadata only. Rotate values with POST /secrets/{id}/versions.","security":[{"BearerAuth":["secrets:write"]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","example":"sec_j572abc123def456"},"required":true,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSecretBody"}}}},"responses":{"200":{"description":"Secret updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Secret"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"x-platform-visibility":"PUBLIC","operationId":"secrets.delete","tags":["Secrets"],"summary":"Delete secret","description":"Soft-deletes a secret and keeps version payloads recoverable until purge_at. Use force=true to immediately destroy version payloads.","security":[{"BearerAuth":["secrets:write"]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","example":"sec_j572abc123def456"},"required":true,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","name":"id","in":"path"},{"schema":{"type":"boolean","nullable":true,"default":false},"required":false,"name":"force","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"204":{"description":"Secret deleted"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/secrets/{id}:undelete":{"post":{"x-platform-visibility":"PUBLIC","tags":["Secrets"],"operationId":"secrets.undelete","summary":"Restore a soft-deleted secret","description":"Restores a Secret that was soft-deleted via DELETE /v1/secrets/{id}, provided the call happens before its purge_at deadline. The Secret returns to state=active and its retained version payloads become accessible again. Returns 409 ABORTED on stale If-Match. Returns 404 if the secret was hard-deleted (force=true on DELETE) or has been purged.","security":[{"BearerAuth":["secrets:write"]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","example":"sec_j572abc123def456"},"required":true,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"200":{"description":"Secret restored","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Secret"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/secrets/validate_token":{"post":{"x-platform-visibility":"PUBLIC","operationId":"secrets.validateToken","tags":["Secrets"],"summary":"Validate a provider token","description":"Probes a customer-supplied cloud-provider API token with a cheap read-only call to confirm it authenticates, without storing it. Use before creating a `cloud_provider/*` secret.","security":[{"BearerAuth":["secrets:write"]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateProviderTokenBody"}}}},"responses":{"200":{"description":"Validation result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateProviderTokenResult"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/secrets/{id}/versions":{"post":{"x-platform-visibility":"PUBLIC","operationId":"secrets.createVersion","tags":["Secrets"],"summary":"Create secret version","description":"Appends a new immutable SecretVersion. Plaintext is never echoed.","security":[{"BearerAuth":["secrets:write"]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","example":"sec_j572abc123def456"},"required":true,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSecretVersionBody"}}}},"responses":{"201":{"description":"Secret version created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecretVersion"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"secrets.ui.listSecretVersionsForApi"},"operationId":"secrets.listVersions","tags":["Secrets"],"summary":"List secret versions","description":"Lists secret versions. Metadata only; plaintext values are never returned.","security":[{"BearerAuth":["secrets:read"]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","example":"sec_j572abc123def456"},"required":true,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","name":"id","in":"path"},{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","enum":["enabled","disabled","destroyed"],"description":"Filter by secret version state."},"required":false,"description":"Filter by secret version state.","name":"state","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Secret version list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecretVersionList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/secrets/{id}/versions/{vid}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"secrets.getVersion","tags":["Secrets"],"summary":"Get secret version","description":"Returns metadata for one secret version. Plaintext is never returned.","security":[{"BearerAuth":["secrets:read"]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","example":"sec_j572abc123def456"},"required":true,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"SecretVersion ID. Prefixed form `secv_<id>` is canonical.","example":"secv_j572abc123def456"},"required":true,"description":"SecretVersion ID. Prefixed form `secv_<id>` is canonical.","name":"vid","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Secret version metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecretVersion"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/secrets/{id}/versions/{vid}:enable":{"post":{"x-platform-visibility":"PUBLIC","tags":["Secrets"],"operationId":"secrets.enableVersion","summary":"Enable a disabled secret version","description":"Re-enables a disabled SecretVersion. The newly-enabled version becomes eligible for `:access` calls again. Idempotent: enabling an already-enabled version returns 200 with no state change. Returns 409 ABORTED with a stale-revision hint if If-Match mismatches. Returns 409 if the version has been destroyed (irreversible).","security":[{"BearerAuth":["secrets:write"]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","example":"sec_j572abc123def456"},"required":true,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"SecretVersion ID. Prefixed form `secv_<id>` is canonical.","example":"secv_j572abc123def456"},"required":true,"description":"SecretVersion ID. Prefixed form `secv_<id>` is canonical.","name":"vid","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"200":{"description":"Version enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecretVersion"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/secrets/{id}/versions/{vid}:disable":{"post":{"x-platform-visibility":"PUBLIC","operationId":"secrets.disableVersion","tags":["Secrets"],"summary":"Disable secret version","description":"Marks a secret version as disabled.","security":[{"BearerAuth":["secrets:write"]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","example":"sec_j572abc123def456"},"required":true,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"SecretVersion ID. Prefixed form `secv_<id>` is canonical.","example":"secv_j572abc123def456"},"required":true,"description":"SecretVersion ID. Prefixed form `secv_<id>` is canonical.","name":"vid","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"200":{"description":"Secret version disabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecretVersion"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/secrets/{id}/versions/{vid}:destroy":{"post":{"x-platform-visibility":"PUBLIC","operationId":"secrets.destroyVersion","tags":["Secrets"],"summary":"Destroy secret version","description":"Irreversibly destroys a secret version payload and keeps metadata for audit.","security":[{"BearerAuth":["secrets:write"]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","example":"sec_j572abc123def456"},"required":true,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"SecretVersion ID. Prefixed form `secv_<id>` is canonical.","example":"secv_j572abc123def456"},"required":true,"description":"SecretVersion ID. Prefixed form `secv_<id>` is canonical.","name":"vid","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"200":{"description":"Secret version destroyed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecretVersion"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/secrets/{id}/versions/{vid}:access":{"post":{"x-platform-visibility":"PUBLIC","operationId":"secrets.accessVersion","tags":["Secrets"],"summary":"Access secret version plaintext","description":"Returns the plaintext value for an active secret version and writes an audit-log entry. Soft-deleted secrets return 404 until restored with :undelete.","security":[{"BearerAuth":["secrets:access"]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","example":"sec_j572abc123def456"},"required":true,"description":"Secret ID. Prefixed form `sec_<id>` is canonical.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":128,"description":"SecretVersion ID (`secv_<id>`), `latest`, or a version alias such as `current`.","example":"latest"},"required":true,"description":"SecretVersion ID (`secv_<id>`), `latest`, or a version alias such as `current`.","name":"vid","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Secret plaintext","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecretPlaintext"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"410":{"description":"Gone","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/stripe_account":{"post":{"x-platform-visibility":"INTERNAL","operationId":"workspaces.createStripeAccount","tags":["Stripe"],"summary":"Create connected Stripe account","description":"Creates a connected payment-provider account for the workspace, or returns the existing one. Dashboard-only.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateStripeAccountBody"}}}},"responses":{"201":{"description":"Connected Stripe account created or resolved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StripeAccountCreated"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"get":{"x-platform-visibility":"INTERNAL","operationId":"workspaces.getStripeAccountStatus","tags":["Stripe"],"summary":"Get connected Stripe account status","description":"Returns the live charges and payouts status of the workspace connected payment-provider account. Dashboard-only.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Connected Stripe account status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StripeAccountStatus"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"x-platform-visibility":"INTERNAL","operationId":"workspaces.cancelStripeOnboarding","tags":["Stripe"],"summary":"Cancel connected Stripe account onboarding","description":"Cancels onboarding and removes the workspace connected payment-provider account. Dashboard-only.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"204":{"description":"Onboarding cancelled"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/stripe_account:createLink":{"post":{"x-platform-visibility":"INTERNAL","operationId":"workspaces.createStripeAccountLink","tags":["Stripe"],"summary":"Create connected Stripe account link","description":"Creates an onboarding link the seller follows to onboard or update their connected payment-provider account. Dashboard-only.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","format":"uri","description":"Request origin used to derive default connected-account return and refresh URLs when the body omits them.","example":"https://akua.dev"},"required":true,"description":"Request origin used to derive default connected-account return and refresh URLs when the body omits them.","name":"origin","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateStripeAccountLinkBody"}}}},"responses":{"201":{"description":"Connected Stripe account link created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StripeAccountLinkCreated"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/stripe_account:createSession":{"post":{"x-platform-visibility":"INTERNAL","operationId":"workspaces.createStripeAccountSession","tags":["Stripe"],"summary":"Create connected Stripe account session","description":"Creates an embedded-UI session for the workspace connected payment-provider account, returning the client secret used to mount embedded components. Dashboard-only.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateStripeAccountSessionBody"}}}},"responses":{"201":{"description":"Connected Stripe account session created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StripeAccountSessionCreated"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/stripe_products":{"get":{"x-platform-visibility":"INTERNAL","operationId":"workspaces.getStripeProducts","tags":["Stripe"],"summary":"List connected Stripe account products","description":"Returns the catalog of the workspace connected payment-provider account, grouped by product, for the dashboard pricing picker. Returns an empty catalog when no account is connected. Dashboard-only.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Connected Stripe account catalog grouped by product","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceStripeProducts"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/workspace_subscription:createUpgradeCheckout":{"post":{"x-platform-visibility":"INTERNAL","operationId":"workspaces.createUpgradeCheckout","tags":["Stripe"],"summary":"Create Pro upgrade checkout session","description":"Creates a payment-provider Checkout session for upgrading the workspace to the Pro plan. Dashboard-only.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUpgradeCheckoutBody"}}}},"responses":{"201":{"description":"Pro upgrade checkout session created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpgradeCheckoutCreated"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/billing_portal_session":{"post":{"x-platform-visibility":"INTERNAL","operationId":"workspaces.createBillingPortalSession","tags":["Stripe"],"summary":"Create billing portal session","description":"Creates a payment-provider Customer Portal session for managing the workspace Pro subscription. Dashboard-only.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBillingPortalSessionBody"}}}},"responses":{"201":{"description":"Billing portal session created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingPortalSessionCreated"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/clusters":{"get":{"x-platform-visibility":"PUBLIC","tags":["Clusters"],"operationId":"clusters.list","summary":"List clusters","description":"Lists clusters visible to the authenticated workspace owner.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Cluster list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"x-platform-visibility":"PUBLIC","tags":["Clusters"],"operationId":"clusters.create","summary":"Create cluster","description":"Creates a managed cluster and returns an async Operation envelope. State for in-flight operations is eventually consistent and may lag actual execution by a few seconds. State for completed operations (`done: true`) is immutable.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Display name for the cluster."},"region_id":{"type":"string","minLength":1,"maxLength":54},"network_profile":{"type":"string","enum":["linux_cilium","mixed_os_calico"],"default":"linux_cilium","description":"Immutable networking profile for managed KaaS clusters. Defaults to `linux_cilium`; Windows workers require `mixed_os_calico`."}},"required":["name","region_id"],"additionalProperties":false}}}},"responses":{"202":{"description":"Cluster create operation accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/clusters:dashboardList":{"get":{"x-platform-visibility":"INTERNAL","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"cluster.ui.listDashboardClustersForApi"},"tags":["Clusters"],"operationId":"clusters.listDashboard","summary":"List dashboard clusters","description":"Returns clusters shaped for the dashboard clusters page.","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"Dashboard cluster list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardClusterList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/clusters/{id}":{"get":{"x-platform-visibility":"PUBLIC","tags":["Clusters"],"operationId":"clusters.get","summary":"Get cluster","description":"Gets a cluster by id.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Cluster ID."},"required":true,"description":"Cluster ID.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Cluster details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cluster"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"patch":{"x-platform-visibility":"PUBLIC","tags":["Clusters"],"operationId":"clusters.update","summary":"Update cluster","description":"Updates editable cluster fields.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"region_id":{"type":"string","minLength":1,"maxLength":54},"provider":{"type":"string","enum":["managed_kaas","imported_byoc"],"description":"Cluster control-plane family: managed (`managed_kaas`) vs imported self-managed (`imported_byoc`)."},"kubeconfig":{"type":"string","minLength":1}},"additionalProperties":false}}}},"responses":{"200":{"description":"Cluster updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cluster"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"x-platform-visibility":"PUBLIC","tags":["Clusters"],"operationId":"clusters.delete","summary":"Delete cluster","description":"Tears down the cluster and all of its owned resources. Returns an Operation envelope; the actual teardown happens asynchronously. Caller must be a workspace owner.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"202":{"description":"Delete initiated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/clusters:import":{"post":{"x-platform-visibility":"PUBLIC","tags":["Clusters"],"operationId":"clusters.import","summary":"Import cluster","description":"Imports an existing cluster from kubeconfig.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"region_id":{"type":"string","minLength":1,"maxLength":54},"kubeconfig":{"type":"string","minLength":1}},"required":["name","region_id","kubeconfig"],"additionalProperties":false}}}},"responses":{"200":{"description":"Cluster imported","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cluster"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/clusters/{id}/capabilities":{"get":{"x-platform-visibility":"PUBLIC","tags":["Clusters"],"operationId":"clusters.getCapabilities","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"cluster.ui.getClusterCapabilitiesForApi"},"summary":"Get cluster capabilities","description":"Gets the last observed Kubernetes capability snapshot for a cluster.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Cluster ID."},"required":true,"description":"Cluster ID.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Cluster capabilities","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterCapabilities"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/clusters/{id}/capabilities:refresh":{"post":{"x-platform-visibility":"PUBLIC","tags":["Clusters"],"operationId":"clusters.refreshCapabilities","summary":"Refresh cluster capabilities","description":"Refreshes observed cluster capability facts. The API returns an Operation envelope because cluster inspection runs asynchronously.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"responses":{"202":{"description":"Refresh initiated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/clusters/{id}:suspend":{"post":{"x-platform-visibility":"PUBLIC","tags":["Clusters"],"operationId":"clusters.suspend","summary":"Suspend cluster","description":"Suspends a running cluster. The API returns an Operation envelope because teardown and drain are asynchronous.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"202":{"description":"Suspend initiated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/clusters/{id}:resume":{"post":{"x-platform-visibility":"PUBLIC","tags":["Clusters"],"operationId":"clusters.resume","summary":"Resume cluster","description":"Resumes a suspended cluster and returns an async Operation envelope.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"202":{"description":"Resume initiated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/clusters/{id}/kubeconfig":{"get":{"x-platform-visibility":"PUBLIC","tags":["Clusters"],"operationId":"clusters.getKubeconfig","summary":"Get cluster kubeconfig","description":"Returns cluster admin kubeconfig for workspace owners. R6 deliberate divergence retained with an audit-log requirement.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Cluster kubeconfig","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kubeconfig"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/clusters/{id}/kube_proxy/{path:*}":{"get":{"x-platform-visibility":"PUBLIC","tags":["Clusters"],"operationId":"clusters.proxyKube","summary":"Proxy cluster API","description":"Proxy kube-apiserver traffic through the public API. `path:*` is forwarded verbatim to upstream.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","description":"Kube API path forwarded verbatim"},"required":true,"description":"Kube API path forwarded verbatim","name":"path","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Kube API response passthrough"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/clusters/{id}:exec":{"post":{"x-platform-visibility":"PUBLIC","tags":["Clusters"],"operationId":"clusters.exec","summary":"Execute command in cluster","description":"Runs a structured command in a pod and returns the result inline. No LRO wrapper by design.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecBody"}}}},"responses":{"200":{"description":"Command output","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecResult"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/clusters/{id}/worker_bootstraps":{"post":{"x-platform-visibility":"PUBLIC","tags":["Clusters"],"operationId":"clusters.createWorkerBootstrap","summary":"Create worker bootstrap","description":"Issues a new worker-bootstrap row and returns its metadata.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ttl_seconds":{"type":"integer","minimum":60,"maximum":86400,"description":"Token TTL in seconds (optional)."}},"additionalProperties":false}}}},"responses":{"201":{"description":"Worker bootstrap created","headers":{"Location":{"description":"Location of the created worker bootstrap.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkerBootstrap"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"cluster.ui.listWorkerBootstrapsByClusterForApi"},"tags":["Clusters"],"operationId":"clusters.listWorkerBootstraps","summary":"List cluster worker bootstraps","description":"Lists worker-bootstrap tokens for the cluster. Cursor-paginated. Includes revoked / expired tokens by default — filter via the `status` query when implemented.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Worker bootstraps page","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkerBootstrapList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/clusters/{id}/worker_bootstraps/{wbs_id}":{"get":{"x-platform-visibility":"PUBLIC","tags":["Clusters"],"operationId":"clusters.getWorkerBootstrap","summary":"Get cluster worker bootstrap","description":"Returns a single worker-bootstrap token by ID, including its current status and expiry timestamp.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"wbs_id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Worker bootstrap","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkerBootstrap"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/clusters/{id}/worker_bootstraps/{wbs_id}:revoke":{"post":{"x-platform-visibility":"PUBLIC","tags":["Clusters"],"operationId":"clusters.revokeWorkerBootstrap","summary":"Revoke worker bootstrap","description":"Starts an asynchronous revoke of a worker bootstrap token. The bootstrap is soft-revoked immediately; k0s token invalidation completes when the managed control plane is reachable.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"wbs_id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"202":{"description":"Revoke initiated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/user/admin_status":{"get":{"x-platform-visibility":"ADMIN","operationId":"auth.getAdminStatus","tags":["Auth"],"summary":"Get current admin status","description":"Returns whether the authenticated user has platform administrator access in the dashboard.","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"Current admin status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminStatus"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/dashboard/counts":{"get":{"x-platform-visibility":"INTERNAL","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"ui.getDashboardCountsForApi"},"operationId":"dashboard.getCounts","tags":["Dashboard Overview"],"summary":"Get dashboard counts","description":"Returns aggregate dashboard counts for the selected workspace scope.","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"Dashboard counts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardCounts"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/organizations":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"organization.ui.listMyOrganizationsForApi"},"operationId":"organizations.list","tags":["Organizations"],"summary":"List organizations","description":"Lists all organizations the authenticated user belongs to.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"}],"responses":{"200":{"description":"List of organizations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"x-platform-visibility":"PUBLIC","operationId":"organizations.create","tags":["Organizations"],"summary":"Create organization","description":"Creates a new organization. The authenticated user becomes the initial owner.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationCreateRequest"}}}},"responses":{"201":{"description":"Organization created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/organizations/{id}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"organizations.get","tags":["Organizations"],"summary":"Get organization details","description":"Returns details for an organization the authenticated user belongs to.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Organization ID. Prefixed form `org_<id>` is canonical.","example":"org_j572abc123def456"},"required":true,"description":"Organization ID. Prefixed form `org_<id>` is canonical.","name":"id","in":"path"}],"responses":{"200":{"description":"Organization details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"patch":{"x-platform-visibility":"PUBLIC","operationId":"organizations.update","tags":["Organizations"],"summary":"Update organization","description":"Updates profile fields on an organization. Requires owner or admin role in the organization.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Organization ID. Prefixed form `org_<id>` is canonical.","example":"org_j572abc123def456"},"required":true,"description":"Organization ID. Prefixed form `org_<id>` is canonical.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationUpdateRequest"}}}},"responses":{"200":{"description":"Organization updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationOk"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"x-platform-visibility":"PUBLIC","operationId":"organizations.delete","tags":["Organizations"],"summary":"Delete organization","description":"Deletes an organization after validating membership, workspace ownership, and owner protection.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Organization ID. Prefixed form `org_<id>` is canonical.","example":"org_j572abc123def456"},"required":true,"description":"Organization ID. Prefixed form `org_<id>` is canonical.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"204":{"description":"Organization deleted"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/organizations/{id}/members":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"organization.ui.listMembersForApi"},"operationId":"organizations.listMembers","tags":["Organizations"],"summary":"List organization members","description":"Lists every member of the organization. Requires membership in the organization.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Organization ID. Prefixed form `org_<id>` is canonical.","example":"org_j572abc123def456"},"required":true,"description":"Organization ID. Prefixed form `org_<id>` is canonical.","name":"id","in":"path"}],"responses":{"200":{"description":"List of members","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationMemberList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"x-platform-visibility":"PUBLIC","operationId":"organizations.addMember","tags":["Organizations"],"summary":"Add organization member","description":"Adds a user to the organization with the supplied role (defaults to `member`). Requires owner or admin role.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Organization ID. Prefixed form `org_<id>` is canonical.","example":"org_j572abc123def456"},"required":true,"description":"Organization ID. Prefixed form `org_<id>` is canonical.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationAddMemberRequest"}}}},"responses":{"201":{"description":"Member added","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationOk"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/organizations/{id}/members/{userId}":{"patch":{"x-platform-visibility":"PUBLIC","operationId":"organizations.updateMemberRole","tags":["Organizations"],"summary":"Update member role","description":"Updates the role of an existing member. Only the organization's owner may change roles.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Organization ID. Prefixed form `org_<id>` is canonical.","example":"org_j572abc123def456"},"required":true,"description":"Organization ID. Prefixed form `org_<id>` is canonical.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"description":"User ID of the member whose role is being updated","example":"user_abc123"},"required":true,"description":"User ID of the member whose role is being updated","name":"userId","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationUpdateMemberRoleRequest"}}}},"responses":{"200":{"description":"Role updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationOk"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"x-platform-visibility":"PUBLIC","operationId":"organizations.removeMember","tags":["Organizations"],"summary":"Remove organization member","description":"Removes a member from the organization. Self-removal is always allowed; removing other users requires owner or admin role. The last owner cannot be removed.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Organization ID. Prefixed form `org_<id>` is canonical.","example":"org_j572abc123def456"},"required":true,"description":"Organization ID. Prefixed form `org_<id>` is canonical.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"description":"User ID of the member being removed","example":"user_abc123"},"required":true,"description":"User ID of the member being removed","name":"userId","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"responses":{"204":{"description":"Member removed"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/organizations/{id}/workspaces":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"organization.ui.listManagedWorkspacesForApi"},"operationId":"organizations.listManagedWorkspaces","tags":["Organizations"],"summary":"List managed workspaces","description":"Lists workspaces managed by this organization. Requires membership in the organization.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Organization ID. Prefixed form `org_<id>` is canonical.","example":"org_j572abc123def456"},"required":true,"description":"Organization ID. Prefixed form `org_<id>` is canonical.","name":"id","in":"path"}],"responses":{"200":{"description":"List of managed workspaces","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagedWorkspaceList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/notifications":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"notifications.ui.listNotificationsForApi"},"operationId":"notifications.list","tags":["Notifications"],"summary":"List recent notifications","description":"Returns the authenticated user's most recent in-app notifications (max 50, newest first). Pass `unread=true` to filter to unread notifications only.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","enum":["true","false"],"description":"When set to `true`, only unread notifications are returned."},"required":false,"description":"When set to `true`, only unread notifications are returned.","name":"unread","in":"query"}],"responses":{"200":{"description":"Recent notifications (max 50)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/notifications/unread_count":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"notifications.ui.getUnreadCountForApi"},"operationId":"notifications.getUnreadCount","tags":["Notifications"],"summary":"Count unread notifications","description":"Returns the number of unread in-app notifications for the authenticated user.","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"Unread count","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnreadCount"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/notifications/{id}/read":{"patch":{"x-platform-visibility":"PUBLIC","operationId":"notifications.markRead","tags":["Notifications"],"summary":"Mark a notification as read","description":"Marks a single notification as read. Idempotent: calls for already-read or unowned notifications succeed without effect.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Notification ID. Prefixed form `ntf_<id>` is canonical.","example":"ntf_j572abc123def456"},"required":true,"description":"Notification ID. Prefixed form `ntf_<id>` is canonical.","name":"id","in":"path"}],"responses":{"204":{"description":"Marked as read"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/notifications/mark_all_read":{"post":{"x-platform-visibility":"PUBLIC","operationId":"notifications.markAllRead","tags":["Notifications"],"summary":"Mark all notifications as read","description":"Marks every unread in-app notification for the authenticated user as read. Idempotent.","security":[{"BearerAuth":[]}],"responses":{"204":{"description":"All marked as read"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/quotas":{"get":{"x-platform-visibility":"PUBLIC","operationId":"quotas.list","tags":["Quotas"],"x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"quota.ui.listQuotaUsageForApi"},"summary":"List quota usage for the authenticated user","description":"Returns current usage and limits for all quota metrics. Allocation and rate quotas are per-user across all workspaces. Concurrency quotas are per-cluster — pass `cluster_id` to include them.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Cluster ID to include concurrency quotas"},"required":false,"description":"Cluster ID to include concurrency quotas","name":"cluster_id","in":"query"}],"responses":{"200":{"description":"Quota info for all metrics","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotaInfoList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/quotas/{metric}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"quotas.get","tags":["Quotas"],"summary":"Get quota usage for a specific metric","description":"Returns current usage and limit for a single quota metric. The metric must be URL-encoded (e.g. `compute%2Fmachines`).","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","example":"compute/machines","description":"Quota metric (URL-encoded service/resource)."},"required":true,"description":"Quota metric (URL-encoded service/resource).","name":"metric","in":"path"}],"responses":{"200":{"description":"Quota info","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotaInfo"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/regions":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"cluster.ui.listRegionsForApi"},"operationId":"regions.list","tags":["Regions"],"summary":"List regions in workspace","description":"Returns all regions belonging to the workspace specified in the workspace context.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"List of regions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegionList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"x-platform-visibility":"PUBLIC","operationId":"regions.create","tags":["Regions"],"summary":"Create region","description":"Creates a named region in the workspace. Regions group clusters geographically for marketplace display.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"example":"us-east-1"},"icon":{"type":"string","maxLength":256,"format":"uri","description":"Icon URL"}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Region created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Region"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/regions:dashboardList":{"get":{"x-platform-visibility":"INTERNAL","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"cluster.ui.listDashboardRegionsForApi"},"operationId":"regions.listDashboard","tags":["Regions"],"summary":"List dashboard regions","description":"Returns workspace regions with dashboard-only cluster pool health.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Dashboard region list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardRegionList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/registry_connections":{"get":{"x-platform-visibility":"PUBLIC","operationId":"registry.listCredentials","tags":["Registry"],"summary":"List registry credentials","description":"Returns credentials for the workspace. Credential secrets are never exposed.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"List of credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryCredentialList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"x-platform-visibility":"PUBLIC","operationId":"registry.createCredential","tags":["Registry"],"summary":"Create registry credential","description":"Adds a registry credential to the workspace for OCI proxy authentication.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"example":"GitHub Container Registry"},"registry_url":{"type":"string","minLength":1,"maxLength":2048,"example":"ghcr.io"},"type":{"type":"string","enum":["basic","token","oauth"],"description":"Authentication scheme used to talk to the upstream registry."},"credentials":{"type":"object","properties":{"username":{"type":"string","minLength":1,"maxLength":200,"description":"Username for basic auth"},"password":{"type":"string","minLength":1,"maxLength":500,"description":"Password for basic auth"},"token":{"type":"string","minLength":1,"maxLength":2000,"description":"Bearer token for token auth"},"client_id":{"type":"string","minLength":1,"maxLength":200,"description":"Client ID for OAuth"},"client_secret":{"type":"string","minLength":1,"maxLength":500,"description":"Client secret for OAuth"},"token_url":{"type":"string","minLength":1,"maxLength":2048,"description":"Token endpoint URL for OAuth"}},"description":"Auth credentials (type-dependent)"}},"required":["name","registry_url","type","credentials"],"additionalProperties":false}}}},"responses":{"201":{"description":"Credential created"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/registry_connections/{id}":{"delete":{"x-platform-visibility":"PUBLIC","operationId":"registry.deleteCredential","tags":["Registry"],"summary":"Delete registry credential","description":"Permanently removes a registry credential. Active installs using this credential may lose pull access.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Registry connection ID. Prefixed form `rcon_<id>` is canonical.","example":"rcon_j572abc123def456"},"required":true,"description":"Registry connection ID. Prefixed form `rcon_<id>` is canonical.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"204":{"description":"Credential deleted"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/registry/insights/stats":{"get":{"x-platform-visibility":"INTERNAL","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"registry.ui.getRegistryStatsForApi"},"operationId":"registry.getStats","tags":["Registry"],"summary":"Get registry stats","description":"Returns aggregate pull, auth, registry, and latency stats for a workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","enum":["24h","7d","30d"],"description":"Time window used to aggregate registry audit events."},"required":true,"description":"Time window used to aggregate registry audit events.","name":"period","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Registry stats","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryStats"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/registry/insights/activity":{"get":{"x-platform-visibility":"INTERNAL","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"registry.ui.getRegistryActivityForApi"},"operationId":"registry.getActivity","tags":["Registry"],"summary":"Get registry pull activity","description":"Returns pull activity buckets for charting registry proxy usage.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","enum":["24h","7d","30d"],"description":"Time window used to aggregate registry audit events."},"required":true,"description":"Time window used to aggregate registry audit events.","name":"period","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Registry activity buckets","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryActivityResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/registry/insights/audit_logs":{"get":{"x-platform-visibility":"INTERNAL","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"registry.ui.listRegistryAuditLogsForApi"},"operationId":"registry.listAuditLogs","tags":["Registry"],"summary":"List registry audit logs","description":"Returns recent registry proxy audit log entries for a workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"number","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Recent registry audit logs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryAuditLogList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/registry/insights/errors":{"get":{"x-platform-visibility":"INTERNAL","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"registry.ui.getRegistryErrorsForApi"},"operationId":"registry.getErrors","tags":["Registry"],"summary":"Get registry errors","description":"Returns the top registry proxy error messages for a workspace and period.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","enum":["24h","7d","30d"],"description":"Time window used to aggregate registry audit events."},"required":true,"description":"Time window used to aggregate registry audit events.","name":"period","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Top registry errors","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryErrorList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/repository_change_requests":{"post":{"x-platform-visibility":"PUBLIC","operationId":"repositoryChangeRequests.create","tags":["Repository change requests"],"summary":"Create repository change request","description":"Creates a fork-backed repository change request. Fork write credentials are minted separately.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRepositoryChangeRequestBody"}}}},"responses":{"201":{"description":"Repository change request created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRepositoryChangeRequestResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"repositoryChangeRequests.ui.listMyWorkspaceRepositoryChangeRequests"},"operationId":"repositoryChangeRequests.list","tags":["Repository change requests"],"summary":"List repository change requests","description":"Lists fork-backed repository change requests in the active workspace.","security":[{"BearerAuth":[]}],"x-platform-query-contracts":[{"kind":"at-most-one","fields":["parent_repository","fork_repository"]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","enum":["AWAITING_CHANGES","VALIDATING","READY","ACCEPTING","ACCEPTED","REJECTED","WITHDRAWN","EXPIRED","FAILED"],"description":"Filter by lifecycle state"},"required":false,"description":"Filter by lifecycle state","name":"state","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Filter to change requests targeting this parent repository","example":"repo_j572parentrepo001"},"required":false,"description":"Filter to change requests targeting this parent repository","name":"parent_repository","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Filter to the change request backed by this fork repository","example":"repo_j572forkrepo001"},"required":false,"description":"Filter to the change request backed by this fork repository","name":"fork_repository","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Filter to change requests created by this agent","example":"agt_j572agent001"},"required":false,"description":"Filter to change requests created by this agent","name":"agent","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Repository change request list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepositoryChangeRequestList"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/repository_change_requests/{id}:createToken":{"post":{"x-platform-visibility":"PUBLIC","operationId":"repositoryChangeRequests.createToken","tags":["Repository change requests"],"summary":"Create repository change request token","description":"Mints short-lived credentials for pushing changes to the fork repository.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRepositoryChangeRequestTokenBody"}}}},"responses":{"201":{"description":"Repository change request token created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRepositoryChangeRequestTokenResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/repository_change_requests/{id}":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"repositoryChangeRequests.ui.getMyRepositoryChangeRequestForApi"},"operationId":"repositoryChangeRequests.get","tags":["Repository change requests"],"summary":"Get repository change request","description":"Returns one fork-backed repository change request.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Repository change request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepositoryChangeRequest"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/repository_change_requests/{id}:accept":{"post":{"x-platform-visibility":"PUBLIC","operationId":"repositoryChangeRequests.accept","tags":["Repository change requests"],"summary":"Accept repository change request","description":"Validates and merges a repository change request into its parent repository.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Repository change request accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptRepositoryChangeRequestResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/repository_change_requests/{id}:reject":{"post":{"x-platform-visibility":"PUBLIC","operationId":"repositoryChangeRequests.reject","tags":["Repository change requests"],"summary":"Reject repository change request","description":"Rejects a repository change request and records the reason.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectRepositoryChangeRequestBody"}}}},"responses":{"200":{"description":"Repository change request rejected","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectRepositoryChangeRequestResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/repository_change_requests/{id}:withdraw":{"post":{"x-platform-visibility":"PUBLIC","operationId":"repositoryChangeRequests.withdraw","tags":["Repository change requests"],"summary":"Withdraw repository change request","description":"Withdraws an editable repository change request and purges its fork.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Repository change request withdrawn","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WithdrawRepositoryChangeRequestResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/agents":{"post":{"x-platform-visibility":"PUBLIC","operationId":"agents.create","tags":["Agents"],"summary":"Create agent","description":"Creates a durable workspace-scoped agent identity.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":500},"instructions":{"type":"string","minLength":1,"maxLength":20000},"capabilities":{"type":"array","items":{"type":"string","enum":["CHAT","CODING","AMBIENT"]},"minItems":1,"maxItems":10},"ambient":{"$ref":"#/components/schemas/AgentAmbientConfig"},"model_policy":{"$ref":"#/components/schemas/AgentModelPolicy"}},"required":["name","instructions","capabilities"],"additionalProperties":false}}}},"responses":{"201":{"description":"Agent created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Agent"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"agent.ui.listAgents"},"operationId":"agents.list","tags":["Agents"],"summary":"List agents","description":"Lists agents in the workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Agent list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/agents/{id}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"agents.get","tags":["Agents"],"summary":"Get agent","description":"Gets one agent.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Agent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Agent"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"patch":{"x-platform-visibility":"PUBLIC","operationId":"agents.update","tags":["Agents"],"summary":"Update agent","description":"Updates mutable agent configuration. Lifecycle state changes use archive.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":500},"instructions":{"type":"string","minLength":1,"maxLength":20000},"capabilities":{"type":"array","items":{"type":"string","enum":["CHAT","CODING","AMBIENT"]},"minItems":1,"maxItems":10},"ambient":{"$ref":"#/components/schemas/AgentAmbientConfig"},"model_policy":{"$ref":"#/components/schemas/AgentModelPolicy"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Agent updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Agent"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"x-platform-visibility":"PUBLIC","operationId":"agents.archive","tags":["Agents"],"summary":"Archive agent","description":"Archives an agent and stops future ambient triggers.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Agent archived","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Agent"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/agents/{id}:enable":{"post":{"x-platform-visibility":"PUBLIC","operationId":"agents.enable","tags":["Agents"],"summary":"Enable agent","description":"Re-enables an archived agent so it can receive sessions and ambient triggers.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Agent enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Agent"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/agent_skills":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"agent.ui.listAgentSkills"},"operationId":"agentSkills.list","tags":["Agent skills"],"summary":"List agent skills","description":"Lists published agent skills visible to the workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Agent skill list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSkillList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/agent_skills/{id}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"agentSkills.get","tags":["Agent skills"],"summary":"Get agent skill","description":"Gets one agent skill.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Agent skill","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSkill"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/agent_templates":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"PUBLIC","transport":"convex","convexQuery":"agent.ui.listAgentTemplatesForApi"},"operationId":"agentTemplates.list","tags":["Agent templates"],"summary":"List agent templates","description":"Lists platform-curated agent templates visible to the workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Agent template list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentTemplateList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/agent_templates/{id}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"agentTemplates.get","tags":["Agent templates"],"summary":"Get agent template","description":"Gets one platform-curated agent template.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":56},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Agent template","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentTemplate"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/agent_preferences":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"PUBLIC","transport":"convex","convexQuery":"agent.ui.getAgentPreferencesForApi"},"operationId":"agentPreferences.get","tags":["Agent preferences"],"summary":"Get agent preferences","description":"Gets the current user's workspace-scoped agent preferences.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Agent preferences","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentPreference"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"patch":{"x-platform-visibility":"PUBLIC","operationId":"agentPreferences.update","tags":["Agent preferences"],"summary":"Update agent preferences","description":"Updates the current user's workspace-scoped agent preferences.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"communication_profile":{"type":"string","enum":["BEGINNER","INTERMEDIATE","ADVANCED","EXPERT","ADAPTIVE"]},"learning_mode_enabled":{"type":"boolean"},"seen_concepts":{"type":"array","items":{"type":"string","minLength":1,"maxLength":120},"maxItems":200}},"required":["communication_profile","learning_mode_enabled","seen_concepts"],"additionalProperties":false}}}},"responses":{"200":{"description":"Agent preferences updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentPreference"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/agents/sandbox_operations_summary":{"get":{"x-platform-visibility":"INTERNAL","operationId":"agents.getSandboxOperationsSummary","tags":["Agents"],"x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"agent.ui.getSandboxOperationsSummaryForApi"},"summary":"Get sandbox operations summary","description":"Returns workspace-scoped sandbox operational metrics for the dashboard.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Sandbox operations summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SandboxOperationsSummary"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/agent_sessions":{"post":{"x-platform-visibility":"PUBLIC","operationId":"agentSessions.create","tags":["Agent sessions"],"summary":"Create agent session","description":"Creates a durable workspace-scoped session for an agent.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"agent_id":{"type":"string","minLength":1,"maxLength":54},"title":{"type":"string","minLength":1,"maxLength":200},"communication_profile":{"type":"string","enum":["BEGINNER","INTERMEDIATE","ADVANCED","EXPERT","ADAPTIVE"],"default":"ADAPTIVE"},"parent_session_id":{"type":"string","minLength":1,"maxLength":54},"forked_from_session_id":{"type":"string","minLength":1,"maxLength":54},"spawned_by_turn_id":{"type":"string","minLength":1,"maxLength":54},"agent_role":{"type":"string","minLength":1,"maxLength":80}},"required":["agent_id"],"additionalProperties":false}}}},"responses":{"201":{"description":"Agent session created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSession"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"agent.ui.listAgentSessions"},"operationId":"agentSessions.list","tags":["Agent sessions"],"summary":"List agent sessions","description":"Lists agent sessions in the workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":54},"required":false,"name":"parent_session","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":54},"required":false,"name":"forked_from_session","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":54},"required":false,"name":"spawned_by_turn","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":80},"required":false,"name":"agent_role","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Agent session list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/agent_sessions:detectConflicts":{"get":{"x-platform-visibility":"PUBLIC","operationId":"agentSessions.detectConflicts","tags":["Agent sessions"],"summary":"Detect agent work conflicts","description":"Finds active agent sessions that have already referenced the same repository, install, cluster, or repository change request.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","enum":["repository","install","cluster","repository_change_request"]},"required":true,"name":"resource","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":120},"required":true,"name":"id","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":54},"required":false,"name":"exclude_session","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Agent work conflicts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentWorkConflictList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/agent_sessions/{id}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"agentSessions.get","tags":["Agent sessions"],"summary":"Get agent session","description":"Gets one agent session.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Agent session","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSession"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"x-platform-visibility":"PUBLIC","operationId":"agentSessions.archive","tags":["Agent sessions"],"summary":"Archive agent session","description":"Archives an agent session and requests runtime cleanup.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Agent session archived","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSession"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/agent_sessions/{id}:setRetention":{"post":{"x-platform-visibility":"PUBLIC","operationId":"agentSessions.setRetention","tags":["Agent sessions"],"summary":"Set agent session retention","description":"Updates retained filesystem policy for an agent session.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetAgentSessionRetentionBody"}}}},"responses":{"200":{"description":"Agent session retention updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSession"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/agent_turns":{"post":{"x-platform-visibility":"PUBLIC","operationId":"agentTurns.create","tags":["Agent turns"],"summary":"Submit agent turn","description":"Submits one instruction to an agent session.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"session_id":{"type":"string","minLength":1,"maxLength":54},"message":{"type":"string","minLength":1,"maxLength":50000},"runtime_hint":{"type":"string","enum":["AUTO","CODE_MODE","RETAINED_RUNTIME"],"default":"AUTO"}},"required":["session_id","message"],"additionalProperties":false}}}},"responses":{"201":{"description":"Agent turn submitted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentTurn"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"agent.ui.listAgentTurns"},"operationId":"agentTurns.list","tags":["Agent turns"],"summary":"List agent turns","description":"Lists agent turns in the workspace or one session.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":false,"name":"session","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Agent turn list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentTurnList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/agent_turns/{id}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"agentTurns.get","tags":["Agent turns"],"summary":"Get agent turn","description":"Gets one agent turn.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Agent turn","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentTurn"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/agent_turns/{id}:cancel":{"post":{"x-platform-visibility":"PUBLIC","operationId":"agentTurns.cancel","tags":["Agent turns"],"summary":"Cancel agent turn","description":"Cancels a running or queued agent turn.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","example":"create-prod-2026-05-07"},"required":false,"description":"Caller-supplied idempotency key. Repeated requests with the same key return the existing resource instead of creating a duplicate. Safe to retry after a timed-out or interrupted request.","name":"idempotency-key","in":"header"}],"responses":{"200":{"description":"Agent turn cancelled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentTurn"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/agent_turns/{id}:emit":{"post":{"x-platform-visibility":"PUBLIC","operationId":"agentTurns.emit","tags":["Agent turns"],"summary":"Emit agent turn event","description":"Emits a constrained event intent for a running agent turn.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["message"]},"data":{"type":"object","properties":{"role":{"type":"string","enum":["assistant","system"]},"content":{"type":"string","minLength":1,"maxLength":50000}},"required":["role","content"],"additionalProperties":false}},"required":["type","data"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["widget"]},"data":{"type":"object","properties":{"widget_type":{"type":"string","enum":["approval_card","choice_card","form","secret_input","status_card","docs_card","diagram","navigation_hint","repository_change_request_review"]},"schema_version":{"type":"integer","minimum":1},"title":{"type":"string","maxLength":200},"summary":{"type":"string","maxLength":5000},"resource_refs":{"type":"array","items":{"type":"object","properties":{"resource":{"type":"string","minLength":1,"maxLength":80},"id":{"type":"string","minLength":1,"maxLength":80}},"required":["resource","id"],"additionalProperties":false},"maxItems":20,"default":[]},"reactive_bindings":{"type":"array","items":{"nullable":true},"maxItems":20,"default":[]},"actions":{"type":"array","items":{"nullable":true},"maxItems":20,"default":[]}},"required":["widget_type","schema_version"],"additionalProperties":false}},"required":["type","data"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["artifact"]},"data":{"type":"object","properties":{"artifact_type":{"type":"string","enum":["diff","patch","log_bundle","summary","file","resource_ref"]},"title":{"type":"string","minLength":1,"maxLength":200},"resource_refs":{"type":"array","items":{"type":"object","properties":{"resource":{"type":"string","minLength":1,"maxLength":80},"id":{"type":"string","minLength":1,"maxLength":80}},"required":["resource","id"],"additionalProperties":false},"maxItems":20,"default":[]}},"required":["artifact_type","title"],"additionalProperties":false}},"required":["type","data"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["progress"]},"data":{"type":"object","properties":{"state":{"type":"string","enum":["QUEUED","RUNNING","WAITING","COMPLETED","FAILED"]},"message":{"type":"string","minLength":1,"maxLength":2000}},"required":["state","message"],"additionalProperties":false}},"required":["type","data"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["execution_environment"]},"data":{"type":"object","properties":{"state":{"type":"string","enum":["STARTED","STOPPED","RESUMED","DELETED","FAILED"]},"message":{"type":"string","minLength":1,"maxLength":2000},"sandbox_id":{"type":"string","minLength":1,"maxLength":54}},"required":["state","message"],"additionalProperties":false}},"required":["type","data"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["approval_request"]},"data":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"summary":{"type":"string","minLength":1,"maxLength":5000},"actions":{"type":"array","items":{"nullable":true},"maxItems":20,"default":[]}},"required":["title","summary"],"additionalProperties":false}},"required":["type","data"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["handoff_summary"]},"data":{"type":"object","properties":{"child_session_id":{"type":"string","minLength":1,"maxLength":54},"summary":{"type":"string","minLength":1,"maxLength":5000},"touched_resource_refs":{"type":"array","items":{"type":"object","properties":{"resource":{"type":"string","minLength":1,"maxLength":80},"id":{"type":"string","minLength":1,"maxLength":80}},"required":["resource","id"],"additionalProperties":false},"maxItems":50,"default":[]},"decision_points":{"type":"array","items":{"type":"string","minLength":1,"maxLength":1000},"maxItems":20,"default":[]},"recommended_next_step":{"type":"string","minLength":1,"maxLength":1000}},"required":["child_session_id","summary"],"additionalProperties":false}},"required":["type","data"],"additionalProperties":false}]}}}},"responses":{"201":{"description":"Agent event authored","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEvent"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/agent_provider_exchanges":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"agent.ui.listAgentProviderExchanges"},"operationId":"agentProviderExchanges.list","tags":["Agent provider exchanges"],"summary":"List agent provider exchanges","description":"Lists redacted provider proxy request and response metadata for one agent turn.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"turn","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Agent provider exchange list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentProviderExchangeList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/agent_events:stream":{"get":{"x-platform-visibility":"PUBLIC","operationId":"agentEvents.stream","tags":["Agent events"],"summary":"Stream agent events","description":"Streams normalized agent events as Server-Sent Events.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":false,"name":"session","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":54},"required":false,"name":"turn","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":54},"required":false,"name":"parent_session","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":54},"required":false,"name":"forked_from_session","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":54},"required":false,"name":"spawned_by_turn","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":80},"required":false,"name":"agent_role","in":"query"},{"schema":{"type":"boolean","nullable":true,"default":false},"required":false,"name":"follow","in":"query"},{"schema":{"type":"string"},"required":false,"name":"after","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Agent event stream (text/event-stream)"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/agent_events":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"agent.ui.listLiveEvents"},"operationId":"agentEvents.list","tags":["Agent events"],"summary":"List agent events","description":"Lists normalized events for a workspace, session, or turn.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":false,"name":"session","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":54},"required":false,"name":"turn","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":54},"required":false,"name":"parent_session","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":54},"required":false,"name":"forked_from_session","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":54},"required":false,"name":"spawned_by_turn","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":80},"required":false,"name":"agent_role","in":"query"},{"schema":{"type":"boolean","nullable":true,"default":false},"required":false,"name":"follow","in":"query"},{"schema":{"type":"string"},"required":false,"name":"after","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Agent event list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEventList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/approval_requests":{"get":{"x-platform-visibility":"PUBLIC","x-platform-live":{"visibility":"INTERNAL","transport":"convex","convexQuery":"agent.ui.listApprovalRequests"},"operationId":"approvalRequests.list","tags":["Approval requests"],"summary":"List approval requests","description":"Lists pending and resolved approval requests in the workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","enum":["PENDING","APPROVED","REJECTED"],"description":"Filter approval requests by lifecycle state.","example":"PENDING"},"required":false,"description":"Filter approval requests by lifecycle state.","name":"state","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Filter approval requests for one agent.","example":"agt_j572abc123def456"},"required":false,"description":"Filter approval requests for one agent.","name":"agent","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Filter approval requests for one agent session.","example":"ags_j572abc123def456"},"required":false,"description":"Filter approval requests for one agent session.","name":"session","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Approval request list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalRequestList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/approval_requests/{id}:resolve":{"post":{"x-platform-visibility":"PUBLIC","operationId":"approvalRequests.resolve","tags":["Approval requests"],"summary":"Resolve approval request","description":"Approves or rejects an approval request.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"decision":{"type":"string","enum":["APPROVE","REJECT"]},"reason":{"type":"string","minLength":1,"maxLength":2000}},"required":["decision"],"additionalProperties":false}}}},"responses":{"200":{"description":"Approval request resolved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalRequest"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/workspaces/{id}/subdomain":{"get":{"x-platform-visibility":"PUBLIC","operationId":"workspaceSubdomains.get","tags":["Workspace subdomains"],"summary":"Get workspace subdomain","description":"Returns the singleton workspace subdomain resource.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"required":true,"description":"Workspace ID","name":"id","in":"path"}],"responses":{"200":{"description":"Workspace subdomain","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceSubdomain"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/workspaces/{id}/subdomain:setName":{"post":{"x-platform-visibility":"PUBLIC","operationId":"workspaceSubdomains.setName","tags":["Workspace subdomains"],"summary":"Set workspace subdomain name","description":"Starts the workspace subdomain rename workflow.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"required":true,"description":"Workspace ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetWorkspaceSubdomainNameBody"}}}},"responses":{"202":{"description":"Rename accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/installs/{id}/preview_hostnames":{"get":{"x-platform-visibility":"PUBLIC","operationId":"previewHostnames.list","tags":["Preview hostnames"],"summary":"List preview hostnames","description":"Lists preview hostnames belonging to an install.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Install ID"},"required":true,"description":"Install ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","enum":["pinned","floating"]},"required":false,"name":"binding_kind","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":100},"required":false,"name":"track","in":"query"},{"schema":{"type":"string","enum":["provisioning","active","evicted","releasing"],"description":"Current preview hostname lifecycle state."},"required":false,"description":"Current preview hostname lifecycle state.","name":"state","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Preview hostname list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewHostnameList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/installs/{id}/preview_hostnames/{preview_hostname_id}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"previewHostnames.get","tags":["Preview hostnames"],"summary":"Get preview hostname","description":"Returns one preview hostname belonging to an install.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Install ID"},"required":true,"description":"Install ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Preview hostname ID"},"required":true,"description":"Preview hostname ID","name":"preview_hostname_id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"Preview hostname","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewHostname"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"x-platform-visibility":"PUBLIC","operationId":"previewHostnames.delete","tags":["Preview hostnames"],"summary":"Delete preview hostname","description":"Starts a workflow that releases a preview hostname.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Install ID"},"required":true,"description":"Install ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Preview hostname ID"},"required":true,"description":"Preview hostname ID","name":"preview_hostname_id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"idempotency-key","in":"header"}],"responses":{"202":{"description":"Delete accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/installs/{id}/preview_hostnames:bindPinned":{"post":{"x-platform-visibility":"PUBLIC","operationId":"previewHostnames.bindPinned","tags":["Preview hostnames"],"summary":"Bind pinned preview hostname","description":"Starts a workflow that binds an immutable preview hostname to one render.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Install ID"},"required":true,"description":"Install ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BindPinnedPreviewHostnameBody"}}}},"responses":{"202":{"description":"Bind accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/installs/{id}/preview_hostnames:bindFloating":{"post":{"x-platform-visibility":"PUBLIC","operationId":"previewHostnames.bindFloating","tags":["Preview hostnames"],"summary":"Bind floating preview hostname","description":"Starts a workflow that binds or rebinds a stable preview hostname track.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":55,"description":"Install ID"},"required":true,"description":"Install ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BindFloatingPreviewHostnameBody"}}}},"responses":{"202":{"description":"Bind accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/workspaces/{id}/custom_domains":{"get":{"x-platform-visibility":"PUBLIC","operationId":"customDomains.list","tags":["Custom domains"],"summary":"List custom domains","description":"Lists custom domains belonging to a workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"required":true,"description":"Workspace ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","enum":["install","cluster","external"]},"required":false,"name":"target_kind","in":"query"},{"schema":{"type":"string","enum":["provisioning","active","failed","releasing"]},"required":false,"name":"state","in":"query"}],"responses":{"200":{"description":"Custom domain list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDomainList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"x-platform-visibility":"PUBLIC","operationId":"customDomains.create","tags":["Custom domains"],"summary":"Create custom domain","description":"Creates a custom domain and starts routing reconciliation.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"required":true,"description":"Workspace ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCustomDomainBody"}}}},"responses":{"202":{"description":"Create accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/workspaces/{id}/custom_domains/{custom_domain_id}":{"get":{"x-platform-visibility":"PUBLIC","operationId":"customDomains.get","tags":["Custom domains"],"summary":"Get custom domain","description":"Returns one custom domain belonging to a workspace.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"required":true,"description":"Workspace ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Custom domain ID"},"required":true,"description":"Custom domain ID","name":"custom_domain_id","in":"path"}],"responses":{"200":{"description":"Custom domain","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDomain"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"patch":{"x-platform-visibility":"PUBLIC","operationId":"customDomains.update","tags":["Custom domains"],"summary":"Update custom domain","description":"Updates mutable custom domain routing settings.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"required":true,"description":"Workspace ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Custom domain ID"},"required":true,"description":"Custom domain ID","name":"custom_domain_id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"idempotency-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomDomainBody"}}}},"responses":{"202":{"description":"Update accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"delete":{"x-platform-visibility":"PUBLIC","operationId":"customDomains.delete","tags":["Custom domains"],"summary":"Delete custom domain","description":"Starts a workflow that releases a custom domain.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Workspace ID"},"required":true,"description":"Workspace ID","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":54,"description":"Custom domain ID"},"required":true,"description":"Custom domain ID","name":"custom_domain_id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":256,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","example":"42"},"required":true,"description":"The `etag` of the resource version the client last read. Required on writes when the resource exposes an `etag` field. Mismatch returns 409 `ABORTED` with the current etag in the error metadata.","name":"if-match","in":"header"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"idempotency-key","in":"header"}],"responses":{"202":{"description":"Delete accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/cloudflare_connections":{"get":{"x-platform-visibility":"PUBLIC","operationId":"cloudflare.listCredentials","tags":["Cloudflare"],"summary":"List Cloudflare credentials","description":"Returns Cloudflare credentials for the workspace. API tokens are never exposed.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Pagination cursor from a previous response's `next_cursor`."},"required":false,"description":"Pagination cursor from a previous response's `next_cursor`.","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Items per page (1-100, default 50)","example":50},"required":false,"description":"Items per page (1-100, default 50)","name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"200":{"description":"List of Cloudflare credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudflareCredentialList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"x-platform-visibility":"PUBLIC","operationId":"cloudflare.createCredential","tags":["Cloudflare"],"summary":"Create Cloudflare credential","description":"Adds a Cloudflare API credential to the workspace. The API token is stored as a platform Secret and is never returned.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCloudflareCredentialBody"}}}},"responses":{"201":{"description":"Cloudflare credential created"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/cloudflare_connections/{id}":{"delete":{"x-platform-visibility":"PUBLIC","operationId":"cloudflare.deleteCredential","tags":["Cloudflare"],"summary":"Delete Cloudflare credential","description":"Permanently removes a Cloudflare credential. Active gateways using it must be deleted first.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":56,"description":"Cloudflare connection ID. Prefixed form `cfcon_<id>` is canonical.","example":"cfcon_j572abc123def456"},"required":true,"description":"Cloudflare connection ID. Prefixed form `cfcon_<id>` is canonical.","name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":53,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","example":"ws_j572abc123def456"},"required":false,"description":"Optional workspace/scope context for the request. Carries a single workspace wire id (`ws_…`) today. Only needed for broad tokens — a workspace-owned token implies its workspace.","name":"akua-context","in":"header"}],"responses":{"204":{"description":"Credential deleted"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/access_decisions":{"post":{"x-platform-visibility":"PUBLIC","operationId":"accessDecisions.explain","tags":["Access Decisions"],"summary":"Explain an access decision","description":"Explains whether the authenticated requester can perform an access action and why.","security":[{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplainAccessDecisionBody"}}}},"responses":{"200":{"description":"Access decision explanation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDecision"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/admin/capabilities":{"get":{"x-platform-visibility":"ADMIN","operationId":"adminAccess.listCapabilities","tags":["Admin Access"],"summary":"List admin capability projections","description":"Returns the platform capability catalog projection visible to admins.","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"Admin capability list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminCapabilityList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/admin/organizations":{"get":{"x-platform-visibility":"ADMIN","operationId":"adminAccess.listOrganizations","tags":["Admin Access"],"summary":"List admin organizations","description":"Returns organization directory projections visible to platform administrators.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":256},"required":false,"name":"q","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","nullable":true},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"Admin organization directory list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminDirectoryOrganizationList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/admin/users":{"get":{"x-platform-visibility":"ADMIN","operationId":"adminAccess.listUsers","tags":["Admin Access"],"summary":"List admin users","description":"Returns user directory projections visible to platform administrators, searchable by email, name, or ID.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":256},"required":false,"name":"q","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","nullable":true},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"Admin user directory list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminDirectoryUserList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/admin/workspaces":{"get":{"x-platform-visibility":"ADMIN","operationId":"adminAccess.listWorkspaces","tags":["Admin Access"],"summary":"List admin workspaces","description":"Returns workspace directory projections visible to platform administrators.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":256},"required":false,"name":"q","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":54},"required":false,"name":"organization_id","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","nullable":true},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"Admin workspace directory list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminDirectoryWorkspaceList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/admin/access_overrides":{"get":{"x-platform-visibility":"ADMIN","operationId":"adminAccess.listOverrides","tags":["Admin Access"],"summary":"List admin access overrides","description":"Returns feature and entitlement overrides created by platform admins.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","enum":["feature_flag","entitlement"]},"required":false,"name":"target_type","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":256},"required":false,"name":"key","in":"query"},{"schema":{"type":"string","enum":["global","organization","workspace"]},"required":false,"name":"scope","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","nullable":true},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"Admin access override list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminAccessOverrideList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"x-platform-visibility":"ADMIN","operationId":"adminAccess.createOverride","tags":["Admin Access"],"summary":"Create an admin access override","description":"Creates a platform-admin override for a feature flag or entitlement.","security":[{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAdminAccessOverrideBody"}}}},"responses":{"201":{"description":"Admin access override","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminAccessOverride"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/admin/access_overrides/{id}:revoke":{"post":{"x-platform-visibility":"ADMIN","operationId":"adminAccess.revokeOverride","tags":["Admin Access"],"summary":"Revoke an admin access override","description":"Marks an admin access override as revoked while preserving audit history.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":128},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Revoked admin access override","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminAccessOverride"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/admin/quota_overrides":{"get":{"x-platform-visibility":"ADMIN","operationId":"adminAccess.listQuotaOverrides","tags":["Admin Access"],"summary":"List admin quota overrides","description":"Returns active user and workspace quota overrides visible to platform admins.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":256},"required":false,"name":"metric","in":"query"},{"schema":{"type":"string","enum":["user","workspace"]},"required":false,"name":"scope","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"user_id","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":53},"required":false,"name":"workspace_id","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","nullable":true},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"Admin quota override list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminQuotaOverrideList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}},"post":{"x-platform-visibility":"ADMIN","operationId":"adminAccess.setQuotaOverride","tags":["Admin Access"],"summary":"Set an admin quota override","description":"Creates or updates a user or workspace quota override with an admin reason.","security":[{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetAdminQuotaOverrideBody"}}}},"responses":{"200":{"description":"Admin quota override","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminQuotaOverride"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/v1/admin/quota_overrides/{id}":{"delete":{"x-platform-visibility":"ADMIN","operationId":"adminAccess.removeQuotaOverride","tags":["Admin Access"],"summary":"Remove an admin quota override","description":"Revokes an active user or workspace quota override and keeps its audit history.","security":[{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":54},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Removed admin quota override","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminQuotaOverride"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}}}}