{"openapi":"3.1.0","info":{"title":"Vex API","version":"1.0.0","description":"Generated from Rails routes. Run `bin/rails ts:client:openapi` after route changes."},"paths":{"/api/v1/admin/organizations":{"get":{"operationId":"api_v1_admin_organizations","tags":["admin"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List the 100 most recently created customer organizations (superadmin)"},"post":{"operationId":"post_api_v1_admin_organizations","tags":["admin"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Organization, owner invitation URL, and queued email delivery status","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/AdminInvitationResult"},{"type":"object","required":["organization"],"properties":{"organization":{"$ref":"#/components/schemas/AdminOrganization"}}}]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["name","slug","owner_email"],"properties":{"name":{"type":"string"},"slug":{"type":"string"},"owner_email":{"type":"string","format":"email"},"package_id":{"type":"string","description":"Active customer package public ID. Defaults to prepaid Entry unless an agreed monthly price is supplied."},"customize_onboarding_packages":{"type":"boolean"},"onboarding_package_keys":{"type":"array","items":{"type":"string"},"description":"Package keys offered when customizing onboarding."},"onboarding_custom_pricing":{"type":"boolean"},"skip_payment":{"type":"boolean","default":false,"description":"Grant the selected package as an ongoing complimentary subscription with monthly included usage and package limits. No card or checkout is required. Cannot be combined with an agreed monthly price."},"monthly_price_dollars":{"type":["string","number"],"description":"Ongoing USD workspace price, for example '50.00'"},"billing_reason":{"type":"string","description":"Required when setting an agreed price"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Provision a customer and invite its owner (superadmin)","description":"Does not make the operator a member. Slugs are unique; a retry with the same slug fails validation rather than creating a second account."}},"/api/v1/admin/organizations/{org_slug}":{"get":{"operationId":"api_v1_admin_organization","tags":["admin"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Customer account settings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AdminOrganization"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read a customer by slug or organization public ID (superadmin)"}},"/api/v1/admin/organizations/{org_slug}/billing_agreement":{"put":{"operationId":"billing_agreement_api_v1_admin_organization","tags":["admin"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["monthly_price_dollars","reason"],"properties":{"monthly_price_dollars":{"type":["string","number"]},"reason":{"type":"string","maxLength":500}}}}}},"security":[{"bearerAuth":[]}],"summary":"Set an ongoing monthly USD agreement (superadmin)"}},"/api/v1/admin/organizations/{org_slug}/billing_contact":{"patch":{"operationId":"billing_contact_api_v1_admin_organization","tags":["admin"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["billing_email"],"properties":{"billing_email":{"type":"string","format":"email"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Set a customer invoice recipient (superadmin)"}},"/api/v1/admin/organizations/{org_slug}/checkout_session":{"post":{"operationId":"checkout_session_api_v1_admin_organization","tags":["admin"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Hosted Stripe Checkout URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingHostedSession"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Create a shareable payment setup link (superadmin)","description":"Collects payment details for the customer's saved agreement. No payment is collected by creating a session."}},"/api/v1/admin/organizations/{org_slug}/invitations":{"post":{"operationId":"api_v1_admin","tags":["admin"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Invitation URL and queued email delivery status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminInvitationResult"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["email","role"],"properties":{"email":{"type":"string","format":"email"},"role":{"type":"string","enum":["owner","admin","member"]}}}}}},"security":[{"bearerAuth":[]}],"summary":"Invite a customer member or owner (superadmin)"}},"/api/v1/admin/organizations/{org_slug}/invitations/{id}":{"delete":{"operationId":"delete_api_v1_admin_organizations_org_slug_invitations_id_","tags":["admin"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Revoke a customer invitation by public ID (superadmin)"}},"/api/v1/admin/organizations/{org_slug}/package":{"put":{"operationId":"package_api_v1_admin_organization","tags":["admin"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["package_id"],"properties":{"package_id":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Assign an active customer billing package (superadmin)"}},"/api/v1/admin/organizations/{org_slug}/settings":{"patch":{"operationId":"settings_api_v1_admin_organization","tags":["admin"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"customize_onboarding_packages":{"type":"boolean"},"onboarding_package_keys":{"type":"array","items":{"type":"string"}},"onboarding_custom_pricing":{"type":"boolean"},"deployment_usage_visibility":{"type":"string","enum":["automatic","hidden","shown"]},"name":{"type":"string"},"monthly_budget_dollars":{"type":["string","number","null"]},"monthly_browser_minutes_limit_override":{"type":["integer","null"],"minimum":0},"daily_run_limit_override":{"type":["integer","null"],"minimum":0},"concurrent_run_limit_override":{"type":["integer","null"],"minimum":1}}}}}},"security":[{"bearerAuth":[]}],"summary":"Update customer limits, budget and deployment usage visibility (superadmin)"}},"/api/v1/agent/chat":{"post":{"operationId":"api_v1_chat","tags":["agent"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/project_workflows/coordinate":{"post":{"operationId":"api_v1_project_workflows_coordinate","tags":["agent"],"parameters":[],"responses":{"200":{"description":"No-store coordinator action","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"oneOf":[{"type":"object","additionalProperties":false,"required":["action"],"properties":{"action":{"type":"string","enum":["finish"]}}},{"type":"object","additionalProperties":false,"required":["action","seconds"],"properties":{"action":{"type":"string","enum":["wait"]},"seconds":{"type":"integer","minimum":1,"maximum":60}}}]}}}},"401":{"description":"Invalid scheduler credential"},"403":{"description":"Forbidden"},"404":{"description":"Run or organization unavailable"},"422":{"description":"Invalid request"},"502":{"description":"Bad gateway"},"503":{"description":"Scheduler configuration unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["organization_id","run_id"],"properties":{"organization_id":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,100}$"},"run_id":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,100}$"}}}}}},"security":[{"persistentAgentScheduler":[]}],"summary":"Coordinate a Project workflow","description":"Trusted identifier-only reconciliation. Rails owns dispatch, receipts and transitions. Private content is never returned to Temporal."}},"/api/v1/agent/roder/browser_authorization":{"get":{"operationId":"api_v1_roder_browser_authorization","tags":["agent"],"parameters":[{"in":"query","name":"organization_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Browser collaboration is enabled for the current organization member"},"403":{"description":"Browser collaboration or beta access is disabled"},"404":{"description":"Organization membership is unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Revalidate live browser collaboration authority"}},"/api/v1/agent/roder/browser_executor_authorization":{"post":{"operationId":"api_v1_roder_browser_executor_authorization","tags":["agent"],"parameters":[],"responses":{"204":{"description":"Browser executor authority remains valid"},"403":{"description":"Invalid capability or browser authority is unavailable"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Revalidate a signed browser-setup or onboarding connection","description":"Accepts only the original browser-setup or onboarding capability. Checks live organization membership, beta access and the browser gate. Issues no credential and extends no expiry. Delegated turn capabilities and ordinary user credentials reject.\n"}},"/api/v1/agent/roder/code_repair_settings":{"get":{"operationId":"api_v1_roder_code_repair_settings","tags":["agent"],"parameters":[{"in":"query","name":"organization_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Internal automatic-intake settings","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyCodeRepairSettings"}}}},"403":{"description":"Internal operator access is required"},"404":{"description":"Organization membership is unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Read internal automatic code-repair enrollment"},"post":{"operationId":"post_api_v1_agent_roder_code_repair_settings","tags":["agent"],"parameters":[],"responses":{"200":{"description":"Internal automatic-intake settings","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyCodeRepairSettings"}}}},"400":{"description":"A required field is missing"},"403":{"description":"Internal operator access is required"},"404":{"description":"Organization membership is unavailable"},"422":{"description":"Internal rollout or source access is unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization_id","enabled"],"properties":{"organization_id":{"type":"string"},"enabled":{"type":"boolean"},"repository_slug":{"type":"string","description":"Connected Composal repository required when enabling"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Enable or disable automatic investigation of new blocked internal runs","description":"Requires internal operator membership and the organization rollout flag. Enabling selects the caller as operator and one connected Composal source. The enrollment timestamp excludes earlier blocks. Disabling prevents queued automatic launches; active turns can be cancelled through their repair API. Automatic intake admits at most three investigations per organization per UTC day, using normal Roder limits and tools.\n"}},"/api/v1/agent/roder/code_repairs":{"get":{"operationId":"api_v1_roder_code_repairs","tags":["agent"],"parameters":[{"in":"query","name":"scenario_run_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Investigation launch record","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyCodeRepair"}}}},"400":{"description":"Scenario execution is required"},"403":{"description":"Internal operator access is required"},"404":{"description":"Investigation is unavailable to this operator"},"422":{"description":"Source organization authority is unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Find an operator's investigation by its source scenario execution","description":"Returns the durable link without contacting Roder; use the ID route for native status."},"post":{"operationId":"api_v1_code_repairs","tags":["agent"],"parameters":[],"responses":{"202":{"description":"Investigation launch record","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyCodeRepair"}}}},"403":{"description":"Internal operator access is required"},"404":{"description":"Source organization or scenario is unavailable"},"422":{"description":"Disabled, ineligible, invalid or conflicting request"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization_id","scenario_run_id","repository_slug","base_sha"],"properties":{"organization_id":{"type":"string"},"scenario_run_id":{"type":"string"},"repository_slug":{"type":"string"},"base_sha":{"type":"string","pattern":"^[0-9a-f]{40}$"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Request an internal Composal code investigation of one blocked scenario","description":"Internal operators only. Requires membership in the source organization, the default-off verify_internal_code_repair actor flag, and a connected ComposalAI/vex repository in that organization. One durable investigation per scenario execution; repeated matching requests reuse it. No automatic result regrading, merge or deployment is performed by this request.\n"}},"/api/v1/agent/roder/code_repairs/{id}":{"get":{"operationId":"api_v1_code_repair","tags":["agent"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Investigation launch record","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyCodeRepair"}}}},"403":{"description":"Internal operator access is required"},"404":{"description":"Investigation is unavailable to this operator"},"422":{"description":"Original workspace authority is unavailable"},"503":{"description":"Roder status is temporarily unavailable; no new task was started"}},"security":[{"bearerAuth":[]}],"summary":"Read an internal investigation and its current native Roder status"}},"/api/v1/agent/roder/code_repairs/{id}/cancel":{"post":{"operationId":"cancel_api_v1_code_repair","tags":["agent"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Investigation launch record","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyCodeRepair"}}}},"403":{"description":"Internal operator access is required"},"404":{"description":"Investigation is unavailable to this operator"},"422":{"description":"Original workspace authority is unavailable"},"503":{"description":"Cancellation recorded; interruption could not be confirmed with Roder"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Cancel a queued investigation or interrupt its original Roder turn"}},"/api/v1/agent/roder/machines/{public_id}":{"post":{"operationId":"post_api_v1_agent_roder_machines_public_id_","tags":["agent"],"parameters":[{"name":"public_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/roder/run/swarm_activity":{"post":{"operationId":"api_v1_roder_run_swarm_activity","tags":["agent"],"parameters":[],"responses":{"200":{"description":"Activity batch accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["accepted","last_seq"],"properties":{"accepted":{"type":"integer","minimum":1},"last_seq":{"type":"integer","minimum":1}}}}}},"401":{"description":"Swarm not visible to the current user","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Swarm not visible to the current user","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"502":{"description":"Bad gateway"},"409":{"description":"Swarm not visible to the current user","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"429":{"description":"Swarm not visible to the current user","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["events"],"properties":{"events":{"type":"array","minItems":1,"maxItems":20,"items":{"$ref":"#/components/schemas/AgentSwarmActivityReport"}}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/roder/run/swarm_stack":{"post":{"operationId":"api_v1_roder_run_swarm_stack","tags":["agent"],"parameters":[],"responses":{"201":{"description":"Stack received and composed; the receipt","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"200":{"description":"Replay of an already received stack; the existing receipt","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"The receipt is still composing in another request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"409":{"description":"stack_payload_conflict or attempt_fenced","content":{"application/json":{"schema":{"type":"object","required":["error","refusal"],"properties":{"error":{"type":"string"},"refusal":{"type":"object","required":["code"],"properties":{"code":{"type":"string"},"detail":{"type":"string"}}},"receipt":{"type":"object","additionalProperties":true}}}}}},"413":{"description":"stack_too_large (detail bytes); the body exceeds 25 MiB declared or decoded","content":{"application/json":{"schema":{"type":"object","required":["error","refusal"],"properties":{"error":{"type":"string"},"refusal":{"type":"object","required":["code"],"properties":{"code":{"type":"string"},"detail":{"type":"string"}}},"receipt":{"type":"object","additionalProperties":true}}}}}},"422":{"description":"invalid_payload, an unreadable body, or a refused stack with its receipt","content":{"application/json":{"schema":{"type":"object","required":["error","refusal"],"properties":{"error":{"type":"string"},"refusal":{"type":"object","required":["code"],"properties":{"code":{"type":"string"},"detail":{"type":"string"}}},"receipt":{"type":"object","additionalProperties":true}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Post a swarm worker's stack and receive its receipt","description":"Requires a run capability carrying the swarm.submit_stack operation. One receipt per attempt: an identical replay answers 200 with the existing receipt, a different payload for the same attempt is 409 stack_payload_conflict, and a new payload behind the swarm's generation is 409 attempt_fenced. Bodies over 25 MiB, declared or decoded, are 413 stack_too_large before any receipt exists. input_revision and notice target_tip values are original 40-character Git commit IDs. Change keys retain their stable 32-character hex or reverse-hex spelling; SHA-256 evidence digests remain 64-character hex values.\n"}},"/api/v1/agent/roder/run/swarm_transcript":{"post":{"operationId":"api_v1_roder_run_swarm_transcript","tags":["agent"],"parameters":[],"responses":{"200":{"description":"The transcript is stored and attached","content":{"application/json":{"schema":{"type":"object","required":["session_id","checkpoint_id","attached_commit_ids"],"properties":{"session_id":{"type":"string"},"checkpoint_id":{"type":"string"},"attached_commit_ids":{"type":"array","items":{"type":"string"}}}}}}},"401":{"description":"Unauthorized"},"413":{"description":"The body exceeds the transcript cap"},"422":{"description":"An invalid payload or an archive that failed verification"},"502":{"description":"jj-backend refused or failed the attachment"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Attach a swarm worker's transcript to its stack's Changes","description":"Requires a run capability carrying the swarm.submit_stack operation. The body names the opaque session and checkpoint identities, the archive's declared sizes and SHA-256 digests, and the zlib archive as base64. Idempotent: a replay finds the same session and checkpoint and re-appends the same native attachments.\n"}},"/api/v1/agent/roder/run/workspace_authorization":{"post":{"operationId":"api_v1_roder_run_workspace_authorization","tags":["agent"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/roder/run/workspace_credentials":{"post":{"operationId":"api_v1_roder_run_workspace_credentials","tags":["agent"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/roder/session":{"post":{"operationId":"api_v1_roder_session","tags":["agent"],"parameters":[],"responses":{"200":{"description":"Roder browser session","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentRoderSession"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Organization not found","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Checkpoint handoff context is unavailable","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"502":{"description":"Bad gateway"},"400":{"description":"Organization is required","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentRoderSessionPayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/roder/workspace_authorization":{"post":{"operationId":"api_v1_roder_workspace_authorization","tags":["agent"],"parameters":[],"responses":{"204":{"description":"The capability still authorizes native runner access"},"401":{"description":"Invalid, expired, revoked, or unauthorized agent capability","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Revalidate a hosted runner capability at a native tool boundary","description":"Requires the server-held turn capability delegated by Roder and re-checks current user membership and beta access. Browser session capabilities are not accepted."}},"/api/v1/agent/roder/workspace_credentials":{"post":{"operationId":"api_v1_roder_workspace_credentials","tags":["agent"],"parameters":[],"responses":{"200":{"description":"Short-lived repository clone and user API credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRoderWorkspaceCredentials"}}}},"401":{"description":"Invalid, expired, or unauthorized agent capability","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"400":{"description":"Required credential lifetime is missing or invalid","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"503":{"description":"Agent repository access is not configured","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentRoderWorkspaceCredentialRequest"}}}},"security":[{"bearerAuth":[]}],"summary":"Exchange a delegated runner capability for home-repository and user API credentials","description":"Requires the server-held turn capability delegated by Roder. Browser session capabilities, browser cookies, and personal access tokens are not accepted. Returns a short-lived repository credential for the org Home checkout and a short-lived system personal access token that authenticates API/CLI calls as the spawning user. Both expire together and are reissued on refresh.\n"}},"/api/v1/agent/swarms":{"get":{"operationId":"api_v1_swarms","tags":["agent"],"parameters":[{"name":"org","in":"query","required":true,"description":"Organization slug. Swarms belong to one organization and the list is read under one.","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"1-based page number. The list is paginated because counting tasks for every swarm is not free.","schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"description":"Swarms per page, 1 to 100. Defaults to 25.","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"One page of agent swarms in the organization","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["swarms","page","per_page","total","has_more"],"properties":{"swarms":{"type":"array","items":{"$ref":"#/components/schemas/AgentSwarm"}},"page":{"type":"integer"},"per_page":{"type":"integer"},"total":{"type":"integer"},"has_more":{"type":"boolean"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_agent_swarms","tags":["agent"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"404":{"description":"Not found"},"422":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"},"201":{"description":"Agent swarm created","content":{"application/json":{"schema":{"type":"object","required":["swarm"],"properties":{"swarm":{"$ref":"#/components/schemas/AgentSwarmDetail"}}}}}},"400":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSwarmCreatePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/swarms/{id}":{"get":{"operationId":"api_v1_swarm","tags":["agent"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent swarm with recent tasks","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["swarm"],"properties":{"swarm":{"$ref":"#/components/schemas/AgentSwarmDetail"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/swarms/{id}/cancel":{"post":{"operationId":"cancel_api_v1_swarm","tags":["agent"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent swarm canceled (PRD 146 FR30)","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["swarm"],"properties":{"swarm":{"$ref":"#/components/schemas/AgentSwarmDetail"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"404":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"reason":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/swarms/{id}/live":{"get":{"operationId":"get_api_v1_agent_swarms_id_live","tags":["agent"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"One page response for the swarm live view","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSwarmLivePage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Swarm not visible to the current user","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/swarms/{id}/live/replay":{"get":{"operationId":"get_api_v1_agent_swarms_id_live_replay","tags":["agent"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"The previous page's next_cursor; omit to start from launch.","schema":{"type":"string"}},{"name":"after_seq","in":"query","required":false,"description":"Only activity events with a greater seq.","schema":{"type":"integer","minimum":0}},{"name":"after_event_id","in":"query","required":false,"description":"Only scheduler events with a greater id.","schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":2000}}],"responses":{"200":{"description":"One page of the stored stream, activity and scheduler events interleaved by time","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSwarmLiveReplayPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Swarm not visible to the current user","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Swarm not visible to the current user","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/swarms/{id}/policy":{"get":{"operationId":"policy_api_v1_swarm","tags":["agent"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The swarm's effective policy, budget and pinned environment","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSwarmPolicy"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_agent_swarms_id_policy","tags":["agent"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The swarm's effective policy after the edit","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSwarmPolicy"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"404":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"422":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"},"400":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"409":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["policy"],"properties":{"policy":{"type":"object","additionalProperties":true}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/swarms/{swarm_id}/events":{"get":{"operationId":"api_v1_swarm_events","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"after","in":"query","required":false,"schema":{"type":"integer"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000}}],"responses":{"200":{"description":"The swarm's decision log, oldest first","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["events"],"properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/AgentSwarmEvent"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/swarms/{swarm_id}/notes":{"post":{"operationId":"api_v1_swarm_notes","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"422":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"},"201":{"description":"The note as a live feed event","content":{"application/json":{"schema":{"type":"object","required":["event"],"properties":{"event":{"$ref":"#/components/schemas/AgentSwarmLiveEvent"}}}}}},"409":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["text"],"properties":{"text":{"type":"string","maxLength":2000},"task_id":{"type":"string","nullable":true,"description":"A task public id; omitted","the note is for the whole swarm and its orchestrator.":null}}}}}},"security":[{"bearerAuth":[]}],"summary":"Leave an operator note for the orchestrator or one task","description":"Operator steering. The note is recorded as an `operator_note` swarm event (in the feed and the replay), reaches the planner in its next plan or re-plan input, and reaches a running task on its next heartbeat, which steers the turn with it."}},"/api/v1/agent/swarms/{swarm_id}/tasks":{"get":{"operationId":"api_v1_swarm_tasks","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent swarm tasks","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["tasks"],"properties":{"tasks":{"type":"array","items":{"$ref":"#/components/schemas/AgentSwarmTask"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/activity":{"get":{"operationId":"api_v1_swarm_task_activity_index","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"after_seq","in":"query","required":false,"schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":2000}}],"responses":{"200":{"description":"The task, its activity page and its events","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSwarmTaskConversation"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Swarm not visible to the current user","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"One task's whole conversation, paged by seq","description":"Every activity line the task's runner reported — thoughts, prose, tool calls, harness narration — in stream order from `after_seq`, plus the scheduler events about the task. The live board keeps only a window; this is the page a click into an agent opens."}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases":{"post":{"operationId":"api_v1_swarm_task_leases","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/browser_task_activity":{"post":{"operationId":"browser_task_activity_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/claim":{"post":{"operationId":"claim_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"lease_token":{"type":"string"},"worker_identity":{"type":"object","additionalProperties":false,"required":["protocol","allocation_id","process_id"],"properties":{"protocol":{"type":"string","enum":["roder-worker-v1"]},"allocation_id":{"type":"string","format":"uuid"},"process_id":{"type":"string","format":"uuid"}}}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/evidence":{"post":{"operationId":"evidence_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/heartbeat":{"post":{"operationId":"heartbeat_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/release":{"post":{"operationId":"release_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/result":{"post":{"operationId":"result_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Vex-Lease-Token","in":"header","required":false,"schema":{"type":"string"}},{"name":"validate_only","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"cancelled_recovery","in":"query","required":false,"description":"Retain browser evidence only for an already cancelled ScenarioRun within its recovery window.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Detached Roder result accepted or validated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"oneOf":[{"type":"object","required":["roder_run"],"properties":{"roder_run":{"$ref":"#/components/schemas/RoderRunResultReceipt"}}},{"type":"object","required":["valid"],"properties":{"valid":{"type":"boolean","const":true}}}]}}}},"401":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"403":{"description":"Forbidden"},"404":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"422":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"},"400":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"409":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RoderRunResultPayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/verification_account_session":{"post":{"operationId":"verification_account_session_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Vex-Lease-Token","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Shared sign-in recorded"},"401":{"description":"Invalid executor lease token"},"404":{"description":"Execution unavailable"},"422":{"description":"The report was rejected; the code is also recorded on a sharing run.","content":{"application/json":{"schema":{"type":"object","required":["error","code"],"properties":{"error":{"type":"string"},"code":{"type":"string","description":"invalid_session for a malformed report, otherwise the refusal's Verify error code such as invalid_browser_authentication or credential_unavailable."}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"browser_session":{"type":"string","description":"JSON browser storage state for the shared origin"},"rejected":{"type":"boolean","const":true},"failed":{"type":"object","description":"The sharing run has no copy to publish; the code is recorded with the run.","required":["code"],"properties":{"code":{"type":"string","pattern":"^[a-z_]{1,64}$"}}}}}}}},"security":[{"bearerAuth":[]},{"executorLease":[]}],"summary":"ScenarioRun executor shared sign-in exchange","description":"The run dispatched to share an account's sign-in publishes its app state after signing in. A run started from that copy reports when the copy opened on a sign-in page."}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/verification_cleanup":{"post":{"operationId":"verification_cleanup_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Vex-Lease-Token","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Sandbox deletion confirmed"},"401":{"description":"Invalid executor lease token"},"404":{"description":"Execution unavailable"},"422":{"description":"Rejected execution input"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["sandbox_deleted"],"properties":{"sandbox_deleted":{"type":"boolean","const":true}}}}}},"security":[{"executorLease":[]}],"summary":"ScenarioRun executor cleanup exchange"}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/verification_diagnostics":{"post":{"operationId":"verification_diagnostics_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Vex-Lease-Token","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Executor exchange accepted"},"401":{"description":"Invalid executor lease token"},"404":{"description":"Execution unavailable"},"422":{"description":"Rejected execution input"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["browser_events"],"properties":{"browser_events":{"type":"object","additionalProperties":true},"live_browser":{"type":"object","description":"Latest masked viewport checkpoint while the scenario runs","additionalProperties":true},"live_view":{"type":"object","description":"The supervisor's read-only frame stream for run page viewers","required":["url","token"],"properties":{"url":{"type":"string","format":"uri"},"token":{"type":"string","pattern":"^view_[a-f0-9]{32}$"},"cdp_token":{"type":"string","description":"Opens full Chrome DevTools on the attempt; shown only to people who may run tests.","pattern":"^cdp_[a-f0-9]{32}$"}}}}}}}},"security":[{"executorLease":[]}],"summary":"ScenarioRun executor diagnostics exchange"}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/verification_evidence":{"post":{"operationId":"verification_evidence_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Vex-Lease-Token","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Redacted evidence stored"},"401":{"description":"Invalid executor lease token"},"404":{"description":"Execution unavailable"},"422":{"description":"Rejected execution input"}},"security":[{"executorLease":[]}],"summary":"ScenarioRun executor evidence exchange","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["metadata","file"],"properties":{"metadata":{"type":"string","description":"Serialized owned evidence manifest entry"},"file":{"type":"string","format":"binary"}}}}}}}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/verification_mail":{"post":{"operationId":"verification_mail_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Vex-Lease-Token","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Executor exchange accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Invalid executor lease token"},"403":{"description":"Forbidden"},"404":{"description":"Execution unavailable"},"422":{"description":"Rejected execution input"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"executorLease":[]}],"summary":"ScenarioRun executor mail exchange"}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/verification_messages_session":{"post":{"operationId":"verification_messages_session_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Vex-Lease-Token","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The Messages URL and its host-only session cookie, in Playwright cookie fields","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyMessagingSessionGrant"}}}},"401":{"description":"Invalid executor lease token"},"403":{"description":"Forbidden"},"404":{"description":"Execution unavailable"},"422":{"description":"The run does not hold a messaging conversation"},"502":{"description":"Bad gateway"},"503":{"description":"The Messages origin is not configured"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"executorLease":[]}],"summary":"Issue the run's Messages page session for the runner to install"}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/verification_secrets":{"post":{"operationId":"verification_secrets_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Vex-Lease-Token","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Executor exchange accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Invalid executor lease token"},"403":{"description":"Forbidden"},"404":{"description":"Execution unavailable"},"422":{"description":"Rejected execution input"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"executorLease":[]}],"summary":"ScenarioRun executor secrets exchange"}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/verify_checkpoint":{"post":{"operationId":"verify_checkpoint_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Vex-Lease-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Progress stored durably","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["sequence","digest"],"properties":{"sequence":{"type":"integer","minimum":0},"digest":{"type":"string","pattern":"^[0-9a-f]{64}$"}}}}}},"401":{"description":"Invalid executor token"},"403":{"description":"Forbidden"},"404":{"description":"Execution unavailable or no longer active"},"422":{"description":"Invalid progress or missing evidence. Application actions must remain paused; only invalid_report permits report-only correction without replaying actions.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error","code","invalid_fields","recovery"],"properties":{"error":{"type":"string"},"code":{"type":"string","enum":["invalid_sequence","invalid_document","invalid_result","invalid_report","sequence_reused","actions_rewritten","evidence_discarded","request_too_large","evidence_manifest_duplicate","evidence_missing","evidence_manifest_mismatch","evidence_manifest_invalid","policy_refused","invalid_request","invalid_usage"]},"recovery":{"type":"string","enum":["report_only","stop"]},"invalid_fields":{"type":"array","maxItems":8,"items":{"type":"object","additionalProperties":false,"required":["path","type"],"properties":{"path":{"type":"string"},"type":{"type":"string"},"schema_path":{"type":"string"}}}}}}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["sequence","document"],"properties":{"sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"document":{"type":"object","additionalProperties":true},"usage_snapshot":{"type":"object","additionalProperties":true,"nullable":true}}}}}},"security":[{"bearerAuth":[]},{"executorLease":[]}],"summary":"Acknowledge durable Verify execution progress","description":"Stores cumulative execution progress only while its executor lease remains active. Sequence zero registers allocation intent; higher sequences require a validated partial result and already stored evidence. This exchange never performs application actions or completes the run."}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/verify_diagnostics":{"post":{"operationId":"verify_diagnostics_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Vex-Lease-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"403":{"description":"Forbidden"},"404":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"422":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"},"204":{"description":"Browser diagnostics checkpoint accepted"},"400":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"409":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["browser_events"],"properties":{"browser_events":{"type":"object","additionalProperties":true},"steps":{"type":"array","maxItems":200,"items":{"type":"object","additionalProperties":false,"required":["id","status","start_ms","duration_ms"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{1,127}$"},"status":{"type":"string","enum":["passed","failed","skipped","cancelled"]},"start_ms":{"type":"integer","minimum":0,"maximum":86400000},"duration_ms":{"type":"integer","minimum":0,"maximum":86400000},"safe_error":{"type":"string","maxLength":1000}}}},"live_view":{"type":"object","description":"The tester's read-only live stream for page viewers.","additionalProperties":false,"required":["url","token"],"properties":{"url":{"type":"string","format":"uri"},"token":{"type":"string","pattern":"^view_[a-f0-9]{32}$"},"cdp_token":{"type":"string","description":"Opens full Chrome DevTools on the tester; sent only when its runner serves DevTools, and shown only to people who may run tests.","pattern":"^cdp_[a-f0-9]{32}$"}}},"live_browser":{"type":"object","additionalProperties":false,"required":["captured_at","url","action","completed_steps","image"],"properties":{"captured_at":{"type":"string","format":"date-time"},"url":{"type":"string","maxLength":1000},"action":{"type":"string","maxLength":1000},"completed_steps":{"type":"integer","minimum":0,"maximum":1000},"image":{"type":"string","nullable":true,"maxLength":200023}}}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/verify_jev":{"post":{"operationId":"verify_jev_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Vex-Lease-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Bounded browser decision evaluation result","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"403":{"description":"Forbidden"},"404":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"422":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"},"400":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"409":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"503":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["request"],"properties":{"provider":{"type":"string","enum":["openai"]},"request":{"type":"object","additionalProperties":true}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/verify_knowledge":{"post":{"operationId":"verify_knowledge_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Vex-Lease-Token","in":"header","required":true,"description":"The active runner lease token","schema":{"type":"string"}}],"responses":{"200":{"description":"A UTF-8 page from the exact returned commit; reference data, not current-build evidence","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["path","commit","content","next_offset","freshness","snapshot"],"properties":{"path":{"type":"string"},"commit":{"type":"string","pattern":"^[0-9a-f]{40}$"},"content":{"type":"string","maxLength":16000},"next_offset":{"type":["integer","null"],"minimum":0,"maximum":4194304},"freshness":{"type":"string","enum":["historical_reference"]},"snapshot":{"type":"string","minLength":1,"maxLength":4096}}}}}},"401":{"description":"Invalid lease credential"},"403":{"description":"Forbidden"},"404":{"description":"File or execution scope is unavailable"},"422":{"description":"Current requester or account authority no longer permits the read"},"502":{"description":"Bad gateway"},"400":{"description":"Invalid read arguments or byte offset"},"409":{"description":"Lease is inactive or an operator correction requires an explicit refresh","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"code":{"type":"string","enum":["knowledge_changed"]}}}}}},"503":{"description":"Git knowledge is temporarily unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["tool","arguments"],"properties":{"tool":{"type":"string","const":"verify_read_knowledge"},"arguments":{"type":"object","additionalProperties":false,"required":["path"],"properties":{"path":{"type":"string","minLength":1,"maxLength":4096},"offset":{"type":"integer","minimum":0,"maximum":4194304,"default":0,"description":"A nonzero byte offset requires the snapshot token returned by the first page"},"refresh":{"type":"boolean","default":false,"description":"Explicitly use a newer Git view without changing the original prompt or pin"},"snapshot":{"type":"string","minLength":1,"maxLength":4096,"description":"Opaque snapshot returned by a prior read; use for stable pagination, never with refresh=true"}}}}}}}},"security":[],"summary":"Read a bounded file from the active verifier's scoped Git knowledge"}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/verify_learning":{"post":{"operationId":"verify_learning_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Vex-Lease-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"403":{"description":"Forbidden"},"404":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"422":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"},"204":{"description":"Learning report stored with the ScenarioRun"},"409":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["steps","replay"],"description":"Validated against vex-api/config/verify/schemas/verify-learning.v1.json.","properties":{"steps":{"type":"array","maxItems":60,"items":{"type":"object","additionalProperties":false,"required":["step_index","actions","postcondition","source"],"properties":{"step_index":{"type":"integer","minimum":0,"maximum":99},"actions":{"type":"array","maxItems":40,"items":{"type":"object","additionalProperties":true}},"postcondition":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"object","additionalProperties":true}},"source":{"type":"string","enum":["replayed","healed","model"]}}}},"outcomes":{"type":"array","maxItems":20,"items":{"type":"object","additionalProperties":false,"required":["outcome_index","postcondition","source"],"properties":{"outcome_index":{"type":"integer","minimum":0,"maximum":99},"postcondition":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"object","additionalProperties":true}},"source":{"type":"string","enum":["replayed","model"]}}}},"cleanup":{"type":"object","additionalProperties":false,"required":["actions","postcondition","source"],"properties":{"actions":{"type":"array","maxItems":40,"items":{"type":"object","additionalProperties":true}},"postcondition":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"object","additionalProperties":true}},"source":{"type":"string","enum":["replayed","healed","model"]}}},"replay":{"type":"object","additionalProperties":false,"required":["offered_steps","replayed_steps","healed_actions"],"properties":{"offered_steps":{"type":"integer","minimum":0,"maximum":100},"replayed_steps":{"type":"integer","minimum":0,"maximum":100},"healed_actions":{"type":"integer","minimum":0,"maximum":4000},"model_from_step":{"type":["integer","null"],"minimum":0,"maximum":99},"replay_ms":{"type":["integer","null"],"minimum":0,"maximum":86400000},"offered_outcomes":{"type":"integer","minimum":0,"maximum":100},"replayed_outcomes":{"type":"integer","minimum":0,"maximum":100},"cleanup_replayed":{"type":"boolean"}}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Browser ScenarioRun learning report","description":"The steps a single-actor browser ScenarioRun completed and how it completed them, the live checks of the outcomes it proved, and the actions and checks of the cleanup checkpoint that followed, posted once before its result. Verify promotes them to learned steps, outcomes and cleanup only when the run passes with cleanup complete. Values never hold a credential; a fill of a granted handle names its kind."}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/verify_mail":{"post":{"operationId":"verify_mail_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/verify_product_map":{"post":{"operationId":"verify_product_map_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Vex-Lease-Token","in":"header","required":false,"description":"Active worker lease credential; organization administrators may instead use their bearer authorization","schema":{"type":"string"}}],"responses":{"200":{"description":"Bounded history from the active Discovery lease scope; candidate paths require fresh replay","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"oneOf":[{"$ref":"#/components/schemas/ProductMapBrief"},{"$ref":"#/components/schemas/ProductMapSearch"},{"$ref":"#/components/schemas/ProductMapStateDetail"},{"$ref":"#/components/schemas/ProductMapObservation"},{"$ref":"#/components/schemas/ProductMapFrontier"},{"$ref":"#/components/schemas/ProductMapPath"}]}}}},"401":{"description":"Map read refused or unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductMapReadError"}}}},"403":{"description":"Map read refused or unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductMapReadError"}}}},"404":{"description":"Map read refused or unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductMapReadError"}}}},"422":{"description":"Map read refused or unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductMapReadError"}}}},"502":{"description":"Bad gateway"},"400":{"description":"Map read refused or unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductMapReadError"}}}},"409":{"description":"Map read refused or unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductMapReadError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProductMapRunReadRequest"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/verify_secrets":{"post":{"operationId":"verify_secrets_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/swarms/{swarm_id}/tasks/{task_id}/leases/{id}/verify_sign_in":{"post":{"operationId":"verify_sign_in_api_v1_swarm_task_lease","tags":["agent"],"parameters":[{"name":"swarm_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Vex-Lease-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"403":{"description":"Forbidden"},"404":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"422":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"},"204":{"description":"Sign-in report recorded"},"409":{"description":"Invalid agent swarm request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"replayed":{"type":"object","required":["id","version","sha256","signed_in"],"properties":{"id":{"type":"string"},"version":{"type":"integer","minimum":1,"description":"The script version the run was offered."},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"signed_in":{"type":"boolean"},"confirmed":{"type":"boolean","description":"Decisions confirmed the page is signed in."},"code":{"type":"string","maxLength":64}}},"learned":{"type":"object","required":["script"],"properties":{"script":{"type":"string","maxLength":65536},"model":{"type":"string"},"reasoning_effort":{"type":"string"},"sign_in_url":{"type":"string"},"usage":{"type":"object","additionalProperties":true}}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Browser run learned sign-in report","description":"How the account's learned sign-in script a browser run was offered did, or the script the run wrote once its sign-in was confirmed. A Scenario run or a Discovery or Deep Scan run may post either. Scripts name credentials only by kind and never hold a credential key or value."}},"/api/v1/agent/threads":{"get":{"operationId":"api_v1_threads","tags":["agent"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_agent_threads","tags":["agent"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/threads/{id}":{"get":{"operationId":"api_v1_thread","tags":["agent"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent/threads/{id}/archive":{"post":{"operationId":"archive_api_v1_thread","tags":["agent"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/agent_integration_callback":{"get":{"operationId":"api_v1_agent_integration_callback","tags":["agent_integration_callback"],"parameters":[{"name":"connection_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"state","in":"query","required":true,"schema":{"type":"string"}},{"name":"code","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Connected","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"text/html":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Sign-in link not found","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"The sign-in could not finish","content":{"text/html":{"schema":{"type":"string"}}}},"502":{"description":"Bad gateway"}},"security":[],"summary":"Finish a desktop app sign-in in the browser","description":"Where the browser lands after an app sign-in the desktop app started with callback app. Finishes the attempt from its one-time state as the account's owner, without a Composal session, and returns an HTML page."}},"/api/v1/agent_marketplace":{"get":{"operationId":"publicAgentMarketplaceList","tags":["agent_marketplace","Agent Marketplace"],"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"category","in":"query","required":false,"schema":{"type":"string"}},{"name":"scope","in":"query","required":false,"schema":{"type":"string","enum":["composal","mine"]}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Public marketplace listings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PublicAgentMarketplaceCatalog"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[],"summary":"Browse public agents without signing in","description":"Backs composal.com/marketplace, signed in or not. Signed out it lists public listings only and `can_manage` is false. With a browser session whose active organization has agents on, it reads as that organization (its own listings and management too, and `scope=mine`). `viewer` says which."}},"/api/v1/agent_marketplace/shared/{share_token}":{"get":{"operationId":"publicAgentMarketplaceShared","tags":["agent_marketplace","Agent Marketplace"],"parameters":[{"name":"share_token","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Listing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAgentListingDetailResponse"}}}},"404":{"description":"No link or public listing with this token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAgentListingNotFound"}}}}},"security":[],"summary":"Open a share link without signing in","description":"Backs composal.com/marketplace/shared/:token. Link and public listings open for anyone holding the token; organization-only listings open for the publishing organization's signed-in members. Removed listings and unknown tokens are 404."}},"/api/v1/agent_marketplace/{id}":{"get":{"operationId":"publicAgentMarketplaceShow","tags":["agent_marketplace","Agent Marketplace"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Listing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAgentListingDetailResponse"}}}},"404":{"description":"No public listing with this slug or id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAgentListingNotFound"}}}}},"security":[],"summary":"One public listing without signing in","description":"`id` is the listing's slug or public id. Signed out, organization, link and removed listings are 404, apps are never shown as connected (`connected` is null) and `share_token` is null. With a session it reads as the viewer's active organization, as the catalog does."}},"/api/v1/agent_sessions/{session_id}/transcript":{"get":{"operationId":"get_api_v1_agent_sessions_session_id_transcript","tags":["agent_sessions"],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string"}},{"in":"path","name":"session_id","required":true,"schema":{"type":"string"}},{"in":"query","name":"checkpoint","schema":{"type":"string"}},{"$ref":"#/components/parameters/TranscriptReadSource"},{"$ref":"#/components/parameters/TranscriptReadCursor"},{"$ref":"#/components/parameters/TranscriptReadLimit"},{"$ref":"#/components/parameters/TranscriptReadBytes"},{"$ref":"#/components/parameters/TranscriptReadTools"},{"$ref":"#/components/parameters/TranscriptReadAround"},{"$ref":"#/components/parameters/TranscriptReadDigest"}],"responses":{"200":{"description":"Indexed events or an explicit content availability state.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/TranscriptReadPage"}}}},"401":{"description":"Authentication required."},"403":{"description":"Forbidden"},"404":{"description":"Missing or inaccessible session or checkpoint."},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"400":{"description":"Invalid limits or source reference."},"409":{"description":"The cursor no longer identifies the same content or filters."},"413":{"description":"Increase max_bytes to fit the next complete indexed event."}},"security":[{"bearerAuth":[]}],"summary":"Read a bounded page of indexed conversation events","description":"Authorizes the session before selecting a checkpoint. Returns the latest conversation events in chronological order, with an older_cursor for earlier context. Each cursor fixes the checkpoint and index identity. Tools are opt in; reasoning is excluded. Indexed message truncation is disclosed and omitted text cannot be recovered through this API."}},"/api/v1/agent_web_previews":{"get":{"operationId":"api_v1_agent_web_previews","tags":["agent_web_previews"],"parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string"},"description":"Expiring capability issued in an authorized agent transcript."},{"name":"asset","in":"query","schema":{"type":"string","enum":["icon","image"]}}],"responses":{"200":{"description":"Optional public metadata, or image bytes when asset is supplied","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentWebSourcePreview"}},"image/png":{"schema":{"type":"string","format":"binary"}},"image/jpeg":{"schema":{"type":"string","format":"binary"}},"image/webp":{"schema":{"type":"string","format":"binary"}},"image/vnd.microsoft.icon":{"schema":{"type":"string","format":"binary"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Invalid or expired capability, or unavailable image"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"429":{"description":"Too many preview requests from this caller"},"503":{"description":"Preview fetch capacity is busy; retry later"}},"security":[],"summary":"Read public source metadata or a validated preview image"}},"/api/v1/app_access/callback":{"get":{"operationId":"api_v1_app_access_callback","tags":["app_access"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/app_access/jwks":{"get":{"operationId":"api_v1_app_access_jwks","tags":["app_access"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/app_access/start":{"get":{"operationId":"api_v1_app_access_start","tags":["app_access"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/artifacts":{"get":{"operationId":"api_v1_artifacts","tags":["artifacts"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_artifacts_artifacts","tags":["artifacts"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/artifacts/{id}":{"get":{"operationId":"api_v1_artifact","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_artifacts_artifacts_id_","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_artifacts_artifacts_id_","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_artifacts_artifacts_id_","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/artifacts/{id}/expire":{"post":{"operationId":"expire_api_v1_artifact","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/artifacts/{id}/issue_contract":{"post":{"operationId":"issue_contract_api_v1_artifact","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/artifacts/{id}/restore":{"post":{"operationId":"restore_api_v1_artifact","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/cache_namespaces":{"get":{"operationId":"api_v1_cache_namespaces","tags":["artifacts"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_artifacts_cache_namespaces","tags":["artifacts"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/cache_namespaces/{cache_namespace_id}/entries":{"get":{"operationId":"api_v1_cache_namespace_entries","tags":["artifacts"],"parameters":[{"name":"cache_namespace_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_artifacts_cache_namespaces_cache_namespace_id_entries","tags":["artifacts"],"parameters":[{"name":"cache_namespace_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/cache_namespaces/{cache_namespace_id}/entries/{id}":{"get":{"operationId":"api_v1_cache_namespace_entry","tags":["artifacts"],"parameters":[{"name":"cache_namespace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_artifacts_cache_namespaces_cache_namespace_id_entries_id_","tags":["artifacts"],"parameters":[{"name":"cache_namespace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_artifacts_cache_namespaces_cache_namespace_id_entries_id_","tags":["artifacts"],"parameters":[{"name":"cache_namespace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_artifacts_cache_namespaces_cache_namespace_id_entries_id_","tags":["artifacts"],"parameters":[{"name":"cache_namespace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/cache_namespaces/{cache_namespace_id}/entries/{id}/evict":{"post":{"operationId":"evict_api_v1_cache_namespace_entry","tags":["artifacts"],"parameters":[{"name":"cache_namespace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/cache_namespaces/{cache_namespace_id}/entries/{id}/issue_contract":{"post":{"operationId":"issue_contract_api_v1_cache_namespace_entry","tags":["artifacts"],"parameters":[{"name":"cache_namespace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/cache_namespaces/{cache_namespace_id}/entries/{id}/record_hit":{"post":{"operationId":"record_hit_api_v1_cache_namespace_entry","tags":["artifacts"],"parameters":[{"name":"cache_namespace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/cache_namespaces/{cache_namespace_id}/entries/{id}/record_miss":{"post":{"operationId":"record_miss_api_v1_cache_namespace_entry","tags":["artifacts"],"parameters":[{"name":"cache_namespace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/cache_namespaces/{id}":{"get":{"operationId":"api_v1_cache_namespace","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_artifacts_cache_namespaces_id_","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_artifacts_cache_namespaces_id_","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_artifacts_cache_namespaces_id_","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/cache_namespaces/{id}/archive":{"post":{"operationId":"archive_api_v1_cache_namespace","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/cache_namespaces/{id}/pause":{"post":{"operationId":"pause_api_v1_cache_namespace","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/cache_namespaces/{id}/resume":{"post":{"operationId":"resume_api_v1_cache_namespace","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/image_repositories":{"get":{"operationId":"get_api_v1_artifacts_image_repositories","tags":["artifacts"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_artifacts_image_repositories","tags":["artifacts"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/image_repositories/{id}":{"get":{"operationId":"api_v1_image_repository","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_artifacts_image_repositories_id_","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_artifacts_image_repositories_id_","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_artifacts_image_repositories_id_","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/image_repositories/{id}/archive":{"post":{"operationId":"archive_api_v1_image_repository","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/image_repositories/{id}/contract":{"post":{"operationId":"contract_api_v1_image_repository","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Image repository push or pull contract","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ImageRepositoryContractResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ImageRepositoryContractPayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/image_repositories/{id}/pause":{"post":{"operationId":"pause_api_v1_image_repository","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/image_repositories/{id}/resume":{"post":{"operationId":"resume_api_v1_image_repository","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/image_repositories/{id}/tags":{"get":{"operationId":"tags_api_v1_image_repository","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Image repository tags","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ImageRepositoryTagsResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/package_mirrors":{"get":{"operationId":"api_v1_package_mirrors","tags":["artifacts"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_artifacts_package_mirrors","tags":["artifacts"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/package_mirrors/{id}":{"get":{"operationId":"api_v1_package_mirror","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_artifacts_package_mirrors_id_","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_artifacts_package_mirrors_id_","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_artifacts_package_mirrors_id_","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/package_mirrors/{id}/pause":{"post":{"operationId":"pause_api_v1_package_mirror","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/package_mirrors/{id}/resume":{"post":{"operationId":"resume_api_v1_package_mirror","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/package_mirrors/{id}/sync":{"post":{"operationId":"sync_api_v1_package_mirror","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/retention_policies":{"get":{"operationId":"api_v1_retention_policies","tags":["artifacts"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_artifacts_retention_policies","tags":["artifacts"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/artifacts/retention_policies/{id}":{"get":{"operationId":"api_v1_retention_policy","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_artifacts_retention_policies_id_","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_artifacts_retention_policies_id_","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_artifacts_retention_policies_id_","tags":["artifacts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/auth/apple":{"post":{"operationId":"api_v1_auth_apple","tags":["auth"],"parameters":[],"responses":{"200":{"description":"Apple identity approved this login","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["status"],"properties":{"status":{"type":"string","const":"complete"}}}}}},"401":{"description":"Invalid, expired or consumed native request or Apple authorization"},"403":{"description":"Account not admitted"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"Email already belongs to an account with another sign-in method"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["login_id","polling_token","code"],"properties":{"login_id":{"type":"string"},"polling_token":{"type":"string","writeOnly":true},"code":{"type":"string","writeOnly":true}}}}}},"security":[],"summary":"Approve a pending native iOS login with Sign in with Apple","description":"Exchanges an Apple authorization code whose signed nonce matches the SHA-256 of this login's polling token. Approval does not return a personal API token; use the existing one-time CLI exchange. Existing accounts are never linked from an Apple email match alone."}},"/api/v1/auth/cli/complete":{"post":{"operationId":"api_v1_auth_cli_complete","tags":["auth"],"parameters":[],"responses":{"200":{"description":"CLI login completed, or waiting for the user to choose an organization","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["status","organization","client_kind"],"properties":{"status":{"type":"string","enum":["complete","organization_required","organization_setup_required"]},"client_kind":{"type":"string","enum":["cli","desktop","android","ios"]},"app_return_url":{"type":"string","format":"uri","description":"Fixed native iOS return link, present only after successful approval. Contains no credential or polling token."},"organization":{"description":"The organization the CLI saves as its default; null when there is none or a choice is required.","oneOf":[{"$ref":"#/components/schemas/CliLoginOrganization"},{"type":"null"}]}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/CliLoginCompletePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/auth/cli/exchange":{"post":{"operationId":"api_v1_auth_cli_exchange","tags":["auth"],"parameters":[],"responses":{"200":{"description":"Approved connection","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/CliLoginExchange"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Waiting for browser approval","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliLoginPending"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/auth/cli/install":{"post":{"operationId":"api_v1_auth_cli_install","tags":["auth"],"parameters":[],"responses":{"201":{"description":"Install grant valid for 45 minutes; the organization becomes the CLI default","content":{"application/json":{"schema":{"type":"object","required":["install_token","expires_at"],"properties":{"install_token":{"type":"string","description":"Single-use secret. Return only to the user who requested it."},"expires_at":{"type":"string","format":"date-time"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization_slug"],"properties":{"organization_slug":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Create a single-use CLI install grant for the signed-in user"}},"/api/v1/auth/cli/start":{"post":{"operationId":"api_v1_auth_cli_start","tags":["auth"],"parameters":[],"responses":{"200":{"description":"CLI approval request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/CliLoginStart"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"CLI approval request created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliLoginStart"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"name":{"type":"string"},"client_kind":{"type":"string","enum":["cli","desktop","android","android_dev","ios","ios_dev"],"description":"android_dev and ios_dev return to their separate local apps using server-owned callback URLs. Clients cannot supply arbitrary callback URLs."},"intent":{"type":"string","enum":["signin","signup"]}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/auth/csrf":{"get":{"operationId":"api_v1_auth_csrf","tags":["auth"],"parameters":[],"responses":{"200":{"description":"Browser CSRF token","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["csrf_token"],"properties":{"csrf_token":{"type":"string"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/auth/github":{"post":{"operationId":"api_v1_auth_github","tags":["auth"],"parameters":[],"responses":{"200":{"description":"Authenticated user session","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AuthSession","required":["id","email","name","picture_url","app_promotion","github_prs_authored_by_change_author","github_pr_user_authorization_connected","github_pr_user_authorization_login","organizations","active_organization","pending_organization_invitation_count","pending_organization_invitation_count_label"],"properties":{"openai_sign_in_enabled":{"type":"boolean"},"openai_sign_in_connected":{"type":"boolean"},"app_promotion":{"$ref":"#/components/schemas/AppPromotion"},"id":{"type":"string"},"email":{"type":"string","format":"email"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true},"github_prs_authored_by_change_author":{"type":"boolean"},"github_pr_user_authorization_connected":{"type":"boolean"},"github_pr_user_authorization_login":{"type":"string","nullable":true},"superadmin":{"type":"boolean"},"organizations":{"type":"array","items":{"type":"object","required":["id","slug","name","timezone","sandbox_region","logo_url","role","personal","member_count","pending_invitation_count","repository_count","activated_products","can_activate_products","github_prs_authored_by_change_author","verify_pr_scenario_writing_enabled","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string","description":"Default IANA timezone for organization-local schedules such as nightly dreaming."},"logo_url":{"type":"string","nullable":true},"role":{"type":"string","nullable":true},"personal":{"type":"boolean"},"member_count":{"type":"integer","minimum":0},"pending_invitation_count":{"type":"integer","minimum":0},"repository_count":{"type":"integer","minimum":0},"source_ui_enabled":{"type":"boolean","description":"Organization-scoped Source workspace rollout; missing values mean disabled."},"source_control_providers":{"type":"array","description":"Connected source control providers for this organization. Missing values mean no providers are known.","uniqueItems":true,"items":{"type":"string","enum":["github","gitlab"]}},"activated_products":{"type":"array","description":"Products this organization has activated (PRD 144). Activation is what makes a product's surfaces visible; it is neither permission nor entitlement.","items":{"type":"string","enum":["transcripts","vcs"]}},"can_activate_products":{"type":"boolean","description":"Whether the current user may activate a product for this organization: the organization-admin rule the activation endpoint enforces."},"sandbox_region":{"type":"string","enum":["us-was-1","us-pdx-1","eu-lon-1","eu-fra-1","auto"]},"github_prs_authored_by_change_author":{"type":"boolean"},"verify_pr_scenario_writing_enabled":{"type":"boolean"},"shared_agent_personal_accounts_enabled":{"type":"boolean","description":"Whether a shared agent may use one person's account for everyone who chats with it. Present only where agent integrations are on."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}},"active_organization":{"oneOf":[{"type":"object","required":["id","slug","name","timezone","sandbox_region","logo_url","role","personal","member_count","pending_invitation_count","repository_count","activated_products","can_activate_products","github_prs_authored_by_change_author","verify_pr_scenario_writing_enabled","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string","description":"Default IANA timezone for organization-local schedules such as nightly dreaming."},"logo_url":{"type":"string","nullable":true},"role":{"type":"string","nullable":true},"personal":{"type":"boolean"},"member_count":{"type":"integer","minimum":0},"pending_invitation_count":{"type":"integer","minimum":0},"repository_count":{"type":"integer","minimum":0},"source_ui_enabled":{"type":"boolean","description":"Organization-scoped Source workspace rollout; missing values mean disabled."},"source_control_providers":{"type":"array","description":"Connected source control providers for this organization. Missing values mean no providers are known.","uniqueItems":true,"items":{"type":"string","enum":["github","gitlab"]}},"activated_products":{"type":"array","description":"Products this organization has activated (PRD 144). Activation is what makes a product's surfaces visible; it is neither permission nor entitlement.","items":{"type":"string","enum":["transcripts","vcs"]}},"can_activate_products":{"type":"boolean","description":"Whether the current user may activate a product for this organization: the organization-admin rule the activation endpoint enforces."},"sandbox_region":{"type":"string","enum":["us-was-1","us-pdx-1","eu-lon-1","eu-fra-1","auto"]},"github_prs_authored_by_change_author":{"type":"boolean"},"verify_pr_scenario_writing_enabled":{"type":"boolean"},"shared_agent_personal_accounts_enabled":{"type":"boolean","description":"Whether a shared agent may use one person's account for everyone who chats with it. Present only where agent integrations are on."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},{"type":"null"}]},"pending_organization_invitation_count":{"type":"integer","minimum":0},"pending_organization_invitation_count_label":{"type":"string"},"api_token":{"type":"string"},"api_base_url":{"type":"string","format":"uri"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Sign-in requires account access, email verification, or a different existing sign-in method","content":{"application/json":{"schema":{"type":"object","required":["error","code"],"properties":{"error":{"type":"string"},"code":{"type":"string","enum":["account_not_found","beta_access_required","email_verification_required","oauth_account_linking_required","waitlist_required"]},"waitlist_reference":{"type":"integer","nullable":true,"minimum":127}}}}}},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["code","redirect_uri","state"],"properties":{"code":{"type":"string"},"redirect_uri":{"type":"string","format":"uri"},"state":{"type":"string"},"invite_code":{"type":"string","description":"Optional signup invitation code."}}}}}},"security":[]}},"/api/v1/auth/github/start":{"get":{"operationId":"api_v1_auth_github_start","tags":["auth"],"parameters":[{"name":"redirect_uri","in":"query","required":true,"schema":{"type":"string","format":"uri"}}],"responses":{"200":{"description":"Provider authorization URL","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["auth_url"],"properties":{"auth_url":{"type":"string","format":"uri"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/auth/google":{"post":{"operationId":"api_v1_auth_google","tags":["auth"],"parameters":[],"responses":{"200":{"description":"Authenticated user session","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AuthSession","required":["id","email","name","picture_url","app_promotion","github_prs_authored_by_change_author","github_pr_user_authorization_connected","github_pr_user_authorization_login","organizations","active_organization","pending_organization_invitation_count","pending_organization_invitation_count_label"],"properties":{"openai_sign_in_enabled":{"type":"boolean"},"openai_sign_in_connected":{"type":"boolean"},"app_promotion":{"$ref":"#/components/schemas/AppPromotion"},"id":{"type":"string"},"email":{"type":"string","format":"email"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true},"github_prs_authored_by_change_author":{"type":"boolean"},"github_pr_user_authorization_connected":{"type":"boolean"},"github_pr_user_authorization_login":{"type":"string","nullable":true},"superadmin":{"type":"boolean"},"organizations":{"type":"array","items":{"type":"object","required":["id","slug","name","timezone","sandbox_region","logo_url","role","personal","member_count","pending_invitation_count","repository_count","activated_products","can_activate_products","github_prs_authored_by_change_author","verify_pr_scenario_writing_enabled","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string","description":"Default IANA timezone for organization-local schedules such as nightly dreaming."},"logo_url":{"type":"string","nullable":true},"role":{"type":"string","nullable":true},"personal":{"type":"boolean"},"member_count":{"type":"integer","minimum":0},"pending_invitation_count":{"type":"integer","minimum":0},"repository_count":{"type":"integer","minimum":0},"source_ui_enabled":{"type":"boolean","description":"Organization-scoped Source workspace rollout; missing values mean disabled."},"source_control_providers":{"type":"array","description":"Connected source control providers for this organization. Missing values mean no providers are known.","uniqueItems":true,"items":{"type":"string","enum":["github","gitlab"]}},"activated_products":{"type":"array","description":"Products this organization has activated (PRD 144). Activation is what makes a product's surfaces visible; it is neither permission nor entitlement.","items":{"type":"string","enum":["transcripts","vcs"]}},"can_activate_products":{"type":"boolean","description":"Whether the current user may activate a product for this organization: the organization-admin rule the activation endpoint enforces."},"sandbox_region":{"type":"string","enum":["us-was-1","us-pdx-1","eu-lon-1","eu-fra-1","auto"]},"github_prs_authored_by_change_author":{"type":"boolean"},"verify_pr_scenario_writing_enabled":{"type":"boolean"},"shared_agent_personal_accounts_enabled":{"type":"boolean","description":"Whether a shared agent may use one person's account for everyone who chats with it. Present only where agent integrations are on."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}},"active_organization":{"oneOf":[{"type":"object","required":["id","slug","name","timezone","sandbox_region","logo_url","role","personal","member_count","pending_invitation_count","repository_count","activated_products","can_activate_products","github_prs_authored_by_change_author","verify_pr_scenario_writing_enabled","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string","description":"Default IANA timezone for organization-local schedules such as nightly dreaming."},"logo_url":{"type":"string","nullable":true},"role":{"type":"string","nullable":true},"personal":{"type":"boolean"},"member_count":{"type":"integer","minimum":0},"pending_invitation_count":{"type":"integer","minimum":0},"repository_count":{"type":"integer","minimum":0},"source_ui_enabled":{"type":"boolean","description":"Organization-scoped Source workspace rollout; missing values mean disabled."},"source_control_providers":{"type":"array","description":"Connected source control providers for this organization. Missing values mean no providers are known.","uniqueItems":true,"items":{"type":"string","enum":["github","gitlab"]}},"activated_products":{"type":"array","description":"Products this organization has activated (PRD 144). Activation is what makes a product's surfaces visible; it is neither permission nor entitlement.","items":{"type":"string","enum":["transcripts","vcs"]}},"can_activate_products":{"type":"boolean","description":"Whether the current user may activate a product for this organization: the organization-admin rule the activation endpoint enforces."},"sandbox_region":{"type":"string","enum":["us-was-1","us-pdx-1","eu-lon-1","eu-fra-1","auto"]},"github_prs_authored_by_change_author":{"type":"boolean"},"verify_pr_scenario_writing_enabled":{"type":"boolean"},"shared_agent_personal_accounts_enabled":{"type":"boolean","description":"Whether a shared agent may use one person's account for everyone who chats with it. Present only where agent integrations are on."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},{"type":"null"}]},"pending_organization_invitation_count":{"type":"integer","minimum":0},"pending_organization_invitation_count_label":{"type":"string"},"api_token":{"type":"string"},"api_base_url":{"type":"string","format":"uri"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Sign-in requires account access, email verification, or a different existing sign-in method","content":{"application/json":{"schema":{"type":"object","required":["error","code"],"properties":{"error":{"type":"string"},"code":{"type":"string","enum":["account_not_found","beta_access_required","email_verification_required","oauth_account_linking_required","waitlist_required"]},"waitlist_reference":{"type":"integer","nullable":true,"minimum":127}}}}}},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["code","redirect_uri","state"],"properties":{"code":{"type":"string"},"redirect_uri":{"type":"string","format":"uri"},"state":{"type":"string"},"invite_code":{"type":"string","description":"Optional signup invitation code."}}}}}},"security":[]}},"/api/v1/auth/google/start":{"get":{"operationId":"api_v1_auth_google_start","tags":["auth"],"parameters":[{"name":"redirect_uri","in":"query","required":true,"schema":{"type":"string","format":"uri"}}],"responses":{"200":{"description":"Provider authorization URL","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["auth_url"],"properties":{"auth_url":{"type":"string","format":"uri"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/auth/impersonation":{"get":{"operationId":"api_v1_auth_impersonation","tags":["auth"],"parameters":[],"responses":{"200":{"description":"Available only to the active superadmin who began this session","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["impersonation"],"properties":{"impersonation":{"type":["object","null"],"required":["operator_email","user_email"],"properties":{"operator_email":{"type":"string","format":"email"},"user_email":{"type":"string","format":"email"}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read restoration information for the current browser support session"},"delete":{"operationId":"delete_api_v1_auth_impersonation","tags":["auth"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"No support session with an active superadmin"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Support session ended and the superadmin browser session restored"}},"security":[{"bearerAuth":[]}],"summary":"Return to the superadmin account that started this support session","description":"Requires the impersonating browser session and a CSRF token. Bearer tokens cannot restore a session."}},"/api/v1/auth/login":{"post":{"operationId":"api_v1_auth_login","tags":["auth"],"parameters":[],"responses":{"200":{"description":"Authenticated user session","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AuthSession","required":["id","email","name","picture_url","app_promotion","github_prs_authored_by_change_author","github_pr_user_authorization_connected","github_pr_user_authorization_login","organizations","active_organization","pending_organization_invitation_count","pending_organization_invitation_count_label"],"properties":{"openai_sign_in_enabled":{"type":"boolean"},"openai_sign_in_connected":{"type":"boolean"},"app_promotion":{"$ref":"#/components/schemas/AppPromotion"},"id":{"type":"string"},"email":{"type":"string","format":"email"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true},"github_prs_authored_by_change_author":{"type":"boolean"},"github_pr_user_authorization_connected":{"type":"boolean"},"github_pr_user_authorization_login":{"type":"string","nullable":true},"superadmin":{"type":"boolean"},"organizations":{"type":"array","items":{"type":"object","required":["id","slug","name","timezone","sandbox_region","logo_url","role","personal","member_count","pending_invitation_count","repository_count","activated_products","can_activate_products","github_prs_authored_by_change_author","verify_pr_scenario_writing_enabled","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string","description":"Default IANA timezone for organization-local schedules such as nightly dreaming."},"logo_url":{"type":"string","nullable":true},"role":{"type":"string","nullable":true},"personal":{"type":"boolean"},"member_count":{"type":"integer","minimum":0},"pending_invitation_count":{"type":"integer","minimum":0},"repository_count":{"type":"integer","minimum":0},"source_ui_enabled":{"type":"boolean","description":"Organization-scoped Source workspace rollout; missing values mean disabled."},"source_control_providers":{"type":"array","description":"Connected source control providers for this organization. Missing values mean no providers are known.","uniqueItems":true,"items":{"type":"string","enum":["github","gitlab"]}},"activated_products":{"type":"array","description":"Products this organization has activated (PRD 144). Activation is what makes a product's surfaces visible; it is neither permission nor entitlement.","items":{"type":"string","enum":["transcripts","vcs"]}},"can_activate_products":{"type":"boolean","description":"Whether the current user may activate a product for this organization: the organization-admin rule the activation endpoint enforces."},"sandbox_region":{"type":"string","enum":["us-was-1","us-pdx-1","eu-lon-1","eu-fra-1","auto"]},"github_prs_authored_by_change_author":{"type":"boolean"},"verify_pr_scenario_writing_enabled":{"type":"boolean"},"shared_agent_personal_accounts_enabled":{"type":"boolean","description":"Whether a shared agent may use one person's account for everyone who chats with it. Present only where agent integrations are on."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}},"active_organization":{"oneOf":[{"type":"object","required":["id","slug","name","timezone","sandbox_region","logo_url","role","personal","member_count","pending_invitation_count","repository_count","activated_products","can_activate_products","github_prs_authored_by_change_author","verify_pr_scenario_writing_enabled","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string","description":"Default IANA timezone for organization-local schedules such as nightly dreaming."},"logo_url":{"type":"string","nullable":true},"role":{"type":"string","nullable":true},"personal":{"type":"boolean"},"member_count":{"type":"integer","minimum":0},"pending_invitation_count":{"type":"integer","minimum":0},"repository_count":{"type":"integer","minimum":0},"source_ui_enabled":{"type":"boolean","description":"Organization-scoped Source workspace rollout; missing values mean disabled."},"source_control_providers":{"type":"array","description":"Connected source control providers for this organization. Missing values mean no providers are known.","uniqueItems":true,"items":{"type":"string","enum":["github","gitlab"]}},"activated_products":{"type":"array","description":"Products this organization has activated (PRD 144). Activation is what makes a product's surfaces visible; it is neither permission nor entitlement.","items":{"type":"string","enum":["transcripts","vcs"]}},"can_activate_products":{"type":"boolean","description":"Whether the current user may activate a product for this organization: the organization-admin rule the activation endpoint enforces."},"sandbox_region":{"type":"string","enum":["us-was-1","us-pdx-1","eu-lon-1","eu-fra-1","auto"]},"github_prs_authored_by_change_author":{"type":"boolean"},"verify_pr_scenario_writing_enabled":{"type":"boolean"},"shared_agent_personal_accounts_enabled":{"type":"boolean","description":"Whether a shared agent may use one person's account for everyone who chats with it. Present only where agent integrations are on."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},{"type":"null"}]},"pending_organization_invitation_count":{"type":"integer","minimum":0},"pending_organization_invitation_count_label":{"type":"string"},"api_token":{"type":"string"},"api_base_url":{"type":"string","format":"uri"}}}}}},"401":{"description":"Invalid email or password"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["email","password"],"properties":{"email":{"type":"string","format":"email"},"password":{"type":"string","format":"password"}}}}}},"security":[]}},"/api/v1/auth/logout":{"post":{"operationId":"api_v1_auth_logout","tags":["auth"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Session cleared"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/auth/openai/callback":{"get":{"operationId":"api_v1_auth_openai_callback","tags":["auth"],"parameters":[{"in":"query","name":"state","required":true,"schema":{"type":"string"}},{"in":"query","name":"code","schema":{"type":"string"}},{"in":"query","name":"error","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"302":{"description":"Redirect to the application, waitlist, or sign-in error."}},"security":[{"bearerAuth":[]}],"summary":"Complete ChatGPT identity authorization","description":"Consumes a browser-bound one-time transaction and creates a first-party session after JWT verification. Tokens never reach frontend JavaScript."}},"/api/v1/auth/openai/start":{"get":{"operationId":"api_v1_auth_openai_start","tags":["auth"],"parameters":[{"in":"query","name":"intent","schema":{"type":"string","enum":["link"]},"description":"Link only to the currently authenticated Composal account."},{"in":"query","name":"redirectTo","schema":{"type":"string","maxLength":2048}},{"in":"query","name":"invite_code","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"302":{"description":"Redirect to OpenAI authorization, or back to sign-in with an actionable error."}},"security":[{"bearerAuth":[]}],"summary":"Continue with ChatGPT","description":"Browser navigation to the registered identity client. Does not authorize subscription inference."}},"/api/v1/auth/password_resets":{"post":{"operationId":"api_v1_auth_password_resets","tags":["auth"],"parameters":[],"responses":{"200":{"description":"Password reset request accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["message"],"properties":{"message":{"type":"string"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["email"],"properties":{"email":{"type":"string","format":"email"}}}}}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_auth_password_resets","tags":["auth"],"parameters":[],"responses":{"200":{"description":"Password updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["message"],"properties":{"message":{"type":"string"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Invalid or expired reset link, or invalid password"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["token","password"],"properties":{"token":{"type":"string"},"password":{"type":"string","format":"password"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/auth/register":{"post":{"operationId":"api_v1_auth_register","tags":["auth"],"parameters":[],"responses":{"200":{"description":"Authenticated user session","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AuthSession","required":["id","email","name","picture_url","app_promotion","github_prs_authored_by_change_author","github_pr_user_authorization_connected","github_pr_user_authorization_login","organizations","active_organization","pending_organization_invitation_count","pending_organization_invitation_count_label"],"properties":{"openai_sign_in_enabled":{"type":"boolean"},"openai_sign_in_connected":{"type":"boolean"},"app_promotion":{"$ref":"#/components/schemas/AppPromotion"},"id":{"type":"string"},"email":{"type":"string","format":"email"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true},"github_prs_authored_by_change_author":{"type":"boolean"},"github_pr_user_authorization_connected":{"type":"boolean"},"github_pr_user_authorization_login":{"type":"string","nullable":true},"superadmin":{"type":"boolean"},"organizations":{"type":"array","items":{"type":"object","required":["id","slug","name","timezone","sandbox_region","logo_url","role","personal","member_count","pending_invitation_count","repository_count","activated_products","can_activate_products","github_prs_authored_by_change_author","verify_pr_scenario_writing_enabled","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string","description":"Default IANA timezone for organization-local schedules such as nightly dreaming."},"logo_url":{"type":"string","nullable":true},"role":{"type":"string","nullable":true},"personal":{"type":"boolean"},"member_count":{"type":"integer","minimum":0},"pending_invitation_count":{"type":"integer","minimum":0},"repository_count":{"type":"integer","minimum":0},"source_ui_enabled":{"type":"boolean","description":"Organization-scoped Source workspace rollout; missing values mean disabled."},"source_control_providers":{"type":"array","description":"Connected source control providers for this organization. Missing values mean no providers are known.","uniqueItems":true,"items":{"type":"string","enum":["github","gitlab"]}},"activated_products":{"type":"array","description":"Products this organization has activated (PRD 144). Activation is what makes a product's surfaces visible; it is neither permission nor entitlement.","items":{"type":"string","enum":["transcripts","vcs"]}},"can_activate_products":{"type":"boolean","description":"Whether the current user may activate a product for this organization: the organization-admin rule the activation endpoint enforces."},"sandbox_region":{"type":"string","enum":["us-was-1","us-pdx-1","eu-lon-1","eu-fra-1","auto"]},"github_prs_authored_by_change_author":{"type":"boolean"},"verify_pr_scenario_writing_enabled":{"type":"boolean"},"shared_agent_personal_accounts_enabled":{"type":"boolean","description":"Whether a shared agent may use one person's account for everyone who chats with it. Present only where agent integrations are on."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}},"active_organization":{"oneOf":[{"type":"object","required":["id","slug","name","timezone","sandbox_region","logo_url","role","personal","member_count","pending_invitation_count","repository_count","activated_products","can_activate_products","github_prs_authored_by_change_author","verify_pr_scenario_writing_enabled","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string","description":"Default IANA timezone for organization-local schedules such as nightly dreaming."},"logo_url":{"type":"string","nullable":true},"role":{"type":"string","nullable":true},"personal":{"type":"boolean"},"member_count":{"type":"integer","minimum":0},"pending_invitation_count":{"type":"integer","minimum":0},"repository_count":{"type":"integer","minimum":0},"source_ui_enabled":{"type":"boolean","description":"Organization-scoped Source workspace rollout; missing values mean disabled."},"source_control_providers":{"type":"array","description":"Connected source control providers for this organization. Missing values mean no providers are known.","uniqueItems":true,"items":{"type":"string","enum":["github","gitlab"]}},"activated_products":{"type":"array","description":"Products this organization has activated (PRD 144). Activation is what makes a product's surfaces visible; it is neither permission nor entitlement.","items":{"type":"string","enum":["transcripts","vcs"]}},"can_activate_products":{"type":"boolean","description":"Whether the current user may activate a product for this organization: the organization-admin rule the activation endpoint enforces."},"sandbox_region":{"type":"string","enum":["us-was-1","us-pdx-1","eu-lon-1","eu-fra-1","auto"]},"github_prs_authored_by_change_author":{"type":"boolean"},"verify_pr_scenario_writing_enabled":{"type":"boolean"},"shared_agent_personal_accounts_enabled":{"type":"boolean","description":"Whether a shared agent may use one person's account for everyone who chats with it. Present only where agent integrations are on."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},{"type":"null"}]},"pending_organization_invitation_count":{"type":"integer","minimum":0},"pending_organization_invitation_count_label":{"type":"string"},"api_token":{"type":"string"},"api_base_url":{"type":"string","format":"uri"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Signup requires waitlist approval or access","content":{"application/json":{"schema":{"type":"object","required":["error","code"],"properties":{"error":{"type":"string"},"code":{"type":"string"},"waitlist_reference":{"type":"integer","nullable":true,"minimum":127}}}}}},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Signup accepted for email verification","content":{"application/json":{"schema":{"type":"object","required":["email_verification_required"],"properties":{"email_verification_required":{"type":"boolean","enum":[true]}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["email","password"],"properties":{"email":{"type":"string","format":"email"},"password":{"type":"string","format":"password"},"name":{"type":"string","nullable":true},"turnstile_token":{"type":"string","maxLength":2048},"cli_login_id":{"type":"string","description":"Desktop approval request to resume after email verification."},"invite_code":{"type":"string","description":"Optional invitation code from an existing invitation."},"organization_invitation_token":{"type":"string","description":"Active organization invitation token proving the invited email during password setup. Accepts the invitation and signs in without another verification email."}}}}}},"security":[]}},"/api/v1/auth/registration_options":{"get":{"operationId":"api_v1_auth_registration_options","tags":["auth"],"parameters":[],"responses":{"200":{"description":"Password signup availability and Turnstile configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PasswordRegistrationOptions"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[]}},"/api/v1/bazel/action_results/{hash}/{size_bytes}":{"get":{"operationId":"get_api_v1_bazel_action_results_hash_size_bytes_","tags":["bazel"],"parameters":[{"name":"hash","in":"path","required":true,"schema":{"type":"string"}},{"name":"size_bytes","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_bazel_action_results_hash_size_bytes_","tags":["bazel"],"parameters":[{"name":"hash","in":"path","required":true,"schema":{"type":"string"}},{"name":"size_bytes","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/bazel/authorize":{"post":{"operationId":"post_api_v1_bazel_authorize","tags":["bazel"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/bazel/backends":{"get":{"operationId":"api_v1_backends","tags":["bazel"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_bazel_backends","tags":["bazel"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/bazel/backends/{backend_id}/runner_pools":{"get":{"operationId":"api_v1_backend_runner_pools","tags":["bazel"],"parameters":[{"name":"backend_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_bazel_backends_backend_id_runner_pools","tags":["bazel"],"parameters":[{"name":"backend_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/bazel/backends/{backend_id}/runner_pools/{id}":{"delete":{"operationId":"api_v1_backend_runner_pool","tags":["bazel"],"parameters":[{"name":"backend_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/bazel/backends/{id}":{"get":{"operationId":"api_v1_backend","tags":["bazel"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_bazel_backends_id_","tags":["bazel"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_bazel_backends_id_","tags":["bazel"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_bazel_backends_id_","tags":["bazel"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/bazel/backends/{id}/issue_token":{"post":{"operationId":"issue_token_api_v1_backend","tags":["bazel"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/bazel/backends/{id}/pause":{"post":{"operationId":"pause_api_v1_backend","tags":["bazel"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/bazel/backends/{id}/resume":{"post":{"operationId":"resume_api_v1_backend","tags":["bazel"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/bazel/blobs/{kind}/{hash}/{size_bytes}":{"put":{"operationId":"put_api_v1_bazel_blobs_kind_hash_size_bytes_","tags":["bazel"],"parameters":[{"name":"kind","in":"path","required":true,"schema":{"type":"string"}},{"name":"hash","in":"path","required":true,"schema":{"type":"string"}},{"name":"size_bytes","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"get":{"operationId":"get_api_v1_bazel_blobs_kind_hash_size_bytes_","tags":["bazel"],"parameters":[{"name":"kind","in":"path","required":true,"schema":{"type":"string"}},{"name":"hash","in":"path","required":true,"schema":{"type":"string"}},{"name":"size_bytes","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/bazel/executions":{"post":{"operationId":"api_v1_executions","tags":["bazel"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/bazel/executions/claim_next":{"post":{"operationId":"api_v1_executions_claim_next","tags":["bazel"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/bazel/executions/lookup":{"get":{"operationId":"api_v1_executions_lookup","tags":["bazel"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/bazel/executions/{id}":{"get":{"operationId":"get_api_v1_bazel_executions_id_","tags":["bazel"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/bazel/executions/{id}/complete":{"post":{"operationId":"post_api_v1_bazel_executions_id_complete","tags":["bazel"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/bazel/executions/{id}/fail":{"post":{"operationId":"post_api_v1_bazel_executions_id_fail","tags":["bazel"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/bazel/executions/{id}/heartbeat":{"post":{"operationId":"post_api_v1_bazel_executions_id_heartbeat","tags":["bazel"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/bazel/find_missing_blobs":{"post":{"operationId":"api_v1_find_missing_blobs","tags":["bazel"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/billing/packages":{"get":{"operationId":"api_v1_billing_packages","tags":["billing"],"parameters":[],"responses":{"200":{"description":"Packages","content":{"application/json":{"schema":{"type":"object","required":["packages"],"properties":{"packages":{"type":"array","items":{"$ref":"#/components/schemas/BillingPackage"}}}}}}}},"security":[],"summary":"The public package catalog for the pricing page (no auth)"}},"/api/v1/cdn_spaces/{cdn_space_id}/objects":{"put":{"operationId":"api_v1_cdn_space_objects","tags":["cdn_spaces"],"parameters":[{"name":"cdn_space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"get":{"operationId":"get_api_v1_cdn_spaces_cdn_space_id_objects","tags":["cdn_spaces"],"parameters":[{"name":"cdn_space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/cdn_spaces/{cdn_space_id}/objects/{path}":{"get":{"operationId":"get_api_v1_cdn_spaces_cdn_space_id_objects_path_","tags":["cdn_spaces"],"parameters":[{"name":"cdn_space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"path","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_cdn_spaces_cdn_space_id_objects_path_","tags":["cdn_spaces"],"parameters":[{"name":"cdn_space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"path","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/cdn_spaces/{id}":{"get":{"operationId":"api_v1_cdn_space","tags":["cdn_spaces"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_cdn_spaces_id_","tags":["cdn_spaces"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_cdn_spaces_id_","tags":["cdn_spaces"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_cdn_spaces_id_","tags":["cdn_spaces"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/cdn_spaces/{id}/archive":{"post":{"operationId":"archive_api_v1_cdn_space","tags":["cdn_spaces"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/cdn_spaces/{id}/provision":{"post":{"operationId":"provision_api_v1_cdn_space","tags":["cdn_spaces"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/check/user(/{posthog_path})":{"get|post|options|head":{"operationId":"api_v1_posthog_proxy","tags":["check"],"parameters":[{"name":"posthog_path","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/nodes/enroll":{"post":{"operationId":"api_v1_nodes_enroll","tags":["ci"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/nodes/{id}":{"get":{"operationId":"api_v1_node","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"CI runner","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["runner"],"properties":{"runner":{"type":"object","required":["id","organization_id","ci_runner_pool_id","network_peer_id","slug","name","status","kind","os","architecture","version","labels_csv","node_capabilities_csv","node_certificate_fingerprint_sha256","node_certificate_serial","node_certificate_expires_at","bazel_enabled","bazel_properties_json","last_seen_at","online_at","offline_at","cordoned_at","revoked_at","health_state","schedulable","heartbeat_age_seconds","created_at","updated_at","node_certificate_expires_at_label","last_seen_at_label","online_at_label","offline_at_label","cordoned_at_label","revoked_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_runner_pool_id":{"type":"string"},"network_peer_id":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"kind":{"type":"string"},"os":{"type":"string","nullable":true},"architecture":{"type":"string","nullable":true},"version":{"type":"string","nullable":true},"labels_csv":{"type":"string","nullable":true},"node_capabilities_csv":{"type":"string","nullable":true},"node_certificate_fingerprint_sha256":{"type":"string","nullable":true},"node_certificate_serial":{"type":"string","nullable":true},"node_certificate_expires_at":{"type":"string","format":"date-time","nullable":true},"bazel_enabled":{"type":"boolean"},"bazel_properties_json":{"type":"string","nullable":true},"last_seen_at":{"type":"string","format":"date-time","nullable":true},"online_at":{"type":"string","format":"date-time","nullable":true},"offline_at":{"type":"string","format":"date-time","nullable":true},"cordoned_at":{"type":"string","format":"date-time","nullable":true},"revoked_at":{"type":"string","format":"date-time","nullable":true},"health_state":{"type":"string"},"schedulable":{"type":"boolean"},"heartbeat_age_seconds":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"node_certificate_expires_at_label":{"type":"string","nullable":true},"last_seen_at_label":{"type":"string","nullable":true},"online_at_label":{"type":"string","nullable":true},"offline_at_label":{"type":"string","nullable":true},"cordoned_at_label":{"type":"string","nullable":true},"revoked_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/nodes/{id}/certificate/rotate":{"post":{"operationId":"certificate_rotate_api_v1_node","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/nodes/{id}/cordon":{"post":{"operationId":"cordon_api_v1_node","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"CI runner","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["runner"],"properties":{"runner":{"type":"object","required":["id","organization_id","ci_runner_pool_id","network_peer_id","slug","name","status","kind","os","architecture","version","labels_csv","node_capabilities_csv","node_certificate_fingerprint_sha256","node_certificate_serial","node_certificate_expires_at","bazel_enabled","bazel_properties_json","last_seen_at","online_at","offline_at","cordoned_at","revoked_at","health_state","schedulable","heartbeat_age_seconds","created_at","updated_at","node_certificate_expires_at_label","last_seen_at_label","online_at_label","offline_at_label","cordoned_at_label","revoked_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_runner_pool_id":{"type":"string"},"network_peer_id":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"kind":{"type":"string"},"os":{"type":"string","nullable":true},"architecture":{"type":"string","nullable":true},"version":{"type":"string","nullable":true},"labels_csv":{"type":"string","nullable":true},"node_capabilities_csv":{"type":"string","nullable":true},"node_certificate_fingerprint_sha256":{"type":"string","nullable":true},"node_certificate_serial":{"type":"string","nullable":true},"node_certificate_expires_at":{"type":"string","format":"date-time","nullable":true},"bazel_enabled":{"type":"boolean"},"bazel_properties_json":{"type":"string","nullable":true},"last_seen_at":{"type":"string","format":"date-time","nullable":true},"online_at":{"type":"string","format":"date-time","nullable":true},"offline_at":{"type":"string","format":"date-time","nullable":true},"cordoned_at":{"type":"string","format":"date-time","nullable":true},"revoked_at":{"type":"string","format":"date-time","nullable":true},"health_state":{"type":"string"},"schedulable":{"type":"boolean"},"heartbeat_age_seconds":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"node_certificate_expires_at_label":{"type":"string","nullable":true},"last_seen_at_label":{"type":"string","nullable":true},"online_at_label":{"type":"string","nullable":true},"offline_at_label":{"type":"string","nullable":true},"cordoned_at_label":{"type":"string","nullable":true},"revoked_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/nodes/{id}/drain":{"post":{"operationId":"drain_api_v1_node","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"CI runner","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["runner"],"properties":{"runner":{"type":"object","required":["id","organization_id","ci_runner_pool_id","network_peer_id","slug","name","status","kind","os","architecture","version","labels_csv","node_capabilities_csv","node_certificate_fingerprint_sha256","node_certificate_serial","node_certificate_expires_at","bazel_enabled","bazel_properties_json","last_seen_at","online_at","offline_at","cordoned_at","revoked_at","health_state","schedulable","heartbeat_age_seconds","created_at","updated_at","node_certificate_expires_at_label","last_seen_at_label","online_at_label","offline_at_label","cordoned_at_label","revoked_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_runner_pool_id":{"type":"string"},"network_peer_id":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"kind":{"type":"string"},"os":{"type":"string","nullable":true},"architecture":{"type":"string","nullable":true},"version":{"type":"string","nullable":true},"labels_csv":{"type":"string","nullable":true},"node_capabilities_csv":{"type":"string","nullable":true},"node_certificate_fingerprint_sha256":{"type":"string","nullable":true},"node_certificate_serial":{"type":"string","nullable":true},"node_certificate_expires_at":{"type":"string","format":"date-time","nullable":true},"bazel_enabled":{"type":"boolean"},"bazel_properties_json":{"type":"string","nullable":true},"last_seen_at":{"type":"string","format":"date-time","nullable":true},"online_at":{"type":"string","format":"date-time","nullable":true},"offline_at":{"type":"string","format":"date-time","nullable":true},"cordoned_at":{"type":"string","format":"date-time","nullable":true},"revoked_at":{"type":"string","format":"date-time","nullable":true},"health_state":{"type":"string"},"schedulable":{"type":"boolean"},"heartbeat_age_seconds":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"node_certificate_expires_at_label":{"type":"string","nullable":true},"last_seen_at_label":{"type":"string","nullable":true},"online_at_label":{"type":"string","nullable":true},"offline_at_label":{"type":"string","nullable":true},"cordoned_at_label":{"type":"string","nullable":true},"revoked_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/nodes/{id}/heartbeat":{"post":{"operationId":"heartbeat_api_v1_node","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/nodes/{id}/leases":{"get":{"operationId":"leases_api_v1_node","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/nodes/{id}/leases/{lease_id}/artifacts":{"post":{"operationId":"post_api_v1_ci_nodes_id_leases_lease_id_artifacts","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lease_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/nodes/{id}/leases/{lease_id}/cache/restore":{"post":{"operationId":"post_api_v1_ci_nodes_id_leases_lease_id_cache_restore","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lease_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/nodes/{id}/leases/{lease_id}/cache/save":{"post":{"operationId":"post_api_v1_ci_nodes_id_leases_lease_id_cache_save","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lease_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/nodes/{id}/leases/{lease_id}/claim":{"post":{"operationId":"post_api_v1_ci_nodes_id_leases_lease_id_claim","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lease_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/nodes/{id}/leases/{lease_id}/heartbeat":{"post":{"operationId":"post_api_v1_ci_nodes_id_leases_lease_id_heartbeat","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lease_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/nodes/{id}/leases/{lease_id}/job":{"get":{"operationId":"get_api_v1_ci_nodes_id_leases_lease_id_job","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lease_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/nodes/{id}/leases/{lease_id}/log_chunks":{"post":{"operationId":"post_api_v1_ci_nodes_id_leases_lease_id_log_chunks","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lease_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/nodes/{id}/leases/{lease_id}/reconciliations/{reconciliation_id}/output":{"post":{"operationId":"post_api_v1_ci_nodes_id_leases_lease_id_reconciliations_reconciliation_id_output","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lease_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"reconciliation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/nodes/{id}/leases/{lease_id}/release":{"post":{"operationId":"post_api_v1_ci_nodes_id_leases_lease_id_release","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lease_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/nodes/{id}/leases/{lease_id}/steps/{ci_step_id}":{"patch":{"operationId":"patch_api_v1_ci_nodes_id_leases_lease_id_steps_ci_step_id_","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lease_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"ci_step_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/nodes/{id}/leases/{lease_id}/workspace_archive":{"get":{"operationId":"get_api_v1_ci_nodes_id_leases_lease_id_workspace_archive","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lease_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/nodes/{id}/leases/{lease_id}/workspaces/{ci_workspace_id}":{"patch":{"operationId":"patch_api_v1_ci_nodes_id_leases_lease_id_workspaces_ci_workspace_id_","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lease_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"ci_workspace_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/nodes/{id}/uncordon":{"post":{"operationId":"uncordon_api_v1_node","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"CI runner","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["runner"],"properties":{"runner":{"type":"object","required":["id","organization_id","ci_runner_pool_id","network_peer_id","slug","name","status","kind","os","architecture","version","labels_csv","node_capabilities_csv","node_certificate_fingerprint_sha256","node_certificate_serial","node_certificate_expires_at","bazel_enabled","bazel_properties_json","last_seen_at","online_at","offline_at","cordoned_at","revoked_at","health_state","schedulable","heartbeat_age_seconds","created_at","updated_at","node_certificate_expires_at_label","last_seen_at_label","online_at_label","offline_at_label","cordoned_at_label","revoked_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_runner_pool_id":{"type":"string"},"network_peer_id":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"kind":{"type":"string"},"os":{"type":"string","nullable":true},"architecture":{"type":"string","nullable":true},"version":{"type":"string","nullable":true},"labels_csv":{"type":"string","nullable":true},"node_capabilities_csv":{"type":"string","nullable":true},"node_certificate_fingerprint_sha256":{"type":"string","nullable":true},"node_certificate_serial":{"type":"string","nullable":true},"node_certificate_expires_at":{"type":"string","format":"date-time","nullable":true},"bazel_enabled":{"type":"boolean"},"bazel_properties_json":{"type":"string","nullable":true},"last_seen_at":{"type":"string","format":"date-time","nullable":true},"online_at":{"type":"string","format":"date-time","nullable":true},"offline_at":{"type":"string","format":"date-time","nullable":true},"cordoned_at":{"type":"string","format":"date-time","nullable":true},"revoked_at":{"type":"string","format":"date-time","nullable":true},"health_state":{"type":"string"},"schedulable":{"type":"boolean"},"heartbeat_age_seconds":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"node_certificate_expires_at_label":{"type":"string","nullable":true},"last_seen_at_label":{"type":"string","nullable":true},"online_at_label":{"type":"string","nullable":true},"offline_at_label":{"type":"string","nullable":true},"cordoned_at_label":{"type":"string","nullable":true},"revoked_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/pipelines":{"get":{"operationId":"api_v1_pipelines","tags":["ci"],"parameters":[],"responses":{"200":{"description":"CI pipelines","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["pipelines"],"properties":{"pipelines":{"type":"array","items":{"type":"object","required":["id","organization_id","repository_id","hosted_app_id","ci_runner_pool_id","required_capabilities_csv","slug","name","description","source_kind","status","default_branch","workflow_path","trigger_on_push","trigger_on_pull_request","trigger_on_schedule","concurrency_key","created_at","updated_at","status_label","status_state","status_tone"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"repository_id":{"type":"string","nullable":true},"hosted_app_id":{"type":"string","nullable":true},"ci_runner_pool_id":{"type":"string","nullable":true},"required_capabilities_csv":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"source_kind":{"type":"string"},"status":{"type":"string"},"default_branch":{"type":"string","nullable":true},"workflow_path":{"type":"string","nullable":true},"trigger_on_push":{"type":"boolean"},"trigger_on_pull_request":{"type":"boolean"},"trigger_on_schedule":{"type":"boolean"},"concurrency_key":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"status_label":{"type":"string"},"status_state":{"type":"string","enum":["active","successful","failed","canceled","blocked","skipped","enabled","inactive","unknown"]},"status_tone":{"type":"string","enum":["success","danger","warning","default"]}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_ci_pipelines","tags":["ci"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/pipelines/{id}":{"get":{"operationId":"api_v1_pipeline","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"CI pipeline catalog","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["pipeline"],"properties":{"pipeline":{"allOf":[{"type":"object","required":["id","organization_id","repository_id","hosted_app_id","ci_runner_pool_id","required_capabilities_csv","slug","name","description","source_kind","status","default_branch","workflow_path","trigger_on_push","trigger_on_pull_request","trigger_on_schedule","concurrency_key","created_at","updated_at","status_label","status_state","status_tone"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"repository_id":{"type":"string","nullable":true},"hosted_app_id":{"type":"string","nullable":true},"ci_runner_pool_id":{"type":"string","nullable":true},"required_capabilities_csv":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"source_kind":{"type":"string"},"status":{"type":"string"},"default_branch":{"type":"string","nullable":true},"workflow_path":{"type":"string","nullable":true},"trigger_on_push":{"type":"boolean"},"trigger_on_pull_request":{"type":"boolean"},"trigger_on_schedule":{"type":"boolean"},"concurrency_key":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"status_label":{"type":"string"},"status_state":{"type":"string","enum":["active","successful","failed","canceled","blocked","skipped","enabled","inactive","unknown"]},"status_tone":{"type":"string","enum":["success","danger","warning","default"]}}},{"type":"object","required":["runner_pool","runs"],"properties":{"runner_pool":{"type":"object","nullable":true,"additionalProperties":true},"runs":{"type":"array","items":{"type":"object","required":["id","organization_id","repository_id","hosted_app_id","ci_pipeline_id","ci_runner_pool_id","creator_user_id","required_capabilities_csv","number","display_id","slug","status","trigger_kind","ref_name","commit_sha","source_url","message","concurrency_key","retry_number","queued_at","started_at","finished_at","canceled_at","parameters_json","created_at","updated_at","status_label","status_state","status_tone","active","failed","retryable"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"repository_id":{"type":"string","nullable":true},"hosted_app_id":{"type":"string","nullable":true},"ci_pipeline_id":{"type":"string"},"ci_runner_pool_id":{"type":"string","nullable":true},"creator_user_id":{"type":"string","nullable":true},"required_capabilities_csv":{"type":"string","nullable":true},"number":{"type":"integer"},"display_id":{"type":"integer"},"slug":{"type":"string"},"status":{"type":"string"},"trigger_kind":{"type":"string"},"ref_name":{"type":"string","nullable":true},"commit_sha":{"type":"string","nullable":true},"source_url":{"type":"string","nullable":true},"message":{"type":"string","nullable":true},"concurrency_key":{"type":"string","nullable":true},"retry_number":{"type":"integer"},"queued_at":{"type":"string","format":"date-time","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"canceled_at":{"type":"string","format":"date-time","nullable":true},"parameters_json":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"status_label":{"type":"string"},"status_state":{"type":"string","enum":["active","successful","failed","canceled","blocked","skipped","enabled","inactive","unknown"]},"status_tone":{"type":"string","enum":["success","danger","warning","default"]},"active":{"type":"boolean"},"failed":{"type":"boolean"},"retryable":{"type":"boolean"}}}}}}]}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/pipelines/{pipeline_id}/runs":{"get":{"operationId":"api_v1_pipeline_runs","tags":["ci"],"parameters":[{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_ci_pipelines_pipeline_id_runs","tags":["ci"],"parameters":[{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/pipelines/{pipeline_id}/runs/{id}":{"get":{"operationId":"api_v1_pipeline_run","tags":["ci"],"parameters":[{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"CI pipeline run catalog","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["pipeline_run"],"properties":{"pipeline_run":{"allOf":[{"type":"object","required":["id","organization_id","repository_id","hosted_app_id","ci_pipeline_id","ci_runner_pool_id","creator_user_id","required_capabilities_csv","number","display_id","slug","status","trigger_kind","ref_name","commit_sha","source_url","message","concurrency_key","retry_number","queued_at","started_at","finished_at","canceled_at","parameters_json","created_at","updated_at","status_label","status_state","status_tone","active","failed","retryable"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"repository_id":{"type":"string","nullable":true},"hosted_app_id":{"type":"string","nullable":true},"ci_pipeline_id":{"type":"string"},"ci_runner_pool_id":{"type":"string","nullable":true},"creator_user_id":{"type":"string","nullable":true},"required_capabilities_csv":{"type":"string","nullable":true},"number":{"type":"integer"},"display_id":{"type":"integer"},"slug":{"type":"string"},"status":{"type":"string"},"trigger_kind":{"type":"string"},"ref_name":{"type":"string","nullable":true},"commit_sha":{"type":"string","nullable":true},"source_url":{"type":"string","nullable":true},"message":{"type":"string","nullable":true},"concurrency_key":{"type":"string","nullable":true},"retry_number":{"type":"integer"},"queued_at":{"type":"string","format":"date-time","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"canceled_at":{"type":"string","format":"date-time","nullable":true},"parameters_json":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"status_label":{"type":"string"},"status_state":{"type":"string","enum":["active","successful","failed","canceled","blocked","skipped","enabled","inactive","unknown"]},"status_tone":{"type":"string","enum":["success","danger","warning","default"]},"active":{"type":"boolean"},"failed":{"type":"boolean"},"retryable":{"type":"boolean"}}},{"type":"object","required":["jobs"],"properties":{"jobs":{"type":"array","items":{"type":"object","required":["id","organization_id","ci_pipeline_run_id","ci_runner_id","number","display_id","slug","name","kind","status","execution_order","runner_label_selector","timeout_seconds","allow_failure","queued_at","started_at","finished_at","exit_code","retry_number","environment_csv","dependencies_csv","created_at","updated_at","status_label","status_state","status_tone","active","failed"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_pipeline_run_id":{"type":"string"},"ci_runner_id":{"type":"string","nullable":true},"number":{"type":"integer"},"display_id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"execution_order":{"type":"integer"},"runner_label_selector":{"type":"string","nullable":true},"timeout_seconds":{"type":"integer","nullable":true},"allow_failure":{"type":"boolean"},"queued_at":{"type":"string","format":"date-time","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"exit_code":{"type":"integer","nullable":true},"retry_number":{"type":"integer"},"environment_csv":{"type":"string","nullable":true},"dependencies_csv":{"type":"string","nullable":true},"cache_archive_observations":{"type":"object","nullable":true,"description":"Bounded server response history; it does not confirm runner extraction or test-result reuse.","required":["events","omitted_count"],"properties":{"omitted_count":{"type":"integer","minimum":0},"events":{"type":"array","maxItems":32,"items":{"type":"object","required":["outcome","label","observed_at","response_bytes","elapsed_ms","attempt"],"properties":{"outcome":{"type":"string","enum":["miss","archive_missing","exact_response","prefix_response","published_exact_response","published_prefix_response","error"]},"label":{"type":"string"},"observed_at":{"type":"string","format":"date-time"},"response_bytes":{"type":"integer","minimum":0},"elapsed_ms":{"type":"number","minimum":0},"attempt":{"type":"integer","minimum":1},"native_publication_id":{"type":"string"},"cache_entry_id":{"type":"string"},"source_run_id":{"type":"string"},"source_commit_id":{"type":"string","nullable":true},"source_url":{"type":"string"}}}}}},"reuse":{"type":"object","nullable":true,"required":["source_job_id","source_run_id","source_url"],"properties":{"source_job_id":{"type":"string"},"source_run_id":{"type":"string"},"source_url":{"type":"string"}}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"status_label":{"type":"string"},"status_state":{"type":"string","enum":["active","successful","failed","canceled","blocked","skipped","enabled","inactive","unknown"]},"status_tone":{"type":"string","enum":["success","danger","warning","default"]},"active":{"type":"boolean"},"failed":{"type":"boolean"}}}}}}]}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/pipelines/{pipeline_id}/runs/{id}/retry":{"post":{"operationId":"retry_api_v1_pipeline_run","tags":["ci"],"parameters":[{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Existing CI retry for this request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["pipeline_run"],"properties":{"pipeline_run":{"$ref":"#/components/schemas/CiPipelineRun"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"CI retry created","content":{"application/json":{"schema":{"type":"object","required":["pipeline_run"],"properties":{"pipeline_run":{"$ref":"#/components/schemas/CiPipelineRun"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["request_id"],"properties":{"request_id":{"type":"string","maxLength":100}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/pipelines/{pipeline_id}/runs/{run_id}/artifacts":{"get":{"operationId":"api_v1_pipeline_run_artifacts","tags":["ci"],"parameters":[{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_ci_pipelines_pipeline_id_runs_run_id_artifacts","tags":["ci"],"parameters":[{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/pipelines/{pipeline_id}/runs/{run_id}/jobs":{"get":{"operationId":"api_v1_pipeline_run_jobs","tags":["ci"],"parameters":[{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_ci_pipelines_pipeline_id_runs_run_id_jobs","tags":["ci"],"parameters":[{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/pipelines/{pipeline_id}/runs/{run_id}/jobs/{id}":{"get":{"operationId":"api_v1_pipeline_run_job","tags":["ci"],"parameters":[{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"CI job catalog","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["job"],"properties":{"job":{"allOf":[{"type":"object","required":["id","organization_id","ci_pipeline_run_id","ci_runner_id","number","display_id","slug","name","kind","status","execution_order","runner_label_selector","timeout_seconds","allow_failure","queued_at","started_at","finished_at","exit_code","retry_number","environment_csv","dependencies_csv","created_at","updated_at","status_label","status_state","status_tone","active","failed"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_pipeline_run_id":{"type":"string"},"ci_runner_id":{"type":"string","nullable":true},"number":{"type":"integer"},"display_id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"execution_order":{"type":"integer"},"runner_label_selector":{"type":"string","nullable":true},"timeout_seconds":{"type":"integer","nullable":true},"allow_failure":{"type":"boolean"},"queued_at":{"type":"string","format":"date-time","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"exit_code":{"type":"integer","nullable":true},"retry_number":{"type":"integer"},"environment_csv":{"type":"string","nullable":true},"dependencies_csv":{"type":"string","nullable":true},"cache_archive_observations":{"type":"object","nullable":true,"description":"Bounded server response history; it does not confirm runner extraction or test-result reuse.","required":["events","omitted_count"],"properties":{"omitted_count":{"type":"integer","minimum":0},"events":{"type":"array","maxItems":32,"items":{"type":"object","required":["outcome","label","observed_at","response_bytes","elapsed_ms","attempt"],"properties":{"outcome":{"type":"string","enum":["miss","archive_missing","exact_response","prefix_response","published_exact_response","published_prefix_response","error"]},"label":{"type":"string"},"observed_at":{"type":"string","format":"date-time"},"response_bytes":{"type":"integer","minimum":0},"elapsed_ms":{"type":"number","minimum":0},"attempt":{"type":"integer","minimum":1},"native_publication_id":{"type":"string"},"cache_entry_id":{"type":"string"},"source_run_id":{"type":"string"},"source_commit_id":{"type":"string","nullable":true},"source_url":{"type":"string"}}}}}},"reuse":{"type":"object","nullable":true,"required":["source_job_id","source_run_id","source_url"],"properties":{"source_job_id":{"type":"string"},"source_run_id":{"type":"string"},"source_url":{"type":"string"}}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"status_label":{"type":"string"},"status_state":{"type":"string","enum":["active","successful","failed","canceled","blocked","skipped","enabled","inactive","unknown"]},"status_tone":{"type":"string","enum":["success","danger","warning","default"]},"active":{"type":"boolean"},"failed":{"type":"boolean"}}},{"type":"object","required":["steps","log_chunks"],"properties":{"reconciliation_id":{"type":"string","nullable":true},"execution_profile":{"type":"string","enum":["automation-offline-v1","reconciliation-offline-v1"],"nullable":true},"steps":{"type":"array","items":{"type":"object","required":["id","organization_id","ci_job_id","slug","name","command","shell","working_directory","status","execution_order","retry_number","exit_code","started_at","finished_at","created_at","updated_at","status_label","status_state","status_tone","active","failed","secret_refs"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_job_id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"command":{"type":"string"},"shell":{"type":"string","nullable":true},"working_directory":{"type":"string","nullable":true},"status":{"type":"string"},"execution_order":{"type":"integer"},"retry_number":{"type":"integer"},"exit_code":{"type":"integer","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"observed_started_at":{"type":"string","format":"date-time","nullable":true,"readOnly":true,"description":"When the API first accepted a running update. Independent of the runner clock; absent or null for older and unobserved steps."},"observed_finished_at":{"type":"string","format":"date-time","nullable":true,"readOnly":true,"description":"When the API first accepted a terminal update. Includes transport effects; not a runner-local command duration."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"status_label":{"type":"string"},"status_state":{"type":"string","enum":["active","successful","failed","canceled","blocked","skipped","enabled","inactive","unknown"]},"status_tone":{"type":"string","enum":["success","danger","warning","default"]},"active":{"type":"boolean"},"failed":{"type":"boolean"},"secret_refs":{"type":"object","additionalProperties":{"type":"string"}},"cache_request":{"type":"object","nullable":true,"required":["key","restore_keys","paths","output_id"],"properties":{"key":{"type":"string"},"restore_keys":{"type":"array","items":{"type":"string"}},"paths":{"type":"array","items":{"type":"string"}},"output_id":{"type":"string"}}}}}},"log_chunks":{"type":"array","maxItems":25,"items":{"type":"object","required":["id","organization_id","ci_pipeline_run_id","ci_job_id","ci_step_id","sequence_number","stream","content_format","content","byte_size","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_pipeline_run_id":{"type":"string","nullable":true},"ci_job_id":{"type":"string","nullable":true},"ci_step_id":{"type":"string","nullable":true},"sequence_number":{"type":"integer"},"stream":{"type":"string"},"content_format":{"type":"string"},"content":{"type":"string"},"byte_size":{"type":"integer"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}}}]}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/pipelines/{pipeline_id}/runs/{run_id}/jobs/{job_id}/log_chunks":{"get":{"operationId":"api_v1_pipeline_run_job_log_chunks","tags":["ci"],"parameters":[{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"job_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"after_sequence","in":"query","required":false,"description":"Return only chunks with a sequence number greater than this.","schema":{"type":"integer","minimum":0}}],"responses":{"200":{"description":"CI job log chunks","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["log_chunks","job_status","job","steps"],"properties":{"log_chunks":{"type":"array","items":{"type":"object","required":["id","organization_id","ci_pipeline_run_id","ci_job_id","ci_step_id","sequence_number","stream","content_format","content","byte_size","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_pipeline_run_id":{"type":"string","nullable":true},"ci_job_id":{"type":"string","nullable":true},"ci_step_id":{"type":"string","nullable":true},"sequence_number":{"type":"integer"},"stream":{"type":"string"},"content_format":{"type":"string"},"content":{"type":"string"},"byte_size":{"type":"integer"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}},"job_status":{"type":"string"},"job":{"type":"object","required":["id","organization_id","ci_pipeline_run_id","ci_runner_id","number","display_id","slug","name","kind","status","execution_order","runner_label_selector","timeout_seconds","allow_failure","queued_at","started_at","finished_at","exit_code","retry_number","environment_csv","dependencies_csv","created_at","updated_at","status_label","status_state","status_tone","active","failed"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_pipeline_run_id":{"type":"string"},"ci_runner_id":{"type":"string","nullable":true},"number":{"type":"integer"},"display_id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"execution_order":{"type":"integer"},"runner_label_selector":{"type":"string","nullable":true},"timeout_seconds":{"type":"integer","nullable":true},"allow_failure":{"type":"boolean"},"queued_at":{"type":"string","format":"date-time","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"exit_code":{"type":"integer","nullable":true},"retry_number":{"type":"integer"},"environment_csv":{"type":"string","nullable":true},"dependencies_csv":{"type":"string","nullable":true},"cache_archive_observations":{"type":"object","nullable":true,"description":"Bounded server response history; it does not confirm runner extraction or test-result reuse.","required":["events","omitted_count"],"properties":{"omitted_count":{"type":"integer","minimum":0},"events":{"type":"array","maxItems":32,"items":{"type":"object","required":["outcome","label","observed_at","response_bytes","elapsed_ms","attempt"],"properties":{"outcome":{"type":"string","enum":["miss","archive_missing","exact_response","prefix_response","published_exact_response","published_prefix_response","error"]},"label":{"type":"string"},"observed_at":{"type":"string","format":"date-time"},"response_bytes":{"type":"integer","minimum":0},"elapsed_ms":{"type":"number","minimum":0},"attempt":{"type":"integer","minimum":1},"native_publication_id":{"type":"string"},"cache_entry_id":{"type":"string"},"source_run_id":{"type":"string"},"source_commit_id":{"type":"string","nullable":true},"source_url":{"type":"string"}}}}}},"reuse":{"type":"object","nullable":true,"required":["source_job_id","source_run_id","source_url"],"properties":{"source_job_id":{"type":"string"},"source_run_id":{"type":"string"},"source_url":{"type":"string"}}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"status_label":{"type":"string"},"status_state":{"type":"string","enum":["active","successful","failed","canceled","blocked","skipped","enabled","inactive","unknown"]},"status_tone":{"type":"string","enum":["success","danger","warning","default"]},"active":{"type":"boolean"},"failed":{"type":"boolean"}}},"steps":{"type":"array","items":{"type":"object","required":["id","organization_id","ci_job_id","slug","name","command","shell","working_directory","status","execution_order","retry_number","exit_code","started_at","finished_at","created_at","updated_at","status_label","status_state","status_tone","active","failed","secret_refs"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_job_id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"command":{"type":"string"},"shell":{"type":"string","nullable":true},"working_directory":{"type":"string","nullable":true},"status":{"type":"string"},"execution_order":{"type":"integer"},"retry_number":{"type":"integer"},"exit_code":{"type":"integer","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"observed_started_at":{"type":"string","format":"date-time","nullable":true,"readOnly":true,"description":"When the API first accepted a running update. Independent of the runner clock; absent or null for older and unobserved steps."},"observed_finished_at":{"type":"string","format":"date-time","nullable":true,"readOnly":true,"description":"When the API first accepted a terminal update. Includes transport effects; not a runner-local command duration."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"status_label":{"type":"string"},"status_state":{"type":"string","enum":["active","successful","failed","canceled","blocked","skipped","enabled","inactive","unknown"]},"status_tone":{"type":"string","enum":["success","danger","warning","default"]},"active":{"type":"boolean"},"failed":{"type":"boolean"},"secret_refs":{"type":"object","additionalProperties":{"type":"string"}},"cache_request":{"type":"object","nullable":true,"required":["key","restore_keys","paths","output_id"],"properties":{"key":{"type":"string"},"restore_keys":{"type":"array","items":{"type":"string"}},"paths":{"type":"array","items":{"type":"string"}},"output_id":{"type":"string"}}}}}},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_ci_pipelines_pipeline_id_runs_run_id_jobs_job_id_log_chunks","tags":["ci"],"parameters":[{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"job_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/pipelines/{pipeline_id}/runs/{run_id}/jobs/{job_id}/steps":{"get":{"operationId":"api_v1_pipeline_run_job_steps","tags":["ci"],"parameters":[{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"job_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_ci_pipelines_pipeline_id_runs_run_id_jobs_job_id_steps","tags":["ci"],"parameters":[{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"job_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/pipelines/{pipeline_id}/runs/{run_id}/jobs/{job_id}/steps/{id}":{"patch":{"operationId":"api_v1_pipeline_run_job_step","tags":["ci"],"parameters":[{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"job_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_ci_pipelines_pipeline_id_runs_run_id_jobs_job_id_steps_id_","tags":["ci"],"parameters":[{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"job_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/pipelines/{pipeline_id}/runs/{run_id}/jobs/{job_id}/workspaces":{"get":{"operationId":"api_v1_pipeline_run_job_workspaces","tags":["ci"],"parameters":[{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"job_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_ci_pipelines_pipeline_id_runs_run_id_jobs_job_id_workspaces","tags":["ci"],"parameters":[{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"job_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/pipelines/{pipeline_id}/runs/{run_id}/jobs/{job_id}/workspaces/{id}":{"patch":{"operationId":"api_v1_pipeline_run_job_workspace","tags":["ci"],"parameters":[{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"job_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_ci_pipelines_pipeline_id_runs_run_id_jobs_job_id_workspaces_id_","tags":["ci"],"parameters":[{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"job_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/pipelines/{pipeline_id}/runs/{run_id}/page":{"get":{"operationId":"api_v1_pipeline_run_page","tags":["ci"],"parameters":[{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"CI action run page contract","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["jobs","error"],"properties":{"jobs":{"type":"array","items":{"$ref":"#/components/schemas/CiJobCatalog"}},"error":{"type":"string","nullable":true}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/runner_pools":{"get":{"operationId":"api_v1_runner_pools","tags":["ci"],"parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"CI runner pools","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["runner_pools"],"properties":{"runner_pools":{"type":"array","items":{"type":"object","required":["id","organization_id","network_space_id","slug","name","status","runner_kind","isolation_mode","description","max_concurrency","labels_csv","node_capabilities_csv","elastic_provider_kind","elastic_config_json","bazel_enabled","bazel_properties_json","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"network_space_id":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"runner_kind":{"type":"string"},"isolation_mode":{"type":"string"},"description":{"type":"string","nullable":true},"max_concurrency":{"type":"integer"},"labels_csv":{"type":"string","nullable":true},"node_capabilities_csv":{"type":"string","nullable":true},"elastic_provider_kind":{"type":"string","nullable":true},"elastic_config_json":{"type":"string","nullable":true},"bazel_enabled":{"type":"boolean"},"bazel_properties_json":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_ci_runner_pools","tags":["ci"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/runner_pools/{id}":{"get":{"operationId":"api_v1_runner_pool","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"CI runner pool catalog","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["runner_pool"],"properties":{"runner_pool":{"allOf":[{"type":"object","required":["id","organization_id","network_space_id","slug","name","status","runner_kind","isolation_mode","description","max_concurrency","labels_csv","node_capabilities_csv","elastic_provider_kind","elastic_config_json","bazel_enabled","bazel_properties_json","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"network_space_id":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"runner_kind":{"type":"string"},"isolation_mode":{"type":"string"},"description":{"type":"string","nullable":true},"max_concurrency":{"type":"integer"},"labels_csv":{"type":"string","nullable":true},"node_capabilities_csv":{"type":"string","nullable":true},"elastic_provider_kind":{"type":"string","nullable":true},"elastic_config_json":{"type":"string","nullable":true},"bazel_enabled":{"type":"boolean"},"bazel_properties_json":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},{"type":"object","required":["runners","runner_count_label","modal_capacity","modal_runner_invocations"],"properties":{"runners":{"type":"array","items":{"type":"object","required":["id","organization_id","ci_runner_pool_id","network_peer_id","slug","name","status","kind","os","architecture","version","labels_csv","node_capabilities_csv","node_certificate_fingerprint_sha256","node_certificate_serial","node_certificate_expires_at","bazel_enabled","bazel_properties_json","last_seen_at","online_at","offline_at","cordoned_at","revoked_at","health_state","schedulable","heartbeat_age_seconds","created_at","updated_at","node_certificate_expires_at_label","last_seen_at_label","online_at_label","offline_at_label","cordoned_at_label","revoked_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_runner_pool_id":{"type":"string"},"network_peer_id":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"kind":{"type":"string"},"os":{"type":"string","nullable":true},"architecture":{"type":"string","nullable":true},"version":{"type":"string","nullable":true},"labels_csv":{"type":"string","nullable":true},"node_capabilities_csv":{"type":"string","nullable":true},"node_certificate_fingerprint_sha256":{"type":"string","nullable":true},"node_certificate_serial":{"type":"string","nullable":true},"node_certificate_expires_at":{"type":"string","format":"date-time","nullable":true},"bazel_enabled":{"type":"boolean"},"bazel_properties_json":{"type":"string","nullable":true},"last_seen_at":{"type":"string","format":"date-time","nullable":true},"online_at":{"type":"string","format":"date-time","nullable":true},"offline_at":{"type":"string","format":"date-time","nullable":true},"cordoned_at":{"type":"string","format":"date-time","nullable":true},"revoked_at":{"type":"string","format":"date-time","nullable":true},"health_state":{"type":"string"},"schedulable":{"type":"boolean"},"heartbeat_age_seconds":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"node_certificate_expires_at_label":{"type":"string","nullable":true},"last_seen_at_label":{"type":"string","nullable":true},"online_at_label":{"type":"string","nullable":true},"offline_at_label":{"type":"string","nullable":true},"cordoned_at_label":{"type":"string","nullable":true},"revoked_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}},"runner_count_label":{"type":"string"},"modal_capacity":{"type":"object","required":["queued_jobs","active_or_pending_leases","inflight_modal_invocations","failed_modal_invocations","deficit"],"properties":{"queued_jobs":{"type":"integer"},"active_or_pending_leases":{"type":"integer"},"inflight_modal_invocations":{"type":"integer"},"failed_modal_invocations":{"type":"integer"},"deficit":{"type":"integer"}}},"modal_runner_invocations":{"type":"array","maxItems":50,"items":{"type":"object","required":["id","organization_id","ci_runner_pool_id","ci_runner_id","ci_runner_lease_id","ci_pipeline_run_id","ci_job_id","status","modal_app_name","modal_function_name","modal_environment_name","modal_call_id","modal_sandbox_id","runtime_kind","image_version","failure_kind","runner_slug","resource_class","cpu_millicores","memory_mb","ephemeral_disk_mb","retry_count","last_error","spawned_at","claimed_at","finished_at","created_at","updated_at","spawned_at_label","claimed_at_label","finished_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_runner_pool_id":{"type":"string"},"ci_runner_id":{"type":"string","nullable":true},"ci_runner_lease_id":{"type":"string","nullable":true},"ci_pipeline_run_id":{"type":"string","nullable":true},"ci_job_id":{"type":"string","nullable":true},"status":{"type":"string"},"modal_app_name":{"type":"string"},"modal_function_name":{"type":"string"},"modal_environment_name":{"type":"string","nullable":true},"modal_call_id":{"type":"string","nullable":true},"modal_sandbox_id":{"type":"string","nullable":true},"runtime_kind":{"type":"string","enum":["modal_function","modal_vm_sandbox"]},"image_version":{"type":"string"},"failure_kind":{"type":"string","enum":["provider","bootstrap","job","transport"],"nullable":true},"runner_slug":{"type":"string"},"resource_class":{"type":"string"},"cpu_millicores":{"type":"integer"},"memory_mb":{"type":"integer"},"ephemeral_disk_mb":{"type":"integer"},"retry_count":{"type":"integer"},"last_error":{"type":"string","nullable":true},"spawned_at":{"type":"string","format":"date-time","nullable":true},"claimed_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"spawned_at_label":{"type":"string","nullable":true},"claimed_at_label":{"type":"string","nullable":true},"finished_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}}}}]}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_ci_runner_pools_id_","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"CI runner pool catalog","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["runner_pool"],"properties":{"runner_pool":{"allOf":[{"type":"object","required":["id","organization_id","network_space_id","slug","name","status","runner_kind","isolation_mode","description","max_concurrency","labels_csv","node_capabilities_csv","elastic_provider_kind","elastic_config_json","bazel_enabled","bazel_properties_json","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"network_space_id":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"runner_kind":{"type":"string"},"isolation_mode":{"type":"string"},"description":{"type":"string","nullable":true},"max_concurrency":{"type":"integer"},"labels_csv":{"type":"string","nullable":true},"node_capabilities_csv":{"type":"string","nullable":true},"elastic_provider_kind":{"type":"string","nullable":true},"elastic_config_json":{"type":"string","nullable":true},"bazel_enabled":{"type":"boolean"},"bazel_properties_json":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},{"type":"object","required":["runners","runner_count_label","modal_capacity","modal_runner_invocations"],"properties":{"runners":{"type":"array","items":{"type":"object","required":["id","organization_id","ci_runner_pool_id","network_peer_id","slug","name","status","kind","os","architecture","version","labels_csv","node_capabilities_csv","node_certificate_fingerprint_sha256","node_certificate_serial","node_certificate_expires_at","bazel_enabled","bazel_properties_json","last_seen_at","online_at","offline_at","cordoned_at","revoked_at","health_state","schedulable","heartbeat_age_seconds","created_at","updated_at","node_certificate_expires_at_label","last_seen_at_label","online_at_label","offline_at_label","cordoned_at_label","revoked_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_runner_pool_id":{"type":"string"},"network_peer_id":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"kind":{"type":"string"},"os":{"type":"string","nullable":true},"architecture":{"type":"string","nullable":true},"version":{"type":"string","nullable":true},"labels_csv":{"type":"string","nullable":true},"node_capabilities_csv":{"type":"string","nullable":true},"node_certificate_fingerprint_sha256":{"type":"string","nullable":true},"node_certificate_serial":{"type":"string","nullable":true},"node_certificate_expires_at":{"type":"string","format":"date-time","nullable":true},"bazel_enabled":{"type":"boolean"},"bazel_properties_json":{"type":"string","nullable":true},"last_seen_at":{"type":"string","format":"date-time","nullable":true},"online_at":{"type":"string","format":"date-time","nullable":true},"offline_at":{"type":"string","format":"date-time","nullable":true},"cordoned_at":{"type":"string","format":"date-time","nullable":true},"revoked_at":{"type":"string","format":"date-time","nullable":true},"health_state":{"type":"string"},"schedulable":{"type":"boolean"},"heartbeat_age_seconds":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"node_certificate_expires_at_label":{"type":"string","nullable":true},"last_seen_at_label":{"type":"string","nullable":true},"online_at_label":{"type":"string","nullable":true},"offline_at_label":{"type":"string","nullable":true},"cordoned_at_label":{"type":"string","nullable":true},"revoked_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}},"runner_count_label":{"type":"string"},"modal_capacity":{"type":"object","required":["queued_jobs","active_or_pending_leases","inflight_modal_invocations","failed_modal_invocations","deficit"],"properties":{"queued_jobs":{"type":"integer"},"active_or_pending_leases":{"type":"integer"},"inflight_modal_invocations":{"type":"integer"},"failed_modal_invocations":{"type":"integer"},"deficit":{"type":"integer"}}},"modal_runner_invocations":{"type":"array","maxItems":50,"items":{"type":"object","required":["id","organization_id","ci_runner_pool_id","ci_runner_id","ci_runner_lease_id","ci_pipeline_run_id","ci_job_id","status","modal_app_name","modal_function_name","modal_environment_name","modal_call_id","modal_sandbox_id","runtime_kind","image_version","failure_kind","runner_slug","resource_class","cpu_millicores","memory_mb","ephemeral_disk_mb","retry_count","last_error","spawned_at","claimed_at","finished_at","created_at","updated_at","spawned_at_label","claimed_at_label","finished_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_runner_pool_id":{"type":"string"},"ci_runner_id":{"type":"string","nullable":true},"ci_runner_lease_id":{"type":"string","nullable":true},"ci_pipeline_run_id":{"type":"string","nullable":true},"ci_job_id":{"type":"string","nullable":true},"status":{"type":"string"},"modal_app_name":{"type":"string"},"modal_function_name":{"type":"string"},"modal_environment_name":{"type":"string","nullable":true},"modal_call_id":{"type":"string","nullable":true},"modal_sandbox_id":{"type":"string","nullable":true},"runtime_kind":{"type":"string","enum":["modal_function","modal_vm_sandbox"]},"image_version":{"type":"string"},"failure_kind":{"type":"string","enum":["provider","bootstrap","job","transport"],"nullable":true},"runner_slug":{"type":"string"},"resource_class":{"type":"string"},"cpu_millicores":{"type":"integer"},"memory_mb":{"type":"integer"},"ephemeral_disk_mb":{"type":"integer"},"retry_count":{"type":"integer"},"last_error":{"type":"string","nullable":true},"spawned_at":{"type":"string","format":"date-time","nullable":true},"claimed_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"spawned_at_label":{"type":"string","nullable":true},"claimed_at_label":{"type":"string","nullable":true},"finished_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}}}}]}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"status":{"type":"string"},"runner_kind":{"type":"string"},"isolation_mode":{"type":"string"},"description":{"type":"string","nullable":true},"max_concurrency":{"type":"integer"},"labels_csv":{"type":"string","nullable":true},"node_capabilities_csv":{"type":"string","nullable":true},"elastic_provider_kind":{"type":"string","nullable":true},"elastic_config_json":{"type":"string","nullable":true}}}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_ci_runner_pools_id_","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/runner_pools/{id}/promote_reconciliation_runtime":{"post":{"operationId":"promote_reconciliation_runtime_api_v1_runner_pool","tags":["ci"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Verified runtime promoted for future reconciliation generations","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["runner_pool_id","runtime"],"properties":{"runner_pool_id":{"type":"string"},"runtime":{"type":"object","required":["image_id","image_version","runtime_kind","retained_reconciliation_images"],"properties":{"image_id":{"type":"string"},"image_version":{"type":"string"},"runtime_kind":{"type":"string"},"retained_reconciliation_images":{"type":"boolean"}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Platform administrator required"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"Runtime verification or expected configuration no longer matches"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["expected_image_version","image_version"],"properties":{"expected_image_version":{"type":"string"},"image_version":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Promote a verified reconciliation image for a system runner pool","description":"Platform administrators only. Verifies deployed retained-image support and rejects concurrent pool configuration changes."}},"/api/v1/ci/runner_pools/{runner_pool_id}/node_enrollment_tokens":{"get":{"operationId":"api_v1_runner_pool_node_enrollment_tokens","tags":["ci"],"parameters":[{"name":"runner_pool_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"CI node enrollment tokens","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["node_enrollment_tokens"],"properties":{"node_enrollment_tokens":{"type":"array","items":{"type":"object","required":["id","organization_id","ci_runner_pool_id","creator_user_id","name","description","status","kind","capabilities_csv","token_hint","usage_count","expires_at","last_used_at","revoked_at","raw_token","created_at","updated_at","expires_at_label","last_used_at_label","created_at_label","updated_at_label","usage_count_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_runner_pool_id":{"type":"string"},"creator_user_id":{"type":"string","nullable":true},"name":{"type":"string"},"description":{"type":"string","nullable":true},"status":{"type":"string"},"kind":{"type":"string"},"capabilities_csv":{"type":"string","nullable":true},"token_hint":{"type":"string"},"usage_count":{"type":"integer"},"expires_at":{"type":"string","format":"date-time","nullable":true},"last_used_at":{"type":"string","format":"date-time","nullable":true},"revoked_at":{"type":"string","format":"date-time","nullable":true},"raw_token":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"expires_at_label":{"type":"string","nullable":true},"last_used_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true},"usage_count_label":{"type":"string"}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_ci_runner_pools_runner_pool_id_node_enrollment_tokens","tags":["ci"],"parameters":[{"name":"runner_pool_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"CI node enrollment token","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["node_enrollment_token"],"properties":{"node_enrollment_token":{"type":"object","required":["id","organization_id","ci_runner_pool_id","creator_user_id","name","description","status","kind","capabilities_csv","token_hint","usage_count","expires_at","last_used_at","revoked_at","raw_token","created_at","updated_at","expires_at_label","last_used_at_label","created_at_label","updated_at_label","usage_count_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_runner_pool_id":{"type":"string"},"creator_user_id":{"type":"string","nullable":true},"name":{"type":"string"},"description":{"type":"string","nullable":true},"status":{"type":"string"},"kind":{"type":"string"},"capabilities_csv":{"type":"string","nullable":true},"token_hint":{"type":"string"},"usage_count":{"type":"integer"},"expires_at":{"type":"string","format":"date-time","nullable":true},"last_used_at":{"type":"string","format":"date-time","nullable":true},"revoked_at":{"type":"string","format":"date-time","nullable":true},"raw_token":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"expires_at_label":{"type":"string","nullable":true},"last_used_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true},"usage_count_label":{"type":"string"}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"CI node enrollment token","content":{"application/json":{"schema":{"type":"object","required":["node_enrollment_token"],"properties":{"node_enrollment_token":{"type":"object","required":["id","organization_id","ci_runner_pool_id","creator_user_id","name","description","status","kind","capabilities_csv","token_hint","usage_count","expires_at","last_used_at","revoked_at","raw_token","created_at","updated_at","expires_at_label","last_used_at_label","created_at_label","updated_at_label","usage_count_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_runner_pool_id":{"type":"string"},"creator_user_id":{"type":"string","nullable":true},"name":{"type":"string"},"description":{"type":"string","nullable":true},"status":{"type":"string"},"kind":{"type":"string"},"capabilities_csv":{"type":"string","nullable":true},"token_hint":{"type":"string"},"usage_count":{"type":"integer"},"expires_at":{"type":"string","format":"date-time","nullable":true},"last_used_at":{"type":"string","format":"date-time","nullable":true},"revoked_at":{"type":"string","format":"date-time","nullable":true},"raw_token":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"expires_at_label":{"type":"string","nullable":true},"last_used_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true},"usage_count_label":{"type":"string"}}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["name"],"properties":{"name":{"type":"string"},"capabilities_csv":{"type":"string"},"expires_at":{"type":"string","format":"date-time","nullable":true},"kind":{"type":"string"},"description":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/runner_pools/{runner_pool_id}/node_enrollment_tokens/{id}/revoke":{"post":{"operationId":"revoke_api_v1_runner_pool_node_enrollment_token","tags":["ci"],"parameters":[{"name":"runner_pool_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"CI node enrollment token","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["node_enrollment_token"],"properties":{"node_enrollment_token":{"type":"object","required":["id","organization_id","ci_runner_pool_id","creator_user_id","name","description","status","kind","capabilities_csv","token_hint","usage_count","expires_at","last_used_at","revoked_at","raw_token","created_at","updated_at","expires_at_label","last_used_at_label","created_at_label","updated_at_label","usage_count_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_runner_pool_id":{"type":"string"},"creator_user_id":{"type":"string","nullable":true},"name":{"type":"string"},"description":{"type":"string","nullable":true},"status":{"type":"string"},"kind":{"type":"string"},"capabilities_csv":{"type":"string","nullable":true},"token_hint":{"type":"string"},"usage_count":{"type":"integer"},"expires_at":{"type":"string","format":"date-time","nullable":true},"last_used_at":{"type":"string","format":"date-time","nullable":true},"revoked_at":{"type":"string","format":"date-time","nullable":true},"raw_token":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"expires_at_label":{"type":"string","nullable":true},"last_used_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true},"usage_count_label":{"type":"string"}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/runner_pools/{runner_pool_id}/runners":{"get":{"operationId":"api_v1_runner_pool_runners","tags":["ci"],"parameters":[{"name":"runner_pool_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_ci_runner_pools_runner_pool_id_runners","tags":["ci"],"parameters":[{"name":"runner_pool_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/runner_pools/{runner_pool_id}/runners/{id}":{"get":{"operationId":"api_v1_runner_pool_runner","tags":["ci"],"parameters":[{"name":"runner_pool_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_ci_runner_pools_runner_pool_id_runners_id_","tags":["ci"],"parameters":[{"name":"runner_pool_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_ci_runner_pools_runner_pool_id_runners_id_","tags":["ci"],"parameters":[{"name":"runner_pool_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/runner_pools/{runner_pool_id}/runners/{id}/heartbeat":{"post":{"operationId":"heartbeat_api_v1_runner_pool_runner","tags":["ci"],"parameters":[{"name":"runner_pool_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/runner_pools/{runner_pool_id}/runners/{runner_id}/leases":{"get":{"operationId":"api_v1_runner_pool_runner_leases","tags":["ci"],"parameters":[{"name":"runner_pool_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"runner_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_ci_runner_pools_runner_pool_id_runners_runner_id_leases","tags":["ci"],"parameters":[{"name":"runner_pool_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"runner_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/runner_pools/{runner_pool_id}/runners/{runner_id}/leases/{id}/claim":{"post":{"operationId":"claim_api_v1_runner_pool_runner_lease","tags":["ci"],"parameters":[{"name":"runner_pool_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"runner_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/runner_pools/{runner_pool_id}/runners/{runner_id}/leases/{id}/heartbeat":{"post":{"operationId":"heartbeat_api_v1_runner_pool_runner_lease","tags":["ci"],"parameters":[{"name":"runner_pool_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"runner_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/ci/runner_pools/{runner_pool_id}/runners/{runner_id}/leases/{id}/release":{"post":{"operationId":"release_api_v1_runner_pool_runner_lease","tags":["ci"],"parameters":[{"name":"runner_pool_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"runner_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/clawder/devices/enterprise_admission":{"post":{"operationId":"api_v1_clawder_devices_enterprise_admission","tags":["clawder"],"parameters":[],"responses":{"200":{"description":"Current selected native route and physical enrollment","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["authorized","execution_available","binding","gateway_url","device"],"properties":{"authorized":{"type":"boolean","enum":[true]},"execution_available":{"type":"boolean","enum":[false]},"binding":{"$ref":"#/components/schemas/DeviceAgentConnectionBinding"},"gateway_url":{"type":"string","description":"The observed private OCE gateway endpoint, returned only to the dedicated ingress service."},"transport_cleanup_ms":{"type":["integer","null"],"minimum":1,"maximum":30000,"description":"Remaining bounded cleanup lifetime for existing transports after a grant change. Null for current consent; this never authorizes execution."},"device":{"type":"object","additionalProperties":false,"required":["device_id","native_device_id","pairing_generation","public_key","environment","channel"],"properties":{"device_id":{"type":"string"},"native_device_id":{"type":"string","pattern":"^[a-f0-9]{64}$"},"pairing_generation":{"type":"integer","minimum":1},"public_key":{"type":"string"},"environment":{"type":"string"},"channel":{"type":"string","enum":["dev","alpha","release"]}}}}}}}},"401":{"description":"Dedicated ingress credential required"},"403":{"description":"Computer, agent runtime or consent changed"},"422":{"description":"Invalid request fields"},"503":{"description":"Ingress admission is not configured"}},"security":[{"DeviceIngressServiceKey":[]}],"summary":"Read current OCE native device routing admission","description":"Namespace-scoped ingress-service protocol. A relay credential may read the currently authorized computer and selected OCE runtime only inside its current organization and namespace generation. Only established socket renewals may request a bounded cancellation-settlement window after a grant changes; new sockets, transfers and execution remain strictly admitted. It cannot mint a native bootstrap, execute commands or use an operator bridge. Native device, worker and transfer credentials remain mandatory.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["connection","device_id","native_device_id","pairing_generation"],"properties":{"connection":{"type":"string","maxLength":1800},"renewal":{"type":"boolean","enum":[true],"description":"Internal relay flag for an already-admitted socket renewal only; never set for initial admission, native hello or transfers."},"device_id":{"type":"string"},"native_device_id":{"type":"string","pattern":"^[a-f0-9]{64}$"},"pairing_generation":{"type":"integer","minimum":1}}}}}},"deprecated":true}},"/api/v1/clawder/devices/enterprise_relays":{"get":{"operationId":"api_v1_clawder_devices_enterprise_relays","tags":["clawder"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/clawder/harness_proxy/anthropic/v1/messages":{"post":{"operationId":"clawderHarnessProxyAnthropicMessages","tags":["clawder","Persistent agents"],"parameters":[],"responses":{"200":{"description":"The provider's response, streamed unchanged.","content":{"text/event-stream":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Invalid or expired stand-in token"},"403":{"description":"The turn ended, the thread, bot or credential no longer allows model access, or the path does not take this credential"},"413":{"description":"Request body over 24 MB"},"502":{"description":"The provider could not be reached"},"503":{"description":"The proxy is busy, or the subscription is refreshing (with Retry-After)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"clawderHarnessProxy":[]}],"description":"Private model proxy for a sandbox thread's coding-agent CLI. Its only credential is the turn's stand-in token (comharness_), sent as x-api-key or a bearer token; browser sessions, personal tokens and bridge tokens are not accepted. Rails adds the bot's model credential and forwards the request to the provider; the provider's status, retry and rate-limit headers and body come back unchanged.","x-internal":true,"summary":"Forward a coding agent's Anthropic Messages request","deprecated":true}},"/api/v1/clawder/harness_proxy/anthropic/v1/messages/count_tokens":{"post":{"operationId":"clawderHarnessProxyAnthropicCountTokens","tags":["clawder","Persistent agents"],"parameters":[],"responses":{"200":{"description":"The provider's response, streamed unchanged.","content":{"text/event-stream":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Invalid or expired stand-in token"},"403":{"description":"The turn ended, the thread, bot or credential no longer allows model access, or the path does not take this credential"},"413":{"description":"Request body over 24 MB"},"502":{"description":"The provider could not be reached"},"503":{"description":"The proxy is busy, or the subscription is refreshing (with Retry-After)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"clawderHarnessProxy":[]}],"description":"Private model proxy for a sandbox thread's coding-agent CLI. Its only credential is the turn's stand-in token (comharness_), sent as x-api-key or a bearer token; browser sessions, personal tokens and bridge tokens are not accepted. Rails adds the bot's model credential and forwards the request to the provider; the provider's status, retry and rate-limit headers and body come back unchanged.","x-internal":true,"summary":"Forward a coding agent's Anthropic token count request","deprecated":true}},"/api/v1/clawder/harness_proxy/chatgpt/codex/responses":{"post":{"operationId":"clawderHarnessProxyChatgptCodexResponses","tags":["clawder","Persistent agents"],"parameters":[],"responses":{"200":{"description":"The provider's response, streamed unchanged.","content":{"text/event-stream":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Invalid or expired stand-in token"},"403":{"description":"The turn ended, the thread, bot or credential no longer allows model access, or the path does not take this credential"},"413":{"description":"Request body over 24 MB"},"502":{"description":"The provider could not be reached"},"503":{"description":"The proxy is busy, or the subscription is refreshing (with Retry-After)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"clawderHarnessProxy":[]}],"description":"Private model proxy for a sandbox thread's coding-agent CLI. Its only credential is the turn's stand-in token (comharness_), sent as x-api-key or a bearer token; browser sessions, personal tokens and bridge tokens are not accepted. Rails adds the bot's model credential and forwards the request to the provider; the provider's status, retry and rate-limit headers and body come back unchanged.","x-internal":true,"summary":"Forward a coding agent's ChatGPT sign-in Responses request","deprecated":true}},"/api/v1/clawder/harness_proxy/openai/v1/responses":{"post":{"operationId":"clawderHarnessProxyOpenaiResponses","tags":["clawder","Persistent agents"],"parameters":[],"responses":{"200":{"description":"The provider's response, streamed unchanged.","content":{"text/event-stream":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Invalid or expired stand-in token"},"403":{"description":"The turn ended, the thread, bot or credential no longer allows model access, or the path does not take this credential"},"413":{"description":"Request body over 24 MB"},"502":{"description":"The provider could not be reached"},"503":{"description":"The proxy is busy, or the subscription is refreshing (with Retry-After)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"clawderHarnessProxy":[]}],"description":"Private model proxy for a sandbox thread's coding-agent CLI. Its only credential is the turn's stand-in token (comharness_), sent as x-api-key or a bearer token; browser sessions, personal tokens and bridge tokens are not accepted. Rails adds the bot's model credential and forwards the request to the provider; the provider's status, retry and rate-limit headers and body come back unchanged.","x-internal":true,"summary":"Forward a coding agent's OpenAI Responses request","deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/admission":{"post":{"operationId":"post_api_v1_clawder_organizations_organization_id_admission","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current native execution authority","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"authorized":{"type":"boolean","const":true},"subscription_allowed":{"type":"boolean"},"device_requester":{"type":["object","null"],"properties":{"principal_id":{"type":"string"},"membership_id":{"type":"string"},"input_run_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"execution_available":{"type":"boolean","const":false}},"required":["principal_id","membership_id","input_run_id","execution_available"],"additionalProperties":false},"device_consent":{"type":"object","properties":{"device_id":{"type":"string"},"grant_id":{"type":"string"},"grant_revision":{"type":"integer","minimum":1},"pairing_generation":{"type":"integer","minimum":1},"capability":{"type":"string","enum":["browser","computer","files","harnesses","processes"]},"execution_available":{"type":"boolean","const":false}},"required":["device_id","grant_id","grant_revision","pairing_generation","capability","execution_available"],"additionalProperties":false},"sandbox_authorized":{"type":"boolean"},"sandbox_generation":{"type":"integer","minimum":1},"device_targets":{"type":"object","additionalProperties":false,"required":["devices","next_cursor"],"properties":{"devices":{"type":"array","maxItems":50,"items":{"type":"object","properties":{"device_id":{"type":"string"},"native_device_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"name":{"type":"string"},"platform":{"type":"string"},"pairing_generation":{"type":"integer","minimum":1},"grant_revision":{"type":["integer","null"],"description":"Null only for an unselected owned computer with no saved grant.","minimum":1}},"required":["device_id","native_device_id","name","platform","pairing_generation","grant_revision"],"additionalProperties":false}},"next_cursor":{"type":["string","null"]}}}},"required":["authorized","subscription_allowed","device_requester","sandbox_authorized","sandbox_generation"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"native_agent_id":{"type":"string"},"job_id":{"type":"string","minLength":1,"maxLength":200},"input_run_id":{"type":"string","minLength":1,"maxLength":200},"device":{"type":"object","properties":{"device_id":{"type":"string","minLength":1,"maxLength":200},"native_device_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"capability":{"type":"string","enum":["browser","computer","files","harnesses","processes"]},"grant_revision":{"type":"integer","minimum":1,"maximum":9223372036854775807},"pairing_generation":{"type":"integer","minimum":1,"maximum":9223372036854775807}},"required":["device_id","native_device_id","capability","grant_revision","pairing_generation"],"additionalProperties":false},"device_targets":{"oneOf":[{"type":"boolean","const":true},{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"include_owned":{"type":"boolean","description":"Include the sender's paired computers; selecting an owned computer initializes its default grant only when no saved policy exists."},"device_id":{"type":"string","minLength":1,"maxLength":200},"cursor":{"type":"string","minLength":1,"maxLength":200},"capability":{"type":"string","enum":["processes","harnesses","computer"]}},"not":{"required":["device_id","cursor"]}}]},"subscription_account_id":{"type":"string","maxLength":200,"description":"Selected personal account; rechecked on every run and tool admission."}},"required":["native_agent_id"]}}}},"security":[{"clawderTenantBridge":[]}],"description":"Private native admission hook. Tenant bridge credentials and host-supplied native identities are required; background jobs recheck their persisted subscription. An optional canonical input run ID resolves the live web requester membership. This metadata does not authorize device execution; unknown inputs and background jobs have no device requester. An optional device request checks the bound sender against the exact device, native key, grant revision, capability, pairing generation and server environment. Device consent is a current product check only; it issues no execution credential and does not replace native invocation authority, leases or local consent.","x-internal":true,"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/apps":{"get":{"operationId":"get_api_v1_clawder_organizations_organization_id_apps","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"native_agent_id","in":"query","required":true,"schema":{"type":"string"},"description":"The calling agent's native id"},{"name":"installed","in":"query","required":false,"schema":{"type":"boolean"},"description":"List manual installs when context is omitted"},{"name":"context","in":"query","required":false,"schema":{"type":"boolean"},"description":"Return a bounded list of recently published and manually installed team apps for agent context"}],"responses":{"200":{"description":"Team app catalog or agent context","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"oneOf":[{"required":["apps"],"properties":{"apps":{"type":"array","items":{"type":"object","additionalProperties":true}}}},{"required":["context_apps"],"properties":{"context_apps":{"type":"array","items":{"type":"object","required":["name","mcp_path"],"properties":{"name":{"type":"string"},"mcp_path":{"type":["string","null"]}}}}}}]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List team apps for the calling agent","deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/apps/{name}/install":{"put":{"operationId":"put_api_v1_clawder_organizations_organization_id_apps_name_install","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"deprecated":true},"delete":{"operationId":"delete_api_v1_clawder_organizations_organization_id_apps_name_install","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/control/admission":{"post":{"operationId":"controlAdmission","tags":["clawder","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current authorized local agent control result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ControlAdmissionResponse"}}}},"400":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"401":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ControlAdmissionInput"}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/devices/admission":{"post":{"operationId":"post_api_v1_clawder_organizations_organization_id_devices_admission","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current registration is eligible for native bootstrap","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"authorized":{"type":"boolean","const":true},"device":{"type":"object","properties":{"device_id":{"type":"string","pattern":"^device_registration_","maxLength":200},"native_device_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"pairing_generation":{"type":"integer","minimum":1,"maximum":9007199254740991},"public_key":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"environment":{"type":"string","pattern":"^[a-z0-9][a-z0-9._-]{0,63}$"},"channel":{"type":"string","enum":["dev","alpha","release"]}},"required":["device_id","native_device_id","pairing_generation","public_key","environment","channel"],"additionalProperties":false},"execution_available":{"type":"boolean","const":false}},"required":["authorized","device","execution_available"]}}}},"401":{"description":"Tenant bridge authentication required"},"403":{"description":"Current device registration required"},"404":{"description":"Device transport rollout is unavailable"},"422":{"description":"Invalid device identity request"},"502":{"description":"Bad gateway"},"503":{"description":"Server device environment is unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"device_id":{"type":"string","pattern":"^device_registration_","maxLength":200},"native_device_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"pairing_generation":{"type":"integer","minimum":1,"maximum":9007199254740991}},"required":["device_id","native_device_id","pairing_generation"]}}}},"security":[{"clawderTenantBridge":[]}],"description":"Private native-node bootstrap admission. Only the ready organization tenant bridge may resolve the current registered native public key. Requires enrollment and transport rollout flags, current owner account and exact enrollment membership, native identity, server environment and pairing generation. Returns no credential or execution grant; callers recheck before disclosing native bootstrap authority. Transport remains disabled by default.","deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/devices/browser_operations":{"post":{"operationId":"post_api_v1_clawder_organizations_organization_id_devices_browser_operations","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Queued for the desktop","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderDeviceBrowserOperationResponse"}}}},"400":{"description":"Request refused","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderDeviceBrowserOperationError"}}}},"403":{"description":"Not the sender's current turn, or the agent is not authorized"},"409":{"description":"Request refused","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderDeviceBrowserOperationError"}}}},"422":{"description":"Request refused","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderDeviceBrowserOperationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderDeviceBrowserOperationInput"}}}},"security":[{"clawderTenantBridge":[]}],"summary":"Ask the sender's Composal Desktop to use its in-app browser","description":"Only on a turn a person sent. Rails selects the sender's computer whose desktop is listening, unless device_id names one of theirs, and checks the agent's browser grant.","deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/devices/browser_operations/{operation_id}":{"post":{"operationId":"post_api_v1_clawder_organizations_organization_id_devices_browser_operations_operation_id_","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current state, with the desktop's answer once it has one","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderDeviceBrowserOperationResponse"}}}},"403":{"description":"Not the sender's current turn, or the agent is not authorized"},"404":{"description":"No such request for this turn"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["native_agent_id","input_run_id"],"properties":{"native_agent_id":{"type":"string","minLength":1,"maxLength":512},"input_run_id":{"type":"string","minLength":1,"maxLength":512}}}}}},"security":[{"clawderTenantBridge":[]}],"summary":"Read an in-app browser request this turn made","deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/devices/command_events":{"post":{"operationId":"post_api_v1_clawder_organizations_organization_id_devices_command_events","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Completion telemetry acknowledgement; never an execution permit","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["recorded"],"properties":{"recorded":{"type":"boolean"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["native_agent_id","input_run_id","device_id","operation_key","outcome"],"properties":{"native_agent_id":{"type":"string","minLength":1,"maxLength":200},"input_run_id":{"type":"string","minLength":1,"maxLength":200},"device_id":{"type":"string","minLength":1,"maxLength":200},"operation_key":{"type":"string","pattern":"^[0-9a-f]{64}$"},"outcome":{"type":"string","enum":["completed","failed"]}}}}}},"security":[{"clawderTenantBridge":[]}],"summary":"Record reported computer command completion","deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/inference/responses":{"post":{"operationId":"clawderTenantResponses","tags":["clawder","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Provider Responses events streamed unchanged. Provider failures after handoff use sanitized SSE error events.","content":{"text/event-stream":{"schema":{"type":"string"}}}},"401":{"description":"Invalid tenant worker credential"},"403":{"description":"Tenant runtime authority revoked"},"404":{"description":"Unknown organization"},"422":{"description":"Invalid stateless Responses request"},"503":{"description":"Model access unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"model":{"type":"string","enum":["openrouter/auto","gpt-6.1-sol","gpt-6.1-terra","gpt-6-luna","minimax/minimax-m3.1-flash","moonshotai/kimi-k3","moonshotai/kimi-k3.1-pro","z-ai/glm-5.3-flash","deepseek/deepseek-v4.1-flash-1017","deepseek/deepseek-v4.1-flash-abliterated"]},"stream":{"type":"boolean","const":true},"store":{"type":"boolean","const":false}},"required":["model","stream","store"]}}}},"security":[{"clawderTenantBridge":[]}],"summary":"Stream a native tenant harness model request","description":"Private managed-worker transport. Requires the exact ready tenant's bridge credential and an active member-owned V2 runtime. Browser sessions and personal tokens do not authorize this operation. Native hooks independently admit every agent run.","x-internal":true,"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/interactions":{"post":{"operationId":"post_api_v1_clawder_organizations_organization_id_interactions","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/library":{"post":{"operationId":"clawderLibraryPublish","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Published file","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"artifact":{"$ref":"#/components/schemas/ClawderLibraryItem"}},"required":["artifact"]}}}},"401":{"description":"Invalid tenant worker credential"},"403":{"description":"Agent runtime authority revoked"},"404":{"description":"Unknown agent or organization"},"422":{"description":"Invalid generated file"},"502":{"description":"Bad gateway"},"409":{"description":"Publication identity already used for another file"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"native_agent_id":{"type":"string"},"publication_key":{"type":"string"},"filename":{"type":"string"},"title":{"type":"string"},"content_type":{"type":"string"},"content_base64":{"type":"string"},"conversation_id":{"type":"string"}},"required":["native_agent_id","publication_key","filename","content_type","content_base64"]}}}},"security":[{"clawderTenantBridge":[]}],"summary":"Save an agent generated file","description":"Private managed-worker upload. Requires the ready tenant bridge credential and active native agent identity.","x-internal":true,"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/parallel/v1/search":{"post":{"operationId":"clawderTenantParallelSearch","tags":["clawder","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Parallel search results, including source URLs and excerpts, session identity and provider usage.","content":{"application/json":{"schema":{"type":"object","required":["results"],"properties":{"results":{"type":"array","items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}}}},"401":{"description":"Invalid tenant worker credential"},"403":{"description":"Tenant runtime authority revoked"},"404":{"description":"Unknown organization"},"422":{"description":"Invalid search request"},"429":{"description":"Tenant or provider search rate limit"},"503":{"description":"Search access unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"objective":{"type":"string"},"search_queries":{"type":"array","items":{"type":"string"}},"mode":{"type":"string","enum":["turbo","basic","advanced"],"default":"advanced"},"session_id":{"type":"string"},"client_model":{"type":"string"},"advanced_settings":{"type":"object","properties":{"max_results":{"type":"integer","minimum":1,"maximum":40}},"additionalProperties":true}}}}}},"security":[{"clawderSearchBridge":[]}],"summary":"Search the web for a managed V2 tenant","description":"Private Parallel-compatible transport. Requires a ready tenant's bridge credential in x-api-key and an active member-owned V2 runtime. Rails supplies the Parallel API key and records organization usage. Omitted mode defaults to advanced.","x-internal":true,"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/relay/files/{operation_id}":{"post":{"operationId":"admitRelayFileTransfer","tags":["clawder","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current authority for this exact file and direction","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["authorized"],"properties":{"authorized":{"type":"boolean","const":true}}}}}},"401":{"description":"Invalid worker credential"},"403":{"description":"Receipt, file, direction, payload or authority is unavailable"},"404":{"description":"Receipt does not belong to this organization"},"422":{"description":"Invalid bounded admission request"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["file_id","direction"],"properties":{"file_id":{"type":"string","pattern":"^[0-9]{1,30}$"},"direction":{"type":"string","enum":["put","get"]}}}}}},"security":[{"clawderTenantBridge":[]}],"summary":"Recheck one receipt-bound Relay file transfer","description":"Private tenant-worker admission after file capability verification. Reads the completed file tool receipt and current requester or native source authority. Does not dispatch another tool or retry a write.","x-internal":true,"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/relay/integrations/{operation_id}":{"post":{"operationId":"authorizeNativeRelayIntegration","tags":["clawder","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"clawderTenantBridge":[]}],"summary":"Recheck current source integration authority","description":"Private worker transport verifies the original integration creator, requester, source and consent before integration delivery.","x-internal":true,"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/relay/native-deliveries/{operation_id}":{"post":{"operationId":"captureNativeRelayDelivery","tags":["clawder","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Durable original capture receipt, including discarded or expired messages","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRelayDeliveryReceipt"}}}},"401":{"description":"Invalid worker credential"},"404":{"description":"Unknown source in this organization"},"409":{"description":"This message already has different captured bytes"},"422":{"description":"Invalid bounded native message representation"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["scope","message","sender_operation_id"],"properties":{"sender_operation_id":{"type":["string","null"],"pattern":"^device_control_operation_[A-Za-z0-9_-]{1,160}$"},"scope":{"type":"string","pattern":"^[0-9a-f]{64}$"},"message":{"type":"object","additionalProperties":false,"required":["id","sender","channel_id","thread_id","text","text_bytes","text_digest","text_omitted","created_at"],"properties":{"id":{"type":"string","pattern":"^[0-9]{1,30}$"},"sender":{"type":"string","pattern":"^(v2-agent|operator-[0-9a-f]{16}|(codex|claude)-[0-9a-f]{16})$"},"channel_id":{"type":"string","pattern":"^([0-9]{1,30}|dmch_[0-9a-f]{24})$"},"thread_id":{"type":["string","null"],"pattern":"^[0-9]{1,30}$"},"text":{"type":["string","null"],"description":"Exact inline text up to 8192 UTF-8 bytes","or null when omitted. Fetch omitted text through the original Relay references.":null},"text_bytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"text_digest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"text_omitted":{"type":"boolean"},"created_at":{"type":"string","format":"date-time","maxLength":64}}}}}}}},"security":[{"clawderTenantBridge":[]}],"summary":"Capture one Relay message for its enrolled native conversation","description":"Private tenant-worker transport. Retains one durable message receipt before the worker advances its observation cursor. Current source, requester, membership, grant and pairing govern native delivery. Replaying the same message retains one original device-control receipt; uncertain native writes are never retried.","x-internal":true,"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/relay/notifications/{operation_id}":{"post":{"operationId":"captureNativeRelayNotification","tags":["clawder","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Durable original capture receipt, including discarded or expired messages","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["id","state","input_run_id","retryable"],"properties":{"id":{"type":"string","pattern":"^agent_relay_notification_"},"state":{"type":"string","enum":["pending","dispatching","accepted","uncertain","discarded","expired"]},"input_run_id":{"type":["string","null"]},"retryable":{"type":"boolean","const":false}}}}}},"401":{"description":"Invalid worker credential"},"404":{"description":"Unknown source in this organization"},"409":{"description":"This message already has different captured bytes"},"422":{"description":"Invalid bounded native message representation"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["scope","message"],"properties":{"scope":{"type":"string","pattern":"^[0-9a-f]{64}$"},"message":{"type":"object","additionalProperties":false,"required":["id","sender","channel_id","thread_id","text","text_bytes","text_digest","text_omitted","created_at"],"properties":{"id":{"type":"string","pattern":"^[0-9]{1,30}$"},"sender":{"type":"string","pattern":"^(codex|claude)-[0-9a-f]{16}$"},"channel_id":{"type":"string","pattern":"^([0-9]{1,30}|dmch_[0-9a-f]{24})$"},"thread_id":{"type":["string","null"],"pattern":"^[0-9]{1,30}$"},"text":{"type":["string","null"],"description":"Exact inline text up to 8192 UTF-8 bytes","or null when omitted. Fetch omitted text through the original Relay references.":null},"text_bytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"text_digest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"text_omitted":{"type":"boolean"},"created_at":{"type":"string","format":"date-time","maxLength":64}}}}}}}},"security":[{"clawderTenantBridge":[]}],"summary":"Capture one native Relay message for its V2 conversation","description":"Private tenant-worker transport. Retains one durable message receipt before the worker advances its observation cursor. Current source, requester, membership, grant and pairing govern delivery and queued-run admission. Replaying the same message never starts another input; uncertain dispatch is reconciled by reading its original run.","x-internal":true,"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/relay/peers/{operation_id}":{"post":{"operationId":"nativeRelayPeerRequest","tags":["clawder","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authorized MCP result or durable native Relay operation receipt","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Invalid worker credential"},"403":{"description":"Native source authority revoked"},"404":{"description":"Unknown source or receipt"},"409":{"description":"Stable call key belongs to different arguments"},"422":{"description":"Invalid bounded native Relay request"},"503":{"description":"Relay transport unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/NativeRelayPeerInput"}}}},"security":[{"clawderTenantBridge":[]}],"summary":"Admit a source-bound native Relay participant","description":"Private tenant-worker transport after native bearer authentication. Rechecks the exact thread-create receipt, provider consent, pairing and requester before dispatch and result release. Tool calls retain durable source-scoped receipts; uncertain writes are never retried automatically.","x-internal":true,"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/run_outcomes":{"post":{"operationId":"post_api_v1_clawder_organizations_organization_id_run_outcomes","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/sandbox":{"post":{"operationId":"clawderTenantSandbox","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current sandbox authority and private provider configuration","content":{"application/json":{"schema":{"type":"object","properties":{"integration_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"generation":{"type":"integer"},"status":{"type":"string"},"provider":{"type":"string"},"workspace_key":{"type":"string"},"remote_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"account_id":{"type":["string","null"]},"credentials":{"type":["object","null"],"additionalProperties":{"type":"string"}},"configuration":{"type":"object","additionalProperties":true},"allocation_token":{"type":["string","null"]},"may_create":{"type":"boolean"}},"required":["integration_id","generation","status","provider","workspace_key","remote_id","account_id","credentials","configuration"],"additionalProperties":false}}}},"401":{"description":"Invalid tenant bridge credential"},"403":{"description":"Revoked runtime authority"},"404":{"description":"Unknown organization or native agent"},"409":{"description":"Disconnected or superseded sandbox selection"},"422":{"description":"Invalid sandbox request"}},"security":[{"clawderTenantBridge":[]}],"summary":"Resolve or record the current agent sandbox allocation","description":"Private tenant worker transport. Provider credentials are never returned to browser sessions or personal API tokens. Resolve reads configuration, claim admits at most one allocation creator, and complete records the provider receipt.","x-internal":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"native_agent_id":{"type":"string"},"operation":{"type":"string","const":"resolve"},"generation":{"type":"integer","minimum":1},"allocation_token":{"type":"string","minLength":48,"maxLength":48},"remote_id":{"type":"string","minLength":1,"maxLength":200}},"required":["native_agent_id","operation"]},{"type":"object","additionalProperties":false,"properties":{"native_agent_id":{"type":"string"},"operation":{"type":"string","const":"claim"},"generation":{"type":"integer","minimum":1},"allocation_token":{"type":"string","minLength":48,"maxLength":48},"remote_id":{"type":"string","minLength":1,"maxLength":200}},"required":["native_agent_id","operation","generation"]},{"type":"object","additionalProperties":false,"properties":{"native_agent_id":{"type":"string"},"operation":{"type":"string","const":"complete"},"generation":{"type":"integer","minimum":1},"allocation_token":{"type":"string","minLength":48,"maxLength":48},"remote_id":{"type":"string","minLength":1,"maxLength":200}},"required":["native_agent_id","operation","generation","allocation_token","remote_id"]}]}}}},"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/sites":{"get":{"operationId":"get_api_v1_clawder_organizations_organization_id_sites","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"native_agent_id","in":"query","required":true,"schema":{"type":"string"},"description":"The calling agent's native id"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List the organization's Composal Pages sites (tenant bridge token)","deprecated":true},"post":{"operationId":"post_api_v1_clawder_organizations_organization_id_sites","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/sites/{name}":{"patch":{"operationId":"patch_api_v1_clawder_organizations_organization_id_sites_name_","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"deprecated":true},"delete":{"operationId":"delete_api_v1_clawder_organizations_organization_id_sites_name_","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/sites/{name}/access_keys":{"get":{"operationId":"get_api_v1_clawder_organizations_organization_id_sites_name_access_keys","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true},"post":{"operationId":"post_api_v1_clawder_organizations_organization_id_sites_name_access_keys","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/sites/{name}/access_keys/{key_id}":{"delete":{"operationId":"delete_api_v1_clawder_organizations_organization_id_sites_name_access_keys_key_id_","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"key_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/sites/{name}/app":{"put":{"operationId":"put_api_v1_clawder_organizations_organization_id_sites_name_app","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"deprecated":true},"delete":{"operationId":"delete_api_v1_clawder_organizations_organization_id_sites_name_app","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/sites/{name}/marketplace_template":{"put":{"operationId":"put_api_v1_clawder_organizations_organization_id_sites_name_marketplace_template","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/sites/{name}/secrets/{secret_name}":{"put":{"operationId":"put_api_v1_clawder_organizations_organization_id_sites_name_secrets_secret_name_","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"secret_name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["native_agent_id","value"],"properties":{"native_agent_id":{"type":"string"},"value":{"type":"string","maxLength":5120}}}}}},"security":[{"bearerAuth":[]}],"summary":"Set a Composal Pages Worker secret (tenant bridge token)","deprecated":true},"delete":{"operationId":"delete_api_v1_clawder_organizations_organization_id_sites_name_secrets_secret_name_","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"secret_name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/sites/{name}/token":{"post":{"operationId":"post_api_v1_clawder_organizations_organization_id_sites_name_token","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/subscriptions/authorize":{"post":{"operationId":"clawderSubscriptionAuthorize","tags":["clawder","Clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Private worker subscription authorization; refresh credentials are never returned.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"authorized":{"type":"boolean","const":true},"provider":{"type":"string","enum":["anthropic","openai","xai"]},"api_key":{"type":"string","writeOnly":true},"mode":{"type":"string","enum":["token","oauth"]},"expires_at":{"type":"number"},"account_id":{"type":["string","null"]},"subscription_type":{"type":["string","null"]},"rate_limit_tier":{"type":["string","null"]}},"required":["authorized","provider"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"native_agent_id":{"type":"string","maxLength":200},"account_id":{"type":"string","maxLength":200},"token":{"type":"boolean"}},"required":["native_agent_id","account_id","token"]}}}},"security":[{"bearerAuth":[]},{"clawderTenantBridge":[]}],"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/subscriptions/selection":{"post":{"operationId":"post_api_v1_clawder_organizations_organization_id_subscriptions_selection","tags":["clawder"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/telemetry/traces":{"post":{"operationId":"clawderEnterpriseTraceExport","tags":["clawder","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OTLP ExportTraceServiceResponse, including any partial-success acknowledgement from the collector.","content":{"application/x-protobuf":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid OTLP payload"},"401":{"description":"Invalid revoked or stale Enterprise runtime credential"},"403":{"description":"Agent binding does not match the runtime credential"},"404":{"description":"Unknown organization"},"413":{"description":"Compressed or uncompressed request exceeds the body limit"},"415":{"description":"Requires application/x-protobuf with optional gzip content encoding"},"429":{"description":"Runtime trace export rate limit"},"503":{"description":"Internal collector is unavailable or not configured; exporter may retry"}},"security":[{"clawderTelemetryCallback":[]}],"summary":"Export native Enterprise traces","description":"Private OTLP/HTTP protobuf transport using the current Enterprise runtime callback credential. Rails verifies runtime authority and stamps resource identity before forwarding to its internal tail sampler. Accepts uncompressed or gzip bodies, bounded to 4 MiB compressed and decompressed. Collector credentials remain in Rails.","x-internal":true,"requestBody":{"required":true,"content":{"application/x-protobuf":{"schema":{"type":"string","format":"binary"}}}},"deprecated":true}},"/api/v1/clawder/organizations/{organization_id}/tools":{"post":{"operationId":"clawderIntegrationTool","tags":["clawder","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Provider tool result","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Invalid worker credential"},"403":{"description":"Connection is not enabled for this agent"},"404":{"description":"Tenant, agent or feature unavailable"},"422":{"description":"Invalid tool call"},"502":{"description":"Bad gateway"},"503":{"description":"Provider unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"native_agent_id":{"type":"string"},"tool":{"type":"string"},"arguments":{"type":"object","additionalProperties":true}},"required":["native_agent_id","tool","arguments"]}}}},"security":[{"bearerAuth":[]}],"description":"Private native tenant-worker endpoint; tenant bridge bearer required. Browser and personal API tokens do not authorize this operation.","deprecated":true}},"/api/v1/cli_events":{"post":{"operationId":"api_v1_cli_events","tags":["cli_events"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Bearer authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Accepted; command events are queued and legacy starts ignored. Does not confirm PostHog ingestion"},"400":{"description":"Invalid CLI event"},"413":{"description":"Event exceeds 4 KiB"},"429":{"description":"Rate limit exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["event","properties"],"properties":{"event":{"type":"string","enum":["cli_command","cli_command_started","cli_command_completed"]},"properties":{"type":"object","required":["command","invocation_id","cli_name","cli_version","os","arch","agent_mode","json_mode"],"properties":{"command":{"type":"string","maxLength":160},"invocation_id":{"type":"string","pattern":"^[0-9a-f]{32}$"},"cli_name":{"type":"string","enum":["com","vex"]},"cli_version":{"type":"string","maxLength":100},"os":{"type":"string","enum":["linux","macos","windows"]},"arch":{"type":"string","enum":["x86_64","aarch64"]},"agent_mode":{"type":"boolean"},"json_mode":{"type":"boolean"},"success":{"type":"boolean","description":"Required for cli_command and legacy completion events"},"duration_ms":{"type":"integer","minimum":0,"description":"Required for cli_command and legacy completion events"}}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Record a CLI command event","description":"Bearer-authenticated, best-effort telemetry. Identity is resolved by the server. Raw command arguments, input and output are not accepted. cli_command is emitted after execution with outcome and duration. Legacy starts are ignored; legacy completions are normalized to cli_command."}},"/api/v1/cli_releases":{"get":{"operationId":"api_v1_cli_releases","tags":["cli_releases"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_cli_releases","tags":["cli_releases"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/cli_releases/latest":{"get":{"operationId":"latest_api_v1_cli_releases","tags":["cli_releases"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/com_site_access/redeem":{"post":{"operationId":"api_v1_com_site_access_redeem","tags":["com_site_access"],"parameters":[],"responses":{"200":{"description":"Viewer session token for the site's host-only cookie","content":{"application/json":{"schema":{"type":"object","required":["session_token","max_age","viewer_id"],"properties":{"session_token":{"type":"string"},"max_age":{"type":"integer"},"viewer_id":{"type":"string"}}}}}},"401":{"description":"Missing dispatch bearer, or an invalid, expired or replayed token"},"403":{"description":"The signed-in user can no longer view the site"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["host","token"],"properties":{"host":{"type":"string"},"token":{"type":"string"}}}}}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"summary":"Exchange a one-time Composal Pages callback token for a viewer session (dispatch Worker only)"}},"/api/v1/com_site_access/sessions":{"post":{"operationId":"api_v1_com_site_access_sessions","tags":["com_site_access"],"parameters":[],"responses":{"200":{"description":"Viewer session for the site","content":{"application/json":{"schema":{"type":"object","required":["session_token","cookie_name","max_age"],"properties":{"session_token":{"type":"string"},"cookie_name":{"type":"string"},"max_age":{"type":"integer"}}}}}},"401":{"description":"Not signed in"},"403":{"description":"The signed-in user cannot view the site, or the caller is an agent"},"404":{"description":"Unknown site"},"422":{"description":"The site is public and needs no sign-in"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["host"],"properties":{"host":{"type":"string","description":"Site hostname, for example docs.acme.composal.page"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Open a viewer session for an org-only or private Composal Pages site","description":"For signed-in Composal clients such as the desktop browser. The client stores session_token as the site's host-only cookie named cookie_name. Agent runtime tokens are refused."}},"/api/v1/com_site_access/start":{"get":{"operationId":"api_v1_com_site_access_start","tags":["com_site_access"],"parameters":[{"name":"host","in":"query","required":true,"schema":{"type":"string"},"description":"Site hostname, for example docs.acme.composal.page"},{"name":"return_to","in":"query","required":false,"schema":{"type":"string"},"description":"Relative path to open after sign-in"}],"responses":{"200":{"description":"HTML waiting page that refreshes until the site's HTTPS certificate is ready","content":{"text/html":{"schema":{"type":"string"}}}},"302":{"description":"Redirect to login, to the site callback, or straight to a public site"},"403":{"description":"HTML page explaining that the viewer cannot open the site","content":{"text/html":{"schema":{"type":"string"}}}},"404":{"description":"HTML page for an unknown site","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[],"summary":"Start Composal sign-in for an org-only or private Composal Pages site","description":"Browser navigation on the web origin. Uses the Composal session cookie, not a bearer token, and answers with redirects or an HTML page."}},"/api/v1/contact_submissions":{"post":{"operationId":"api_v1_contact_submissions","tags":["contact_submissions"],"parameters":[],"responses":{"201":{"description":"The message was accepted (or silently discarded as spam).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactSubmissionCreated"}}}},"400":{"description":"A required field was missing from the request body."},"422":{"description":"A field failed validation."},"429":{"description":"Too many submissions from this IP."}},"security":[],"summary":"Send a message from the public marketing contact form","description":"Unauthenticated and CSRF-exempt: the marketing site posts this straight from a browser with no Vex session. Rate limited per IP (5 per minute). `website` is a honeypot — a field no human sees. When it is filled in the response is an ordinary 201 and nothing is stored, so a bot learns nothing from the reply.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactSubmissionRequest"}}}}}},"/api/v1/device_runtime/organizations/{organization_id}/devices/{device_id}/control":{"post":{"operationId":"deviceControlRuntime","tags":["device_runtime","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current authorized local agent control result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceControlRuntimeResponse"}}}},"400":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"401":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeviceControlProof"}}}},"security":[]}},"/api/v1/device_runtime/organizations/{organization_id}/devices/{device_id}/invocations/challenge":{"post":{"operationId":"challenge","tags":["device_runtime"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Composal-Device-Connection","in":"header","required":false,"description":"The Rails-issued routing selector for this physical pairing and selected OCE agent runtime. It is bound into the signed challenge; it does not replace native key proof or authorize execution. Retained tenant connections omit it.","schema":{"type":"string","maxLength":1800,"pattern":"^[A-Za-z0-9_-]+$"}}],"responses":{"200":{"description":"Device-key authorization response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceInvocationChallengeResponse"}}}},"400":{"description":"Malformed JSON"},"403":{"description":"Current device proof or consent denied"},"404":{"description":"Unavailable organization device or feature"},"422":{"description":"Invalid request fields"},"503":{"description":"Native invocation owner unavailable"}},"security":[],"summary":"Challenge a device key for one pending native invocation","description":"Device-key protocol; browser sessions and PATs do not replace the Ed25519 proof. Sign JSON([\"composal-device-invocation-proof\",1,challenge]). A returned lease is short-lived and still requires native liveness and device-local approval. This endpoint cannot submit commands or choose a requester. Feature-gated until the local execution path is qualified. OCE node hosts send X-Composal-Device-Connection on both challenge and lease requests; changing or omitting it cannot reuse a challenge from another connection.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceInvocationChallengeInput"}}}}}},"/api/v1/device_runtime/organizations/{organization_id}/devices/{device_id}/invocations/control/challenge":{"post":{"operationId":"control_challenge","tags":["device_runtime"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Composal-Device-Connection","in":"header","required":false,"description":"The Rails-issued routing selector for this physical pairing and selected OCE agent runtime. It is bound into the signed challenge; it does not replace native key proof or authorize execution. Retained tenant connections omit it.","schema":{"type":"string","maxLength":1800,"pattern":"^[A-Za-z0-9_-]+$"}}],"responses":{"200":{"description":"Device-key authorization response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceInvocationChallengeResponse"}}}},"400":{"description":"Malformed JSON"},"403":{"description":"Current device proof or consent denied"},"404":{"description":"Unavailable organization device or feature"},"422":{"description":"Invalid request fields"},"503":{"description":"Native invocation owner unavailable"}},"security":[],"summary":"Challenge a device key for native lifecycle control","description":"Signed-device protocol for private native runtime installation, prepared workspace setup, cleanup and process observation. Requires current paired registration and native kernel control proof. This is not an agent execution grant and cannot authorize worker launch or arbitrary workspace execution. Local paired machine permission and live native ownership remain mandatory; no project or command prompt is added. Control challenges cannot be used for execution leases. OCE node hosts send X-Composal-Device-Connection on both challenge and lease requests; changing or omitting it cannot reuse a challenge from another connection.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceInvocationChallengeInput"}}}}}},"/api/v1/device_runtime/organizations/{organization_id}/devices/{device_id}/invocations/control/lease":{"post":{"operationId":"control_lease","tags":["device_runtime"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Composal-Device-Connection","in":"header","required":false,"description":"The Rails-issued routing selector for this physical pairing and selected OCE agent runtime. It is bound into the signed challenge; it does not replace native key proof or authorize execution. Retained tenant connections omit it.","schema":{"type":"string","maxLength":1800,"pattern":"^[A-Za-z0-9_-]+$"}}],"responses":{"200":{"description":"Device-key authorization response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceWorkerControlLeaseResponse"}}}},"400":{"description":"Malformed JSON"},"403":{"description":"Current device proof or consent denied"},"404":{"description":"Unavailable organization device or feature"},"422":{"description":"Invalid request fields"},"503":{"description":"Native invocation owner unavailable"}},"security":[],"summary":"Authorize one exact native lifecycle control","description":"Signed-device protocol for private native runtime installation, prepared workspace setup, cleanup and process observation. Requires current paired registration and native kernel control proof. This is not an agent execution grant and cannot authorize worker launch or arbitrary workspace execution. Local paired machine permission and live native ownership remain mandatory; no project or command prompt is added. Control challenges cannot be used for execution leases. OCE node hosts send X-Composal-Device-Connection on both challenge and lease requests; changing or omitting it cannot reuse a challenge from another connection.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceExecutionLeaseInput"}}}}}},"/api/v1/device_runtime/organizations/{organization_id}/devices/{device_id}/invocations/lease":{"post":{"operationId":"lease","tags":["device_runtime"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Composal-Device-Connection","in":"header","required":false,"description":"The Rails-issued routing selector for this physical pairing and selected OCE agent runtime. It is bound into the signed challenge; it does not replace native key proof or authorize execution. Retained tenant connections omit it.","schema":{"type":"string","maxLength":1800,"pattern":"^[A-Za-z0-9_-]+$"}}],"responses":{"200":{"description":"Device-key authorization response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceExecutionLeaseResponse"}}}},"400":{"description":"Malformed JSON"},"403":{"description":"Current device proof or consent denied"},"404":{"description":"Unavailable organization device or feature"},"422":{"description":"Invalid request fields"},"503":{"description":"Native invocation owner unavailable"}},"security":[],"summary":"Authorize one exact native invocation with current product consent","description":"Device-key protocol; browser sessions and PATs do not replace the Ed25519 proof. Sign JSON([\"composal-device-invocation-proof\",1,challenge]). A returned lease is short-lived and still requires native liveness and device-local approval. This endpoint cannot submit commands or choose a requester. Feature-gated until the local execution path is qualified. OCE node hosts send X-Composal-Device-Connection on both challenge and lease requests; changing or omitting it cannot reuse a challenge from another connection.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceExecutionLeaseInput"}}}}}},"/api/v1/edge/tls-check":{"get":{"operationId":"api_v1_edge_tls_check","tags":["edge"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/email_verifications/resend":{"post":{"operationId":"api_v1_email_verifications_resend","tags":["email_verifications"],"parameters":[],"responses":{"200":{"description":"Generic verification request acknowledgement","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["message"],"properties":{"message":{"type":"string"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Generic verification request acknowledgement","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["email"],"properties":{"email":{"type":"string","format":"email"}}}}}},"security":[],"description":"Requests a replacement verification email for an unverified account or waitlist application, respecting the resend cooldown. Always returns the same acknowledgement for unknown and already verified addresses."}},"/api/v1/email_verifications/verify":{"get":{"operationId":"api_v1_email_verifications_verify","tags":["email_verifications"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/execution/desired_states":{"get":{"operationId":"api_v1_desired_states","tags":["execution"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_execution_desired_states","tags":["execution"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/execution/desired_states/{id}":{"get":{"operationId":"api_v1_desired_state","tags":["execution"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Desired state and current scheduler termination proof","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["desired_state","stop_observed"],"properties":{"desired_state":{"type":"object","additionalProperties":true},"stop_observed":{"type":"boolean","description":"True only for archived zero-capacity states with all known jobs stopped and allocations terminated. Unknown observations return false."}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_execution_desired_states_id_","tags":["execution"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_execution_desired_states_id_","tags":["execution"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_execution_desired_states_id_","tags":["execution"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/execution/desired_states/{id}/reconcile":{"post":{"operationId":"reconcile_api_v1_desired_state","tags":["execution"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/execution/reconciler_ticks":{"get":{"operationId":"api_v1_reconciler_ticks","tags":["execution"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_execution_reconciler_ticks","tags":["execution"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/execution/reconciler_ticks/{id}":{"get":{"operationId":"api_v1_reconciler_tick","tags":["execution"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/execution/releases":{"get":{"operationId":"api_v1_releases","tags":["execution"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_execution_releases","tags":["execution"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/execution/releases/{id}":{"get":{"operationId":"api_v1_release","tags":["execution"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/execution/releases/{id}/activate":{"post":{"operationId":"activate_api_v1_release","tags":["execution"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/execution/releases/{id}/fail":{"post":{"operationId":"fail_api_v1_release","tags":["execution"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/execution/releases/{id}/mark_ready":{"post":{"operationId":"mark_ready_api_v1_release","tags":["execution"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/execution/releases/{release_id}/rollouts":{"get":{"operationId":"api_v1_release_rollouts","tags":["execution"],"parameters":[{"name":"release_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_execution_releases_release_id_rollouts","tags":["execution"],"parameters":[{"name":"release_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/execution/releases/{release_id}/rollouts/{id}":{"get":{"operationId":"api_v1_release_rollout","tags":["execution"],"parameters":[{"name":"release_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/execution/releases/{release_id}/rollouts/{id}/complete":{"post":{"operationId":"complete_api_v1_release_rollout","tags":["execution"],"parameters":[{"name":"release_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/execution/releases/{release_id}/rollouts/{id}/fail":{"post":{"operationId":"fail_api_v1_release_rollout","tags":["execution"],"parameters":[{"name":"release_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/execution/releases/{release_id}/rollouts/{id}/start":{"post":{"operationId":"start_api_v1_release_rollout","tags":["execution"],"parameters":[{"name":"release_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/execution/runtime_instances":{"get":{"operationId":"api_v1_runtime_instances","tags":["execution"],"parameters":[{"name":"hosted_app_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"app_environment_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"app_service_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Recent and live runtime instances","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["runtime_instances","pagination"],"properties":{"runtime_instances":{"type":"array","items":{"$ref":"#/components/schemas/RuntimeInstance"}},"pagination":{"type":"object","additionalProperties":true,"required":["page","limit","count","last"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1,"maximum":100},"count":{"type":"integer","minimum":0},"last":{"type":"integer","minimum":1},"previous":{"type":"integer","minimum":1,"nullable":true},"next":{"type":"integer","minimum":1,"nullable":true}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_execution_runtime_instances","tags":["execution"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/execution/runtime_instances/{id}":{"get":{"operationId":"api_v1_runtime_instance","tags":["execution"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_execution_runtime_instances_id_","tags":["execution"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_execution_runtime_instances_id_","tags":["execution"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_execution_runtime_instances_id_","tags":["execution"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/execution/runtime_instances/{id}/refresh":{"post":{"operationId":"refresh_api_v1_runtime_instance","tags":["execution"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/execution/runtime_instances/{id}/terminate":{"post":{"operationId":"terminate_api_v1_runtime_instance","tags":["execution"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/execution/runtime_instances/{runtime_instance_id}/health_snapshots":{"get":{"operationId":"api_v1_runtime_instance_health_snapshots","tags":["execution"],"parameters":[{"name":"runtime_instance_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_execution_runtime_instances_runtime_instance_id_health_snapshots","tags":["execution"],"parameters":[{"name":"runtime_instance_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/git_imports/{id}":{"get":{"operationId":"api_v1_git_import","tags":["git_imports"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Git durability and native readiness","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/GitImportStatus"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Git durability and native readiness"}},"/api/v1/git_imports/{id}/complete":{"post":{"operationId":"complete_api_v1_git_import","tags":["git_imports"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Git is durable; conversion proceeds asynchronously","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitImportStatus"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Git is durable; conversion proceeds asynchronously"}},"/api/v1/git_imports/{id}/retry":{"post":{"operationId":"retry_api_v1_git_import","tags":["git_imports"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Native repair queued from retained Git storage","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitImportStatus"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Native repair queued from retained Git storage"}},"/api/v1/github/repository_lookup":{"get":{"operationId":"api_v1_github_repository_lookup","tags":["github"],"parameters":[{"name":"owner","in":"query","required":true,"schema":{"type":"string"}},{"name":"name","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The physical Composal repository this GitHub remote resolves to","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization_slug","repository_slug","github_full_name"],"properties":{"organization_slug":{"type":"string"},"repository_slug":{"type":"string"},"github_full_name":{"type":"string"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"No organization the caller belongs to has imported this remote","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"More than one reachable repository syncs this remote","content":{"application/json":{"schema":{"type":"object","required":["error","candidates"],"properties":{"error":{"type":"string"},"candidates":{"type":"array","items":{"type":"object","required":["organization_slug","repository_slug"],"properties":{"organization_slug":{"type":"string"},"repository_slug":{"type":"string"}}}}}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/github_app/importable_repositories":{"get":{"operationId":"api_v1_github_app_importable_repositories","tags":["github_app"],"parameters":[{"name":"github_app_installation_id","in":"query","required":false,"description":"When set with page, returns one installation page for client-side streaming.","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"GitHub installation-repositories page (1-based). Defaults to 1.","schema":{"type":"integer","minimum":1,"default":1}}],"responses":{"200":{"description":"Importable GitHub repositories grouped by installation account","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["accounts"],"properties":{"accounts":{"type":"array","items":{"type":"object","required":["github_app_installation_id","account_login","repositories","next_page"],"properties":{"github_app_installation_id":{"type":"string"},"account_login":{"type":"string"},"next_page":{"type":"integer","nullable":true,"description":"Next GitHub page for this installation","or null when exhausted":null},"repositories":{"type":"array","items":{"type":"object","required":["owner","name","full_name","default_branch","visibility","private","empty","html_url","updated_at","already_imported"],"properties":{"owner":{"type":"string"},"name":{"type":"string"},"full_name":{"type":"string"},"default_branch":{"type":"string","nullable":true},"visibility":{"type":"string","nullable":true},"private":{"type":"boolean","nullable":true},"empty":{"type":"boolean","nullable":true},"html_url":{"type":"string","nullable":true},"updated_at":{"type":"string","nullable":true},"already_imported":{"type":"boolean"}}}}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/github_app/installation_authorizations":{"post":{"operationId":"api_v1_github_app_installation_authorizations","tags":["github_app"],"parameters":[],"responses":{"200":{"description":"GitHub App installation URL with opaque setup state","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["installation_url"],"properties":{"installation_url":{"type":"string","format":"uri"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"GitHub App installation URL with opaque setup state","content":{"application/json":{"schema":{"type":"object","required":["installation_url"],"properties":{"installation_url":{"type":"string","format":"uri"}}}}}},"503":{"description":"GitHub App or durable authorization state is not configured"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization_slug","return_target"],"properties":{"organization_slug":{"type":"string","description":"Vex organization slug whose installation will be linked."},"return_target":{"type":"string","description":"Server-validated Vex application target used after verification."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Start verified GitHub App installation linking","description":"Creates a short-lived, user-bound setup state for an organization administrator and returns the server-generated GitHub App installation URL. Requires an authenticated Vex session or bearer token."}},"/api/v1/github_app/installation_authorizations/complete":{"post":{"operationId":"api_v1_github_app_installation_authorizations_complete","tags":["github_app"],"parameters":[],"responses":{"200":{"description":"Existing verified installation link refreshed","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["return_target"],"properties":{"github_app_installation":{"type":"object","required":["id","organization_id","installation_id","account_login","account_id","account_avatar_url","manage_access_url","status","permissions","permission_entries","installed_at","installed_at_label","suspended_at","suspended_at_label","created_at","created_at_label","updated_at","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"installation_id":{"type":"string"},"account_login":{"type":"string"},"account_id":{"type":"string","nullable":true},"account_avatar_url":{"type":"string","format":"uri","nullable":true},"manage_access_url":{"type":"string","format":"uri"},"status":{"type":"string","enum":["active","suspended"]},"permissions":{"type":"object","additionalProperties":true},"permission_entries":{"description":"GitHub's permission hash as a display-ready list, sorted by name.","type":"array","items":{"type":"object","required":["key","name","access"],"properties":{"key":{"type":"string"},"name":{"type":"string"},"access":{"type":"string"}}}},"installed_at":{"type":"string","format":"date-time","nullable":true},"installed_at_label":{"type":"string","nullable":true},"suspended_at":{"type":"string","format":"date-time","nullable":true},"suspended_at_label":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at":{"type":"string","format":"date-time"},"updated_at_label":{"type":"string","nullable":true}}},"github_user_authorization_connected":{"type":"boolean"},"return_target":{"type":"string"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Verified installation link created","content":{"application/json":{"schema":{"type":"object","required":["return_target"],"properties":{"github_app_installation":{"type":"object","required":["id","organization_id","installation_id","account_login","account_id","account_avatar_url","manage_access_url","status","permissions","permission_entries","installed_at","installed_at_label","suspended_at","suspended_at_label","created_at","created_at_label","updated_at","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"installation_id":{"type":"string"},"account_login":{"type":"string"},"account_id":{"type":"string","nullable":true},"account_avatar_url":{"type":"string","format":"uri","nullable":true},"manage_access_url":{"type":"string","format":"uri"},"status":{"type":"string","enum":["active","suspended"]},"permissions":{"type":"object","additionalProperties":true},"permission_entries":{"description":"GitHub's permission hash as a display-ready list, sorted by name.","type":"array","items":{"type":"object","required":["key","name","access"],"properties":{"key":{"type":"string"},"name":{"type":"string"},"access":{"type":"string"}}}},"installed_at":{"type":"string","format":"date-time","nullable":true},"installed_at_label":{"type":"string","nullable":true},"suspended_at":{"type":"string","format":"date-time","nullable":true},"suspended_at_label":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at":{"type":"string","format":"date-time"},"updated_at_label":{"type":"string","nullable":true}}},"github_user_authorization_connected":{"type":"boolean"},"return_target":{"type":"string"}}}}}},"409":{"description":"The GitHub account is already linked to another Vex organization"},"503":{"description":"GitHub App OAuth or durable authorization state is not configured"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["state"],"properties":{"code":{"type":"string","description":"GitHub App user authorization code when authorization succeeds."},"error":{"type":"string","description":"GitHub OAuth error when the user denies or cannot grant authorization."},"state":{"type":"string","description":"Opaque one-time verification state returned by GitHub OAuth."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Verify ownership and link a GitHub App installation","description":"Consumes the one-time verification state and GitHub OAuth result, verifies the current GitHub identity, organization ownership or personal-account identity, complete repository visibility, and repository administration before creating or refreshing the Vex link."}},"/api/v1/github_app/installation_authorizations/setup":{"post":{"operationId":"api_v1_github_app_installation_authorizations_setup","tags":["github_app"],"parameters":[],"responses":{"200":{"description":"PKCE-protected GitHub App user authorization URL","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["authorization_url"],"properties":{"authorization_url":{"type":"string","format":"uri"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"PKCE-protected GitHub App user authorization URL","content":{"application/json":{"schema":{"type":"object","required":["authorization_url"],"properties":{"authorization_url":{"type":"string","format":"uri"}}}}}},"503":{"description":"GitHub App OAuth or durable authorization state is not configured"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["installation_id","setup_action","state"],"properties":{"installation_id":{"type":"string"},"setup_action":{"type":"string","enum":["install","update"]},"state":{"type":"string","description":"Opaque one-time state returned in the GitHub Setup URL callback."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Begin GitHub user verification for an installation","description":"Consumes the one-time installation setup state, records the App-owned installation snapshot, and returns a PKCE-protected GitHub App user authorization URL. No installation is linked at this stage."}},"/api/v1/github_app/user_authorizations":{"post":{"operationId":"api_v1_github_app_user_authorizations","tags":["github_app"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"GitHub App user authorization started","content":{"application/json":{"schema":{"type":"object","required":["authorization_url"],"properties":{"authorization_url":{"type":"string","format":"uri"}}}}}},"503":{"description":"GitHub App OAuth or durable authorization state is not configured"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Connect the current user's GitHub identity for PR authorship","description":"Creates a short-lived PKCE-protected GitHub App user authorization state. Requires an authenticated Vex session or bearer token."}},"/api/v1/github_app/webhook":{"post":{"operationId":"api_v1_github_app_webhook","tags":["github_app"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/github_runner_admission":{"post":{"operationId":"api_v1_github_runner_admission","tags":["github_runner_admission"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/github_runner_cache":{"post":{"operationId":"api_v1_github_runner_cache","tags":["github_runner_cache"],"parameters":[],"responses":{"200":{"description":"Cache lookup, upload reservation, or publication result","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["ok"],"properties":{"ok":{"type":"boolean"},"entry_id":{"type":"string"},"upload_path":{"type":"string"},"signed_download_url":{"type":"string"},"matched_key":{"type":"string"},"size_bytes":{"type":"string"}}}}}},"401":{"description":"Invalid or expired runner attempt"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"Cache key exists or upload belongs to another attempt"},"503":{"description":"Namespace disabled or actual assignment not yet observed"},"507":{"description":"Namespace capacity exhausted"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["operation"],"properties":{"operation":{"type":"string","enum":["GetCacheEntryDownloadURL","CreateCacheEntry","ReserveUpload","FinalizeCacheEntryUpload"]},"key":{"type":"string","maxLength":512},"version":{"type":"string","maxLength":512},"restore_keys":{"type":"array","maxItems":32,"items":{"type":"string","maxLength":512}},"entry_id":{"type":"string"},"size_bytes":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Runner-owned Actions cache control plane","description":"Internal runner protocol. Requires an expiring invocation-attempt bearer credential; user API tokens do not authorize this endpoint. Repository and branch scope come from the runner's actual GitHub assignment. Archive bytes flow through the runner's CloudBucketMount, not this API."}},"/api/v1/github_runner_checkout":{"post":{"operationId":"api_v1_github_runner_checkout","tags":["github_runner_checkout"],"parameters":[],"responses":{"200":{"description":"Pending, prepared or failed Git object cache preparation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["status"],"properties":{"status":{"type":"string","enum":["pending","ready","failed"]},"ticket":{"type":"string"},"commit":{"type":"string","pattern":"^[0-9a-f]{40}$"},"object_oid":{"type":"string","pattern":"^[0-9a-f]{40}$"},"refs":{"type":"object","additionalProperties":{"type":"string","pattern":"^[0-9a-f]{40}$"}},"cache_hit":{"type":"boolean"},"source":{"type":"string","enum":["cache","composal","github"]},"prepare_seconds":{"type":"number","minimum":0}}}}}},"401":{"description":"Invalid attempt credential","repository scope or status ticket":null},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"400":{"description":"Unsupported operation or invalid ref or object ID"},"503":{"description":"Preparation unavailable or another revision is still preparing"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"oneOf":[{"type":"object","required":["operation","repository","ref"],"properties":{"operation":{"type":"string","enum":["prepare"]},"repository":{"type":"string","example":"acme/monorepo"},"ref":{"type":"string","minLength":1,"maxLength":1024},"sha":{"type":"string","pattern":"^[0-9a-f]{40}$"},"all_refs":{"type":"boolean","default":false}}},{"type":"object","required":["operation","ticket"],"properties":{"operation":{"type":"string","enum":["status"]},"ticket":{"type":"string"}}}]}}}},"security":[{"bearerAuth":[]},{"RunnerCheckoutToken":[]}],"summary":"Prepare a runner's Git object cache","description":"Internal runner protocol. Requires an expiring invocation-attempt credential. User API tokens do not authorize this endpoint. Repository scope comes from the runner pool; source credentials are never returned."}},"/api/v1/github_runner_scale_sets":{"post":{"operationId":"api_v1_github_runner_scale_sets","tags":["github_runner_scale_sets"],"parameters":[],"responses":{"200":{"description":"Credential, reservation, launch envelope or reconciliation receipt","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"oneOf":[{"type":"object","required":["github_url","token"],"properties":{"github_url":{"type":"string","format":"uri"},"token":{"type":"string","format":"password"}}},{"type":"object","required":["reservation_id","runner_name"],"properties":{"reservation_id":{"type":"integer","format":"int64","minimum":1},"runner_name":{"type":"string"}}},{"type":"object","required":["request"],"properties":{"request":{"$ref":"#/components/schemas/RunnerScaleSetLaunchRequest"},"warm_idle_seconds":{"type":"integer","enum":[0,3600]}}},{"type":"object","required":["request_ids"],"properties":{"request_ids":{"type":"array","items":{"type":"integer","format":"int64","minimum":1}}}},{"type":"object","required":["recorded"],"properties":{"recorded":{"type":"boolean","enum":[true]},"spot_recorded":{"type":"boolean","enum":[true],"description":"Acknowledges the Spot receipt after applying it to the assigned invocation, if any."}}}]}}}},"401":{"description":"Invalid pool credential, identity or receipt"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Invalid operation or request"},"502":{"description":"Bad gateway"},"429":{"description":"GitHub credential request was throttled","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1}}}},"503":{"description":"GitHub, Boxmad or class capacity temporarily unavailable","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Delay when credential refresh is pending"}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunnerScaleSetBrokerRequest"}}}},"security":[{"RunnerScaleSetBrokerToken":[]}],"summary":"Reconcile a native runner pool","description":"Internal Boxmad protocol. Requires a revocable control-plane credential bound to one tenant, repository and runner class. User API tokens and workload credentials do not authorize this endpoint."}},"/api/v1/github_runner_supply_admission":{"post":{"operationId":"api_v1_github_runner_supply_admission","tags":["github_runner_supply_admission"],"parameters":[],"responses":{"200":{"description":"Actual assignment authorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["allowed"],"properties":{"allowed":{"type":"boolean","enum":[true]}}}}}},"401":{"description":"Invalid supply credential or assignment identity"},"403":{"description":"Assignment denied; no customer step may start","content":{"application/json":{"schema":{"type":"object","required":["allowed"],"properties":{"allowed":{"type":"boolean","enum":[false]}}}}}},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"400":{"description":"Invalid run ID or attempt"},"503":{"description":"Assignment or deadline confirmation temporarily unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["run_id","run_attempt"],"properties":{"run_id":{"type":"integer","format":"int64","minimum":1},"run_attempt":{"type":"integer","minimum":1}}}}}},"security":[{"RunnerSupplyAdmissionToken":[]}],"summary":"Authorize a warm runner's actual job assignment","description":"Internal pre-job gate. Requires the active single-use supply credential. GitHub confirms assignment identity before billing admission and execution deadline shortening. User API tokens do not authorize this endpoint."}},"/api/v1/gitlab/oauth/callback":{"get":{"operationId":"api_v1_gitlab_oauth_callback","tags":["gitlab"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/app_runs":{"get":{"operationId":"api_v1_app_runs","tags":["hosting"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_hosting_app_runs","tags":["hosting"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"402":{"description":"The organization's billing limit refuses this usage; see `error.upgrade_path`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingLimitExceededError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"image":{"type":"string","description":"Optional fully qualified digest-pinned image from the deployed service's registry and repository. Uses the active release's execution context without deploying. Mutable tags are rejected."}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/app_runs/{id}":{"get":{"operationId":"api_v1_app_run","tags":["hosting"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/app_runs/{id}/cancel":{"post":{"operationId":"cancel_api_v1_app_run","tags":["hosting"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps":{"get":{"operationId":"api_v1_apps","tags":["hosting"],"parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Hosted apps visible to the current user","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["apps"],"properties":{"apps":{"type":"array","items":{"$ref":"#/components/schemas/HostedApp"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_hosting_apps","tags":["hosting"],"parameters":[],"responses":{"200":{"description":"Hosted app created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["app"],"properties":{"app":{"$ref":"#/components/schemas/HostedApp"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Hosted app created","content":{"application/json":{"schema":{"type":"object","required":["app"],"properties":{"app":{"$ref":"#/components/schemas/HostedApp"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/HostedAppCreatePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/catalog":{"get":{"operationId":"api_v1_app_catalog","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Hosted app configuration catalog","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["app"],"properties":{"app":{"$ref":"#/components/schemas/HostedAppCatalog"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/catalog/selectors":{"get":{"operationId":"selectors_api_v1_app_catalog","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Target selectors without deployment history or configuration values","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["app"],"properties":{"app":{"type":"object","additionalProperties":false,"required":["id","services","environments","locations"],"properties":{"id":{"type":"string"},"services":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","slug","name"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}}}},"environments":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","slug","name"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}}}},"locations":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","code","name"],"properties":{"id":{"type":"string"},"code":{"type":"string"},"name":{"type":"string"}}}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read the service, environment and location identities for a hosted app"}},"/api/v1/hosting/apps/{app_id}/cdns":{"get":{"operationId":"api_v1_app_cdns","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_hosting_apps_app_id_cdns","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"App CDN distribution created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["cdn"],"properties":{"cdn":{"$ref":"#/components/schemas/AppCdnDistribution"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"CDN request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"},"201":{"description":"App CDN distribution created","content":{"application/json":{"schema":{"type":"object","required":["cdn"],"properties":{"cdn":{"$ref":"#/components/schemas/AppCdnDistribution"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppCdnDistributionCreatePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/cdns/{cdn_id}/deployments":{"get":{"operationId":"api_v1_app_cdn_deployments","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cdn_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_hosting_apps_app_id_cdns_cdn_id_deployments","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cdn_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/cdns/{cdn_id}/deployments/{id}":{"get":{"operationId":"api_v1_app_cdn_deployment","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cdn_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/cdns/{cdn_id}/hostnames":{"get":{"operationId":"api_v1_app_cdn_hostnames","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cdn_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_hosting_apps_app_id_cdns_cdn_id_hostnames","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cdn_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"App CDN hostname created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["hostname"],"properties":{"hostname":{"$ref":"#/components/schemas/AppCdnHostname"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"CDN request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"},"201":{"description":"App CDN hostname created","content":{"application/json":{"schema":{"type":"object","required":["hostname"],"properties":{"hostname":{"$ref":"#/components/schemas/AppCdnHostname"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppCdnHostnameCreatePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/cdns/{cdn_id}/hostnames/{id}":{"get":{"operationId":"api_v1_app_cdn_hostname","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cdn_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_hosting_apps_app_id_cdns_cdn_id_hostnames_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cdn_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_hosting_apps_app_id_cdns_cdn_id_hostnames_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cdn_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_hosting_apps_app_id_cdns_cdn_id_hostnames_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cdn_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"App CDN hostname deleted"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/cdns/{id}":{"get":{"operationId":"api_v1_app_cdn","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_hosting_apps_app_id_cdns_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app CDN distribution","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["cdn"],"properties":{"cdn":{"$ref":"#/components/schemas/AppCdnDistribution"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"CDN request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppCdnDistributionUpdatePayload"}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_hosting_apps_app_id_cdns_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app CDN distribution","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["cdn"],"properties":{"cdn":{"$ref":"#/components/schemas/AppCdnDistribution"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"CDN request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppCdnDistributionUpdatePayload"}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_hosting_apps_app_id_cdns_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/cdns/{id}/archive":{"post":{"operationId":"archive_api_v1_app_cdn","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app CDN distribution","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["cdn"],"properties":{"cdn":{"$ref":"#/components/schemas/AppCdnDistribution"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/cdns/{id}/pause":{"post":{"operationId":"pause_api_v1_app_cdn","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app CDN distribution","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["cdn"],"properties":{"cdn":{"$ref":"#/components/schemas/AppCdnDistribution"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/cdns/{id}/provision":{"post":{"operationId":"provision_api_v1_app_cdn","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"App CDN deployment action completed","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["deployment"],"properties":{"deployment":{"$ref":"#/components/schemas/AppCdnDeployment"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"CDN request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppCdnDeploymentPayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/cdns/{id}/purge":{"post":{"operationId":"purge_api_v1_app_cdn","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"App CDN deployment action completed","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["deployment"],"properties":{"deployment":{"$ref":"#/components/schemas/AppCdnDeployment"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"CDN request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppCdnPurgePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/cdns/{id}/resume":{"post":{"operationId":"resume_api_v1_app_cdn","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app CDN distribution","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["cdn"],"properties":{"cdn":{"$ref":"#/components/schemas/AppCdnDistribution"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/cdns/{id}/sync":{"post":{"operationId":"sync_api_v1_app_cdn","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"App CDN deployment action completed","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["deployment"],"properties":{"deployment":{"$ref":"#/components/schemas/AppCdnDeployment"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"CDN request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppCdnDeploymentPayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/config_variables":{"get":{"operationId":"api_v1_app_config_variables","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"app_environment_id","in":"query","required":false,"description":"Return only records scoped to this environment of the app, including archived previews.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_hosting_apps_app_id_config_variables","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"App configuration variable created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["config_variable"],"properties":{"config_variable":{"$ref":"#/components/schemas/AppConfigVariable"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Hosting delivery request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"},"201":{"description":"App configuration variable created","content":{"application/json":{"schema":{"type":"object","required":["config_variable"],"properties":{"config_variable":{"$ref":"#/components/schemas/AppConfigVariable"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppConfigVariableCreatePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/config_variables/{id}":{"get":{"operationId":"api_v1_app_config_variable","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_hosting_apps_app_id_config_variables_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_hosting_apps_app_id_config_variables_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_hosting_apps_app_id_config_variables_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/config_variables/{id}/disable":{"post":{"operationId":"disable_api_v1_app_config_variable","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app configuration variable","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["config_variable"],"properties":{"config_variable":{"$ref":"#/components/schemas/AppConfigVariable"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/config_variables/{id}/rotate":{"post":{"operationId":"rotate_api_v1_app_config_variable","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app configuration variable","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["config_variable"],"properties":{"config_variable":{"$ref":"#/components/schemas/AppConfigVariable"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Hosting delivery request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppConfigVariableRotatePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/data_resources":{"get":{"operationId":"api_v1_app_data_resources","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_hosting_apps_app_id_data_resources","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"App data resource created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["data_resource"],"properties":{"data_resource":{"$ref":"#/components/schemas/AppDataResource"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Infrastructure request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Data resource provider request failed","content":{"application/json":{"schema":{"type":"object","required":["data_resource"],"properties":{"data_resource":{"$ref":"#/components/schemas/AppDataResource"}}}}}},"201":{"description":"App data resource created","content":{"application/json":{"schema":{"type":"object","required":["data_resource"],"properties":{"data_resource":{"$ref":"#/components/schemas/AppDataResource"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppDataResourceCreatePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/data_resources/{id}":{"get":{"operationId":"api_v1_app_data_resource","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_hosting_apps_app_id_data_resources_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_hosting_apps_app_id_data_resources_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_hosting_apps_app_id_data_resources_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/data_resources/{id}/archive":{"post":{"operationId":"archive_api_v1_app_data_resource","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/data_resources/{id}/refresh":{"post":{"operationId":"refresh_api_v1_app_data_resource","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app data resource","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["data_resource"],"properties":{"data_resource":{"$ref":"#/components/schemas/AppDataResource"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Data resource provider request failed","content":{"application/json":{"schema":{"type":"object","required":["data_resource"],"properties":{"data_resource":{"$ref":"#/components/schemas/AppDataResource"}}}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/data_resources/{id}/restore":{"post":{"operationId":"restore_api_v1_app_data_resource","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Restored app data resource created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["data_resource"],"properties":{"data_resource":{"$ref":"#/components/schemas/AppDataResource"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Infrastructure request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Data resource provider request failed","content":{"application/json":{"schema":{"type":"object","required":["data_resource"],"properties":{"data_resource":{"$ref":"#/components/schemas/AppDataResource"}}}}}},"201":{"description":"Restored app data resource created","content":{"application/json":{"schema":{"type":"object","required":["data_resource"],"properties":{"data_resource":{"$ref":"#/components/schemas/AppDataResource"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppDataResourceRestorePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/data_resources/{id}/resume":{"post":{"operationId":"resume_api_v1_app_data_resource","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/data_resources/{id}/rotate_credentials":{"post":{"operationId":"rotate_credentials_api_v1_app_data_resource","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app data resource","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["data_resource"],"properties":{"data_resource":{"$ref":"#/components/schemas/AppDataResource"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Data resource provider request failed","content":{"application/json":{"schema":{"type":"object","required":["data_resource"],"properties":{"data_resource":{"$ref":"#/components/schemas/AppDataResource"}}}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/data_resources/{id}/suspend":{"post":{"operationId":"suspend_api_v1_app_data_resource","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/deployment_dashboard":{"get":{"operationId":"api_v1_app_deployment_dashboard","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"metrics_range","in":"query","required":false,"schema":{"type":"string","enum":["1h","6h","24h","7d"]}}],"responses":{"200":{"description":"Hosted app deployment dashboard","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeploymentDashboard"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/deployment_dashboard/nomad/allocation":{"get":{"operationId":"nomad_allocation_api_v1_app_deployment_dashboard","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"service","in":"query","required":false,"schema":{"type":"string"},"description":"Service id","slug":null,"or name.":null},{"name":"environment","in":"query","required":false,"schema":{"type":"string"},"description":"Environment id","slug":null,"or name.":null},{"name":"location","in":"query","required":false,"schema":{"type":"string"},"description":"Location code or name."}],"responses":{"200":{"description":"Live Nomad allocation details","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/NomadAllocationDetails"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"The app, allocation, or selector names nothing","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Unprocessable entity"},"502":{"description":"Nomad request failed","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"400":{"description":"The selectors match more than one service","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"410":{"description":"Nomad no longer holds the allocation, so its logs are gone","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/deployment_dashboard/nomad/allocations/{allocation_id}":{"get":{"operationId":"get_api_v1_hosting_apps_app_id_deployment_dashboard_nomad_allocations_allocation_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"allocation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Live Nomad allocation details","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/NomadAllocationDetails"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"The app, allocation, or selector names nothing","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Unprocessable entity"},"502":{"description":"Nomad request failed","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"410":{"description":"Nomad no longer holds the allocation, so its logs are gone","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/deployment_dashboard/nomad/allocations/{allocation_id}/logs":{"get":{"operationId":"get_api_v1_hosting_apps_app_id_deployment_dashboard_nomad_allocations_allocation_id_logs","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"allocation_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task","in":"query","required":false,"schema":{"type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["stdout","stderr"],"default":"stdout"}},{"name":"origin","in":"query","required":false,"schema":{"type":"string","enum":["start","end"],"default":"end"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":262144,"default":65536}}],"responses":{"200":{"description":"Live Nomad task logs","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/NomadAllocationLogs"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"The app, allocation, or selector names nothing","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Unprocessable entity"},"502":{"description":"Nomad request failed","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"400":{"description":"Invalid task or log options -- including a task name the allocation does not have","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"410":{"description":"Nomad no longer holds the allocation, so its logs are gone","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/deployment_dashboard/nomad/logs":{"get":{"operationId":"nomad_logs_api_v1_app_deployment_dashboard","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"service","in":"query","required":false,"schema":{"type":"string"},"description":"Service id","slug":null,"or name.":null},{"name":"environment","in":"query","required":false,"schema":{"type":"string"},"description":"Environment id","slug":null,"or name.":null},{"name":"location","in":"query","required":false,"schema":{"type":"string"},"description":"Location code or name."},{"name":"task","in":"query","required":false,"schema":{"type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["stdout","stderr"],"default":"stdout"}},{"name":"origin","in":"query","required":false,"schema":{"type":"string","enum":["start","end"],"default":"end"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":262144,"default":65536}}],"responses":{"200":{"description":"Live Nomad task logs","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/NomadAllocationLogs"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"The app, allocation, or selector names nothing","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Unprocessable entity"},"502":{"description":"Nomad request failed","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"400":{"description":"The selectors match more than one service","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"410":{"description":"Nomad no longer holds the allocation, so its logs are gone","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/deployment_operations":{"get":{"operationId":"api_v1_app_deployment_operations","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Logical deployment operations","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["operations","pagination"],"properties":{"operations":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentOperation"}},"pagination":{"type":"object","additionalProperties":true,"required":["page","limit","count","last"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1,"maximum":100},"count":{"type":"integer","minimum":0},"last":{"type":"integer","minimum":1},"previous":{"type":"integer","minimum":1,"nullable":true},"next":{"type":"integer","minimum":1,"nullable":true}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_hosting_apps_app_id_deployment_operations","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"402":{"description":"The organization's billing limit refuses this usage; see `error.upgrade_path`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingLimitExceededError"}}}},"201":{"description":"Logical deployment operation","content":{"application/json":{"schema":{"type":"object","required":["operation"],"properties":{"operation":{"$ref":"#/components/schemas/DeploymentOperation"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"409":{"description":"Idempotency key already names a different deployment","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Deployment request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppDeploymentCreatePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/deployment_operations/{operation_id}":{"get":{"operationId":"api_v1_app_deployment_operation","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Logical deployment operation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["operation"],"properties":{"operation":{"$ref":"#/components/schemas/DeploymentOperation"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/deployment_operations/{operation_id}/cancel":{"post":{"operationId":"cancel_api_v1_app_deployment_operation","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Logical deployment operation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["operation"],"properties":{"operation":{"$ref":"#/components/schemas/DeploymentOperation"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/deployment_operations/{operation_id}/live":{"get":{"operationId":"live_api_v1_app_deployment_operation","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Aggregate deployment operation live status","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/deployment_operations/{operation_id}/redeploy":{"post":{"operationId":"redeploy_api_v1_app_deployment_operation","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Logical deployment operation","content":{"application/json":{"schema":{"type":"object","required":["operation"],"properties":{"operation":{"$ref":"#/components/schemas/DeploymentOperation"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"409":{"description":"Idempotency key already names a different deployment","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Deployment request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"idempotency_key":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/deployment_operations/{operation_id}/rollback":{"post":{"operationId":"rollback_api_v1_app_deployment_operation","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Logical deployment operation","content":{"application/json":{"schema":{"type":"object","required":["operation"],"properties":{"operation":{"$ref":"#/components/schemas/DeploymentOperation"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"409":{"description":"Idempotency key already names a different deployment","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Deployment request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeploymentRollbackPayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/deployment_rollbacks":{"post":{"operationId":"api_v1_app_deployment_rollbacks","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Existing idempotent deployment rollback","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeploymentRollbackResult"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Deployment request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"},"201":{"description":"Deployment rollback created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentRollbackResult"}}}},"409":{"description":"Idempotency key already names a different deployment","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeploymentRollbackPayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/deployment_rollbacks/plan":{"post":{"operationId":"api_v1_app_deployment_rollbacks_plan","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deployment rollback plan","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeploymentRollbackPlan"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeploymentRollbackPayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/deployments":{"get":{"operationId":"api_v1_app_deployments","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_hosting_apps_app_id_deployments","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"App deployment created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["deployment"],"properties":{"deployment":{"$ref":"#/components/schemas/AppDeployment"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Deployment request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"},"402":{"description":"The organization's billing limit refuses this usage; see `error.upgrade_path`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingLimitExceededError"}}}},"201":{"description":"App deployment created","content":{"application/json":{"schema":{"type":"object","required":["deployment"],"properties":{"deployment":{"$ref":"#/components/schemas/AppDeployment"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppDeploymentCreatePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/deployments/{deployment_id}/live":{"get":{"operationId":"get_api_v1_hosting_apps_app_id_deployments_deployment_id_live","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"deployment_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/deployments/{id}":{"get":{"operationId":"api_v1_app_deployment","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_hosting_apps_app_id_deployments_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_hosting_apps_app_id_deployments_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_hosting_apps_app_id_deployments_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/deployments/{id}/cancel":{"post":{"operationId":"cancel_api_v1_app_deployment","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app deployment","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["deployment"],"properties":{"deployment":{"$ref":"#/components/schemas/AppDeployment"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/deployments/{id}/fail":{"post":{"operationId":"fail_api_v1_app_deployment","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app deployment","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["deployment"],"properties":{"deployment":{"$ref":"#/components/schemas/AppDeployment"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/deployments/{id}/succeed":{"post":{"operationId":"succeed_api_v1_app_deployment","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app deployment","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["deployment"],"properties":{"deployment":{"$ref":"#/components/schemas/AppDeployment"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/deploys":{"post":{"operationId":"api_v1_app_deploys","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Invalid image, no eligible placements, or placement changed before deployment."},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["image"],"properties":{"image":{"type":"string"},"service":{"type":"string","description":"Service slug or public ID; required unless app_service_id is supplied."},"app_service_id":{"type":"string"},"environment":{"type":"string","description":"Environment slug or public ID, all, or existing."},"app_environment_id":{"type":"string"},"region":{"type":"string"},"desired_instances":{"type":"integer","minimum":0},"command":{"type":"string"},"channel":{"type":"string"},"source_ref":{"type":"string"},"commit_sha":{"type":"string"},"rollout_predecessor":{"type":"string","description":"Public deployment operation ID from the same app that must succeed before this rollout starts."}}}}}},"security":[{"bearerAuth":[]}],"description":"Deploy a pre-built image. environment accepts a slug or public ID, all (the default), or existing. existing selects this service's placements in active environments with positive replica counts and enabled regions; it preserves their replica counts unless desired_instances overrides them and never creates a placement or restarts a drained placement. No eligible placements returns 422. Existing Git writer placements roll out sequentially in the background. rollout_predecessor queues a deployment until the named operation has completed successfully; failure or cancellation stops its followers."}},"/api/v1/hosting/apps/{app_id}/domains":{"get":{"operationId":"api_v1_app_domains","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"app_environment_id","in":"query","required":false,"description":"Return only records scoped to this environment of the app, including archived previews.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_hosting_apps_app_id_domains","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"App domain created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["domain"],"properties":{"domain":{"$ref":"#/components/schemas/AppDomain"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Hosting delivery request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"},"201":{"description":"App domain created","content":{"application/json":{"schema":{"type":"object","required":["domain"],"properties":{"domain":{"$ref":"#/components/schemas/AppDomain"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppDomainCreatePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/domains/{domain_id}/path_rules":{"get":{"operationId":"api_v1_app_domain_path_rules","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"domain_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Path rules for the domain, in routing precedence (most-specific prefix first, \"/\" catch-all last)","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["path_rules"],"properties":{"path_rules":{"type":"array","items":{"$ref":"#/components/schemas/AppDomainPathRule"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_hosting_apps_app_id_domains_domain_id_path_rules","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"domain_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Path rule created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["path_rule"],"properties":{"path_rule":{"$ref":"#/components/schemas/AppDomainPathRule"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Hosting delivery request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"},"201":{"description":"Path rule created","content":{"application/json":{"schema":{"type":"object","required":["path_rule"],"properties":{"path_rule":{"$ref":"#/components/schemas/AppDomainPathRule"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppDomainPathRuleUpsertPayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/domains/{domain_id}/path_rules/{id}":{"get":{"operationId":"api_v1_app_domain_path_rule","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"domain_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"App domain path rule","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["path_rule"],"properties":{"path_rule":{"$ref":"#/components/schemas/AppDomainPathRule"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_hosting_apps_app_id_domains_domain_id_path_rules_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"domain_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"App domain path rule","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["path_rule"],"properties":{"path_rule":{"$ref":"#/components/schemas/AppDomainPathRule"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Hosting delivery request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppDomainPathRuleUpsertPayload"}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_hosting_apps_app_id_domains_domain_id_path_rules_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"domain_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"App domain path rule","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["path_rule"],"properties":{"path_rule":{"$ref":"#/components/schemas/AppDomainPathRule"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Hosting delivery request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppDomainPathRuleUpsertPayload"}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_hosting_apps_app_id_domains_domain_id_path_rules_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"domain_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Hosting delivery request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"},"204":{"description":"Path rule deleted"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/domains/{id}":{"get":{"operationId":"api_v1_app_domain","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_hosting_apps_app_id_domains_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_hosting_apps_app_id_domains_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_hosting_apps_app_id_domains_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/domains/{id}/disable":{"post":{"operationId":"disable_api_v1_app_domain","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app domain","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["domain"],"properties":{"domain":{"$ref":"#/components/schemas/AppDomain"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/domains/{id}/enable":{"post":{"operationId":"enable_api_v1_app_domain","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app domain","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["domain"],"properties":{"domain":{"$ref":"#/components/schemas/AppDomain"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/domains/{id}/verify":{"post":{"operationId":"verify_api_v1_app_domain","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Domain verification scheduled","content":{"application/json":{"schema":{"type":"object","required":["domain"],"properties":{"domain":{"$ref":"#/components/schemas/AppDomain"}}}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Recheck custom-domain ownership and resume certificate provisioning"}},"/api/v1/hosting/apps/{app_id}/environments":{"get":{"operationId":"api_v1_app_environments","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_hosting_apps_app_id_environments","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"App environment created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["environment"],"properties":{"environment":{"$ref":"#/components/schemas/AppEnvironment"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Deployment request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"},"201":{"description":"App environment created","content":{"application/json":{"schema":{"type":"object","required":["environment"],"properties":{"environment":{"$ref":"#/components/schemas/AppEnvironment"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppEnvironmentCreatePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/environments/{environment_id}/secret_bindings":{"get":{"operationId":"api_v1_app_environment_secret_bindings","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"environment_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_hosting_apps_app_id_environments_environment_id_secret_bindings","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"environment_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PreviewBindingSelection"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/environments/{environment_id}/secret_bindings/copy":{"post":{"operationId":"copy_api_v1_app_environment_secret_bindings","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"environment_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PreviewBindingSelection"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/environments/{environment_id}/secret_bindings/{id}":{"delete":{"operationId":"api_v1_app_environment_secret_binding","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"environment_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/environments/{id}":{"get":{"operationId":"api_v1_app_environment","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_hosting_apps_app_id_environments_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app environment","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["environment"],"properties":{"environment":{"$ref":"#/components/schemas/AppEnvironment"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Deployment request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppEnvironmentUpdatePayload"}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_hosting_apps_app_id_environments_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app environment","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["environment"],"properties":{"environment":{"$ref":"#/components/schemas/AppEnvironment"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Deployment request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppEnvironmentUpdatePayload"}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_hosting_apps_app_id_environments_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/environments/{id}/archive":{"post":{"operationId":"archive_api_v1_app_environment","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app environment","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["environment"],"properties":{"environment":{"$ref":"#/components/schemas/AppEnvironment"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/environments/{id}/pause":{"post":{"operationId":"pause_api_v1_app_environment","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app environment","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["environment"],"properties":{"environment":{"$ref":"#/components/schemas/AppEnvironment"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/environments/{id}/resume":{"post":{"operationId":"resume_api_v1_app_environment","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app environment","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["environment"],"properties":{"environment":{"$ref":"#/components/schemas/AppEnvironment"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/locations":{"get":{"operationId":"api_v1_app_locations","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Available hosting locations","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["locations"],"properties":{"locations":{"type":"array","items":{"$ref":"#/components/schemas/HostingLocation"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_hosting_apps_app_id_locations","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Hosting location enabled for an app","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["location"],"properties":{"location":{"$ref":"#/components/schemas/HostingLocation"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Hosting location enabled for an app","content":{"application/json":{"schema":{"type":"object","required":["location"],"properties":{"location":{"$ref":"#/components/schemas/HostingLocation"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/HostedAppLocationPayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/locations/{id}":{"delete":{"operationId":"api_v1_app_location","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Hosting location disabled for an app"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/metrics/query_range":{"get":{"operationId":"get_api_v1_hosting_apps_app_id_metrics_query_range","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/preview_profiles":{"get":{"operationId":"api_v1_app_preview_profiles","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_hosting_apps_app_id_preview_profiles","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"401":{"description":"Authentication required"},"403":{"description":"Organization administrator required"},"404":{"description":"App or source not found"},"409":{"description":"Source cannot be captured"},"422":{"description":"Invalid preview configuration"},"502":{"description":"Hosting dependency unavailable"},"201":{"description":"Created preview defaults","content":{"application/json":{"schema":{"type":"object","required":["profile"],"properties":{"profile":{"$ref":"#/components/schemas/PreviewProfileRecord"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["name","slug","source_environment_id"],"properties":{"name":{"type":"string"},"slug":{"type":"string"},"source_environment_id":{"type":"string"},"ttl_days":{"type":"integer"},"automatic":{"type":"boolean"},"configuration":{"$ref":"#/components/schemas/PreviewDefaultsConfiguration"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/preview_profiles/{id}":{"get":{"operationId":"api_v1_app_preview_profile","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_hosting_apps_app_id_preview_profiles_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated preview defaults","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["profile"],"properties":{"profile":{"$ref":"#/components/schemas/PreviewProfileRecord"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"name":{"type":"string"},"slug":{"type":"string"},"source_environment_id":{"type":"string"},"ttl_days":{"type":"integer"},"automatic":{"type":"boolean"},"configuration":{"$ref":"#/components/schemas/PreviewDefaultsConfiguration"}}}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_hosting_apps_app_id_preview_profiles_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_hosting_apps_app_id_preview_profiles_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/preview_profiles/{preview_profile_id}/secret_bindings":{"get":{"operationId":"api_v1_app_preview_profile_secret_bindings","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"preview_profile_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_hosting_apps_app_id_preview_profiles_preview_profile_id_secret_bindings","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"preview_profile_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PreviewBindingSelection"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/preview_profiles/{preview_profile_id}/secret_bindings/{id}":{"delete":{"operationId":"api_v1_app_preview_profile_secret_binding","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"preview_profile_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/previews":{"get":{"operationId":"api_v1_app_previews","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_hosting_apps_app_id_previews","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"401":{"description":"Authentication required"},"403":{"description":"Organization administrator required"},"404":{"description":"App or source not found"},"409":{"description":"Source cannot be captured"},"422":{"description":"Invalid preview configuration"},"502":{"description":"Hosting dependency unavailable"},"201":{"description":"Created preview","content":{"application/json":{"schema":{"type":"object","required":["preview"],"properties":{"preview":{"$ref":"#/components/schemas/PreviewEnvironmentRecord"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["name","slug","app_preview_profile_id"],"properties":{"name":{"type":"string"},"slug":{"type":"string"},"app_preview_profile_id":{"type":"string"},"source_ref":{"type":"string"},"change_number":{"type":"string","description":"Organization Change number, optionally prefixed with #; mutually exclusive with source_ref. Home reviews resolve the app's physical component."},"expected_patchset":{"type":"integer","minimum":1,"description":"Optional public Change patchset fence; stale selections return 409."}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/previews/administration_index":{"get":{"operationId":"administration_index_api_v1_app_previews","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Preview administration index","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["app","previews","profiles","source_environments","can_manage","binding_sources","resource_services"],"properties":{"app":{"$ref":"#/components/schemas/HostedApp"},"previews":{"type":"array","items":{"$ref":"#/components/schemas/PreviewEnvironmentRecord"}},"profiles":{"type":"array","items":{"$ref":"#/components/schemas/PreviewDefaultsRecord"}},"source_environments":{"type":"array","items":{"$ref":"#/components/schemas/AppEnvironment"}},"resource_services":{"type":"array","items":{"type":"object","required":["id","name","resources"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"resources":{"$ref":"#/components/schemas/PreviewResourceSettings"}}}},"can_manage":{"type":"boolean"},"binding_sources":{"type":"array","items":{"$ref":"#/components/schemas/PreviewBindingSource"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List previews and creation choices for one app"}},"/api/v1/hosting/apps/{app_id}/previews/{id}":{"get":{"operationId":"api_v1_app_preview","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_hosting_apps_app_id_previews_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"access":{"type":"string","enum":["org_members","public"]},"retained":{"type":"boolean"},"expires_at":{"type":"string"},"expected_generation":{"type":"integer","description":"Required for resource_overrides, storage_binding_resources, shared_service_binding_ids or shared_data_binding_ids; stale generations return 409."},"storage_binding_resources":{"type":"object","additionalProperties":{"type":"string"},"description":"Replace preview storage selections, mapping captured mount binding IDs to storage resource IDs. Empty removes mounts. Requires a paused preview and completed cleanup. Shared source local caches and compatible pre-provisioned preview-owned volumes are supported; production single-writer volumes cannot be shared. Source refresh resets selections."},"shared_data_binding_ids":{"type":"array","items":{"type":"string"},"description":"Replace explicitly shared captured native data connections. Empty removes sharing. Requires paused preview and completed cleanup; runtime credentials come only from active managed connection secrets and require workload grants."},"shared_service_binding_ids":{"type":"array","items":{"type":"string"},"description":"Replace the explicitly shared captured service dependencies. Empty removes sharing. Requires paused preview and completed cleanup. Source refresh resets this selection."},"resource_overrides":{"$ref":"#/components/schemas/PreviewResourceOverrides"}}}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_hosting_apps_app_id_previews_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_hosting_apps_app_id_previews_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/previews/{id}/administration":{"get":{"operationId":"administration_api_v1_app_preview","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Preview administration page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PreviewAdministrationPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Inspect a preview administration page","description":"Combined preview policy, configuration, binding, lifecycle and isolated deployment state. Members receive read-only actions. Unavailable configuration is reported by section without hiding the page or returning credentials."}},"/api/v1/hosting/apps/{app_id}/previews/{id}/archive":{"post":{"operationId":"archive_api_v1_app_preview","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/previews/{id}/deploy":{"post":{"operationId":"deploy_api_v1_app_preview","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Selected deployment operations accepted","content":{"application/json":{"schema":{"type":"object","required":["preview","operation_ids"],"properties":{"preview":{"type":"object","additionalProperties":true},"operation_ids":{"type":"array","items":{"type":"string"}}}}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"app_service_ids":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Public service IDs belonging to this app and configured in this preview. Omit to deploy all configured services. Invalid or empty selections queue no deployments."},"share_app_default_secrets":{"type":"boolean","default":false,"description":"Explicitly approve active app-default secrets for this preview before deployment."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Deploy all or selected services of a preview"}},"/api/v1/hosting/apps/{app_id}/previews/{id}/expire":{"post":{"operationId":"expire_api_v1_app_preview","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/previews/{id}/operations":{"get":{"operationId":"operations_api_v1_app_preview","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/previews/{id}/pause":{"post":{"operationId":"pause_api_v1_app_preview","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/previews/{id}/refresh_source":{"post":{"operationId":"refresh_source_api_v1_app_preview","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Refreshed preview","content":{"application/json":{"schema":{"type":"object","required":["preview"],"properties":{"preview":{"$ref":"#/components/schemas/PreviewEnvironmentRecord"}}}}}},"400":{"description":"Review token required"},"401":{"description":"Authentication required"},"403":{"description":"Organization administrator required"},"404":{"description":"Preview not found"},"409":{"description":"Review expired","source changed or cleanup incomplete":null}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["review_token"],"properties":{"review_token":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Apply a reviewed source snapshot after preview cleanup"}},"/api/v1/hosting/apps/{app_id}/previews/{id}/resume":{"post":{"operationId":"resume_api_v1_app_preview","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Selected deployment operations accepted","content":{"application/json":{"schema":{"type":"object","required":["preview","operation_ids"],"properties":{"preview":{"type":"object","additionalProperties":true},"operation_ids":{"type":"array","items":{"type":"string"}}}}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"app_service_ids":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Public service IDs belonging to this app and configured in this preview. Omit to deploy all configured services. Invalid or empty selections queue no deployments."},"share_app_default_secrets":{"type":"boolean","default":false,"description":"Explicitly approve active app-default secrets for this preview before deployment."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Resume all or selected services of a preview"}},"/api/v1/hosting/apps/{app_id}/previews/{id}/review_source":{"post":{"operationId":"review_source_api_v1_app_preview","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Expiring source refresh review","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewSourceReview"}}}},"401":{"description":"Authentication required"},"403":{"description":"Organization administrator required"},"404":{"description":"Preview not found"},"409":{"description":"Preview or source unavailable"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Review source configuration changes without values"}},"/api/v1/hosting/apps/{app_id}/previews/{id}/secret_comparison":{"get":{"operationId":"secret_comparison_api_v1_app_preview","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/previews/{id}/sharing_approvals":{"post":{"operationId":"sharing_approvals_api_v1_app_preview","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PreviewSharingSelection"}}}},"security":[{"bearerAuth":[]}]},"get":{"operationId":"get_api_v1_hosting_apps_app_id_previews_id_sharing_approvals","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Sharing selections and available metadata without values","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PreviewSharingApprovals"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/previews/{id}/update_revision":{"post":{"operationId":"update_revision_api_v1_app_preview","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Preview with the selected resolved revision and current generation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Organization-admin access required"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"Preview changed, is Change-owned, is unavailable, or has not finished pause cleanup"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["source_ref","expected_generation"],"properties":{"source_ref":{"type":"string","minLength":1},"expected_generation":{"type":"integer","minimum":1}}}}}},"security":[{"bearerAuth":[]}],"summary":"Select a manual preview's next code revision","description":"Requires organization-admin access and a paused preview whose cleanup has completed. Resolves the ref in the preview app's repository, fences concurrent changes with expected_generation, and preserves configuration and URL reservations. Does not start a deployment or extend expiry. Change-owned previews follow their Change."}},"/api/v1/hosting/apps/{app_id}/previews/{preview_id}/secrets":{"post":{"operationId":"api_v1_app_preview_secrets","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"preview_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Preview-owned secret created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewOwnedSecretReply"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["name","slug","env_key","value"],"properties":{"name":{"type":"string"},"slug":{"type":"string"},"env_key":{"type":"string"},"value":{"type":"string","writeOnly":true}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/previews/{preview_id}/secrets/{id}":{"delete":{"operationId":"api_v1_app_preview_secret","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"preview_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/previews/{preview_id}/secrets/{id}/rotate":{"post":{"operationId":"rotate_api_v1_app_preview_secret","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"preview_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"New preview-owned secret version","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewOwnedSecretReply"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["value"],"properties":{"value":{"type":"string","writeOnly":true}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/secrets":{"get":{"operationId":"api_v1_app_secrets","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of secret metadata objects","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["secrets"],"properties":{"secrets":{"type":"array","items":{"type":"object","required":["id","hosted_app_id","organization_id","slug","name","scope_kind","status"],"properties":{"id":{"type":"string"},"hosted_app_id":{"type":"string"},"organization_id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"env_key":{"type":"string","nullable":true},"scope_kind":{"type":"string"},"status":{"type":"string"},"description":{"type":"string","nullable":true},"rotation_policy":{"type":"string","nullable":true},"expose_to_build":{"type":"boolean"},"has_value":{"type":"boolean"},"value_kind":{"type":"string","nullable":true},"value_digest":{"type":"string","nullable":true},"latest_version_number":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List app secrets (metadata only)"},"post":{"operationId":"post_api_v1_hosting_apps_app_id_secrets","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Created secret metadata","content":{"application/json":{"schema":{"type":"object","required":["id","hosted_app_id","organization_id","slug","name","scope_kind","status"],"properties":{"id":{"type":"string"},"hosted_app_id":{"type":"string"},"organization_id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"env_key":{"type":"string","nullable":true},"scope_kind":{"type":"string"},"status":{"type":"string"},"description":{"type":"string","nullable":true},"rotation_policy":{"type":"string","nullable":true},"expose_to_build":{"type":"boolean"},"has_value":{"type":"boolean"},"value_kind":{"type":"string","nullable":true},"value_digest":{"type":"string","nullable":true},"latest_version_number":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"},"env_key":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"rotation_policy":{"type":"string","nullable":true},"expose_to_build":{"type":"boolean"},"value":{"type":"string","writeOnly":true},"value_kind":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Create an app secret"}},"/api/v1/hosting/apps/{app_id}/secrets/bulk":{"post":{"operationId":"bulk_api_v1_app_secrets","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Bulk import result summary","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["dotenv"],"properties":{"dotenv":{"type":"string"},"dry_run":{"type":"boolean","default":false},"prune":{"type":"boolean","default":false}}}}}},"security":[{"bearerAuth":[]}],"summary":"Bulk import secrets from dotenv text"}},"/api/v1/hosting/apps/{app_id}/secrets/dotenv":{"get":{"operationId":"dotenv_api_v1_app_secrets","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"environment","in":"query","schema":{"type":"string"},"description":"Environment id, slug or name belonging to the app."},{"name":"service","in":"query","schema":{"type":"string"},"description":"Optional service id, slug or name. Requires an environment; applies service-specific preview overrides."}],"responses":{"200":{"description":"Dotenv-formatted secrets (KEY=value pairs)","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"text/plain":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Export selected app or environment secrets as dotenv text (audited)"}},"/api/v1/hosting/apps/{app_id}/secrets/{id}":{"get":{"operationId":"api_v1_app_secret","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Secret metadata","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["id","hosted_app_id","organization_id","slug","name","scope_kind","status"],"properties":{"id":{"type":"string"},"hosted_app_id":{"type":"string"},"organization_id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"env_key":{"type":"string","nullable":true},"scope_kind":{"type":"string"},"status":{"type":"string"},"description":{"type":"string","nullable":true},"rotation_policy":{"type":"string","nullable":true},"expose_to_build":{"type":"boolean"},"has_value":{"type":"boolean"},"value_kind":{"type":"string","nullable":true},"value_digest":{"type":"string","nullable":true},"latest_version_number":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Get a single app secret (metadata only)"},"patch":{"operationId":"patch_api_v1_hosting_apps_app_id_secrets_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated secret metadata","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["id","hosted_app_id","organization_id","slug","name","scope_kind","status"],"properties":{"id":{"type":"string"},"hosted_app_id":{"type":"string"},"organization_id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"env_key":{"type":"string","nullable":true},"scope_kind":{"type":"string"},"status":{"type":"string"},"description":{"type":"string","nullable":true},"rotation_policy":{"type":"string","nullable":true},"expose_to_build":{"type":"boolean"},"has_value":{"type":"boolean"},"value_kind":{"type":"string","nullable":true},"value_digest":{"type":"string","nullable":true},"latest_version_number":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"name":{"type":"string"},"env_key":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"rotation_policy":{"type":"string","nullable":true},"expose_to_build":{"type":"boolean"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Update app secret metadata"},"put":{"operationId":"put_api_v1_hosting_apps_app_id_secrets_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated secret metadata","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["id","hosted_app_id","organization_id","slug","name","scope_kind","status"],"properties":{"id":{"type":"string"},"hosted_app_id":{"type":"string"},"organization_id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"env_key":{"type":"string","nullable":true},"scope_kind":{"type":"string"},"status":{"type":"string"},"description":{"type":"string","nullable":true},"rotation_policy":{"type":"string","nullable":true},"expose_to_build":{"type":"boolean"},"has_value":{"type":"boolean"},"value_kind":{"type":"string","nullable":true},"value_digest":{"type":"string","nullable":true},"latest_version_number":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"name":{"type":"string"},"env_key":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"rotation_policy":{"type":"string","nullable":true},"expose_to_build":{"type":"boolean"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Update app secret metadata (full replacement)"},"delete":{"operationId":"delete_api_v1_hosting_apps_app_id_secrets_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Secret deleted"}},"security":[{"bearerAuth":[]}],"summary":"Delete an app secret"}},"/api/v1/hosting/apps/{app_id}/secrets/{id}/set_value":{"post":{"operationId":"set_value_api_v1_app_secret","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Updated secret metadata after new version","content":{"application/json":{"schema":{"type":"object","required":["id","hosted_app_id","organization_id","slug","name","scope_kind","status"],"properties":{"id":{"type":"string"},"hosted_app_id":{"type":"string"},"organization_id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"env_key":{"type":"string","nullable":true},"scope_kind":{"type":"string"},"status":{"type":"string"},"description":{"type":"string","nullable":true},"rotation_policy":{"type":"string","nullable":true},"expose_to_build":{"type":"boolean"},"has_value":{"type":"boolean"},"value_kind":{"type":"string","nullable":true},"value_digest":{"type":"string","nullable":true},"latest_version_number":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["value"],"properties":{"value":{"type":"string","writeOnly":true},"value_kind":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Write a new secret version (audited)"}},"/api/v1/hosting/apps/{app_id}/secrets/{id}/value":{"get":{"operationId":"value_api_v1_app_secret","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Raw secret value for the current active version","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["id","slug","version_number","value","value_kind"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"env_key":{"type":"string","nullable":true},"version_number":{"type":"integer"},"value":{"type":"string"},"value_kind":{"type":"string"},"value_digest":{"type":"string","nullable":true}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"No active version found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read raw secret value (audited, admin-only)"}},"/api/v1/hosting/apps/{app_id}/service_bindings":{"get":{"operationId":"api_v1_app_service_bindings","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_hosting_apps_app_id_service_bindings","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/service_bindings/{id}":{"get":{"operationId":"api_v1_app_service_binding","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_hosting_apps_app_id_service_bindings_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_hosting_apps_app_id_service_bindings_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_hosting_apps_app_id_service_bindings_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/service_bindings/{id}/disable":{"post":{"operationId":"disable_api_v1_app_service_binding","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/service_bindings/{id}/enable":{"post":{"operationId":"enable_api_v1_app_service_binding","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/service_placements":{"get":{"operationId":"api_v1_app_service_placements","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"service","in":"query","description":"Filter by a service slug belonging to this app.","schema":{"type":"string"}},{"name":"existing","in":"query","description":"Return positive-replica placements with enabled targets in active, undeleted services and environments.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Service placements","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["placements"],"properties":{"placements":{"type":"array","items":{"$ref":"#/components/schemas/AppServicePlacement"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/service_placements/configure":{"put":{"operationId":"configure_api_v1_app_service_placements","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Configured service placement","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["placement"],"properties":{"placement":{"$ref":"#/components/schemas/AppServicePlacement"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Deployment request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"},"409":{"description":"Preview placement requires completed pause cleanup and the current generation"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppServicePlacementPayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/service_placements/{id}":{"get":{"operationId":"api_v1_app_service_placement","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Service placement","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["placement"],"properties":{"placement":{"$ref":"#/components/schemas/AppServicePlacement"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/services":{"get":{"operationId":"api_v1_app_services","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_hosting_apps_app_id_services","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"App service created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["service"],"properties":{"service":{"$ref":"#/components/schemas/AppService"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Infrastructure request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"},"201":{"description":"App service created","content":{"application/json":{"schema":{"type":"object","required":["service"],"properties":{"service":{"$ref":"#/components/schemas/AppService"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppServiceCreatePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/services/{id}":{"get":{"operationId":"api_v1_app_service","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_hosting_apps_app_id_services_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app service","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["service"],"properties":{"service":{"$ref":"#/components/schemas/AppService"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Deployment request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppServiceUpdatePayload"}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_hosting_apps_app_id_services_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app service","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["service"],"properties":{"service":{"$ref":"#/components/schemas/AppService"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Deployment request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppServiceUpdatePayload"}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_hosting_apps_app_id_services_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/services/{id}/archive":{"post":{"operationId":"archive_api_v1_app_service","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app service","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["service"],"properties":{"service":{"$ref":"#/components/schemas/AppService"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/services/{id}/pause":{"post":{"operationId":"pause_api_v1_app_service","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app service","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["service"],"properties":{"service":{"$ref":"#/components/schemas/AppService"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/services/{id}/resume":{"post":{"operationId":"resume_api_v1_app_service","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated app service","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["service"],"properties":{"service":{"$ref":"#/components/schemas/AppService"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/services/{service_id}/endpoints":{"get":{"operationId":"api_v1_app_service_endpoints","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"service_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_hosting_apps_app_id_services_service_id_endpoints","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"service_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/services/{service_id}/endpoints/{id}":{"get":{"operationId":"api_v1_app_service_endpoint","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"service_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_hosting_apps_app_id_services_service_id_endpoints_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"service_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_hosting_apps_app_id_services_service_id_endpoints_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"service_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_hosting_apps_app_id_services_service_id_endpoints_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"service_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/storage_resources":{"get":{"operationId":"api_v1_app_storage_resources","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_hosting_apps_app_id_storage_resources","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"App storage resource created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["storage_resource"],"properties":{"storage_resource":{"$ref":"#/components/schemas/AppStorageResource"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Infrastructure request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"},"201":{"description":"App storage resource created","content":{"application/json":{"schema":{"type":"object","required":["storage_resource"],"properties":{"storage_resource":{"$ref":"#/components/schemas/AppStorageResource"}}}}}},"409":{"description":"Preview is active, archived, expired, or waiting for cleanup","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppStorageResourceCreatePayload"}}}},"security":[{"bearerAuth":[]}],"description":"Preview-owned storage can be created only while the preview is paused with cleanup complete. Creation and provisioning are fenced against preview teardown."}},"/api/v1/hosting/apps/{app_id}/storage_resources/{id}":{"get":{"operationId":"api_v1_app_storage_resource","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_hosting_apps_app_id_storage_resources_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_hosting_apps_app_id_storage_resources_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_hosting_apps_app_id_storage_resources_id_","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/storage_resources/{id}/archive":{"post":{"operationId":"archive_api_v1_app_storage_resource","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Storage resource archived","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["storage_resource"],"properties":{"storage_resource":{"$ref":"#/components/schemas/AppStorageResource"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Infrastructure request failed validation","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Volume archives are destructive (detach + cloud delete) and must send confirm=archive; bucket archives need no body","properties":{"confirm":{"type":"string","enum":["archive"]}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/storage_resources/{id}/issue_access_key":{"post":{"operationId":"issue_access_key_api_v1_app_storage_resource","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/storage_resources/{id}/resume":{"post":{"operationId":"resume_api_v1_app_storage_resource","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{app_id}/storage_resources/{id}/suspend":{"post":{"operationId":"suspend_api_v1_app_storage_resource","tags":["hosting"],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{id}":{"get":{"operationId":"api_v1_app","tags":["hosting"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_hosting_apps_id_","tags":["hosting"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Hosted app updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["app"],"properties":{"app":{"$ref":"#/components/schemas/HostedApp"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/HostedAppUpdatePayload"}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_hosting_apps_id_","tags":["hosting"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Hosted app updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["app"],"properties":{"app":{"$ref":"#/components/schemas/HostedApp"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/HostedAppUpdatePayload"}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_hosting_apps_id_","tags":["hosting"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{id}/activate":{"post":{"operationId":"activate_api_v1_app","tags":["hosting"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/apps/{id}/archive":{"post":{"operationId":"archive_api_v1_app","tags":["hosting"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/locations":{"get":{"operationId":"api_v1_locations","tags":["hosting"],"parameters":[],"responses":{"200":{"description":"Available hosting locations","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["locations"],"properties":{"locations":{"type":"array","items":{"$ref":"#/components/schemas/HostingLocation"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosting/metrics/queries":{"get":{"operationId":"api_v1_metrics_queries","tags":["hosting"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/catalog":{"get":{"operationId":"api_v1_organization_catalog","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/identity_certificates":{"get":{"operationId":"api_v1_organization_identity_certificates","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_identity_organizations_organization_id_identity_certificates","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/identity_certificates/{id}":{"get":{"operationId":"api_v1_organization_identity_certificate","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_identity_organizations_organization_id_identity_certificates_id_","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_identity_organizations_organization_id_identity_certificates_id_","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_identity_organizations_organization_id_identity_certificates_id_","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/identity_certificates/{id}/expire":{"post":{"operationId":"expire_api_v1_organization_identity_certificate","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/identity_certificates/{id}/revoke":{"post":{"operationId":"revoke_api_v1_organization_identity_certificate","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/oidc_trusts":{"get":{"operationId":"api_v1_organization_oidc_trusts","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_identity_organizations_organization_id_oidc_trusts","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/oidc_trusts/{id}":{"get":{"operationId":"api_v1_organization_oidc_trust","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_identity_organizations_organization_id_oidc_trusts_id_","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_identity_organizations_organization_id_oidc_trusts_id_","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_identity_organizations_organization_id_oidc_trusts_id_","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/oidc_trusts/{id}/activate":{"post":{"operationId":"activate_api_v1_organization_oidc_trust","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/oidc_trusts/{id}/pause":{"post":{"operationId":"pause_api_v1_organization_oidc_trust","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/oidc_trusts/{id}/revoke":{"post":{"operationId":"revoke_api_v1_organization_oidc_trust","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/secrets":{"get":{"operationId":"api_v1_organization_secrets","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Organization secrets page (organization summary plus secret metadata)","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization","secrets"],"properties":{"organization":{"$ref":"#/components/schemas/OrganizationSummary"},"secrets":{"type":"array","items":{"type":"object","required":["id","organization_id","hosted_app_id","app_environment_id","app_service_id","owner_service_account_id","slug","name","env_key","scope_kind","status","description","rotation_policy","expose_to_build","expose_to_ci","latest_version_number","current_version","created_by","last_accessed_by","created_at","updated_at","last_accessed_at","created_at_label","updated_at_label","last_accessed_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string","nullable":true},"hosted_app_id":{"type":"string","nullable":true},"app_environment_id":{"type":"string","nullable":true},"app_service_id":{"type":"string","nullable":true},"owner_service_account_id":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"env_key":{"type":"string"},"scope_kind":{"type":"string"},"status":{"type":"string"},"description":{"type":"string","nullable":true},"rotation_policy":{"type":"string","nullable":true},"expose_to_build":{"type":"boolean"},"expose_to_ci":{"type":"boolean"},"latest_version_number":{"type":"integer","nullable":true},"current_version":{"type":"object","nullable":true,"required":["id","secret_id","version_number","value","has_value","value_kind","value_digest","status","created_by_user_id","expires_at","rotated_at","created_at","updated_at"],"properties":{"id":{"type":"string"},"secret_id":{"type":"string"},"version_number":{"type":"integer"},"value":{"type":"string","nullable":true,"writeOnly":true},"has_value":{"type":"boolean"},"value_kind":{"type":"string"},"value_digest":{"type":"string","nullable":true},"status":{"type":"string"},"created_by_user_id":{"type":"string","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true},"rotated_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"created_by":{"type":"object","nullable":true,"required":["id","name","email","picture_url"],"properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"last_accessed_by":{"type":"object","nullable":true,"required":["id","name","email","picture_url"],"properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"last_accessed_at":{"type":"string","format":"date-time","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true},"last_accessed_at_label":{"type":"string","nullable":true}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List organization secrets"},"post":{"operationId":"post_api_v1_identity_organizations_organization_id_secrets","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/secrets/dotenv":{"get":{"operationId":"dotenv_api_v1_organization_secrets","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/secrets/upsert":{"post":{"operationId":"upsert_api_v1_organization_secrets","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated organization secret metadata","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["secret"],"properties":{"secret":{"type":"object","required":["id","organization_id","hosted_app_id","app_environment_id","app_service_id","owner_service_account_id","slug","name","env_key","scope_kind","status","description","rotation_policy","expose_to_build","expose_to_ci","latest_version_number","current_version","created_by","last_accessed_by","created_at","updated_at","last_accessed_at","created_at_label","updated_at_label","last_accessed_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string","nullable":true},"hosted_app_id":{"type":"string","nullable":true},"app_environment_id":{"type":"string","nullable":true},"app_service_id":{"type":"string","nullable":true},"owner_service_account_id":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"env_key":{"type":"string"},"scope_kind":{"type":"string"},"status":{"type":"string"},"description":{"type":"string","nullable":true},"rotation_policy":{"type":"string","nullable":true},"expose_to_build":{"type":"boolean"},"expose_to_ci":{"type":"boolean"},"latest_version_number":{"type":"integer","nullable":true},"current_version":{"type":"object","nullable":true,"required":["id","secret_id","version_number","value","has_value","value_kind","value_digest","status","created_by_user_id","expires_at","rotated_at","created_at","updated_at"],"properties":{"id":{"type":"string"},"secret_id":{"type":"string"},"version_number":{"type":"integer"},"value":{"type":"string","nullable":true,"writeOnly":true},"has_value":{"type":"boolean"},"value_kind":{"type":"string"},"value_digest":{"type":"string","nullable":true},"status":{"type":"string"},"created_by_user_id":{"type":"string","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true},"rotated_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"created_by":{"type":"object","nullable":true,"required":["id","name","email","picture_url"],"properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"last_accessed_by":{"type":"object","nullable":true,"required":["id","name","email","picture_url"],"properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"last_accessed_at":{"type":"string","format":"date-time","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true},"last_accessed_at_label":{"type":"string","nullable":true}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Created organization secret metadata","content":{"application/json":{"schema":{"type":"object","required":["secret"],"properties":{"secret":{"type":"object","required":["id","organization_id","hosted_app_id","app_environment_id","app_service_id","owner_service_account_id","slug","name","env_key","scope_kind","status","description","rotation_policy","expose_to_build","expose_to_ci","latest_version_number","current_version","created_by","last_accessed_by","created_at","updated_at","last_accessed_at","created_at_label","updated_at_label","last_accessed_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string","nullable":true},"hosted_app_id":{"type":"string","nullable":true},"app_environment_id":{"type":"string","nullable":true},"app_service_id":{"type":"string","nullable":true},"owner_service_account_id":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"env_key":{"type":"string"},"scope_kind":{"type":"string"},"status":{"type":"string"},"description":{"type":"string","nullable":true},"rotation_policy":{"type":"string","nullable":true},"expose_to_build":{"type":"boolean"},"expose_to_ci":{"type":"boolean"},"latest_version_number":{"type":"integer","nullable":true},"current_version":{"type":"object","nullable":true,"required":["id","secret_id","version_number","value","has_value","value_kind","value_digest","status","created_by_user_id","expires_at","rotated_at","created_at","updated_at"],"properties":{"id":{"type":"string"},"secret_id":{"type":"string"},"version_number":{"type":"integer"},"value":{"type":"string","nullable":true,"writeOnly":true},"has_value":{"type":"boolean"},"value_kind":{"type":"string"},"value_digest":{"type":"string","nullable":true},"status":{"type":"string"},"created_by_user_id":{"type":"string","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true},"rotated_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"created_by":{"type":"object","nullable":true,"required":["id","name","email","picture_url"],"properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"last_accessed_by":{"type":"object","nullable":true,"required":["id","name","email","picture_url"],"properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"last_accessed_at":{"type":"string","format":"date-time","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true},"last_accessed_at_label":{"type":"string","nullable":true}}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["env_key","value"],"properties":{"env_key":{"type":"string"},"name":{"type":"string"},"scope_kind":{"type":"string","enum":["organization"]},"expose_to_ci":{"type":"boolean"},"value":{"type":"string","writeOnly":true}}}}}},"security":[{"bearerAuth":[]}],"summary":"Create or rotate an organization secret by environment key"}},"/api/v1/identity/organizations/{organization_id}/secrets/{id}":{"get":{"operationId":"api_v1_organization_secret","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_identity_organizations_organization_id_secrets_id_","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_identity_organizations_organization_id_secrets_id_","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_identity_organizations_organization_id_secrets_id_","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Organization secret deleted"}},"security":[{"bearerAuth":[]}],"summary":"Delete an organization secret"}},"/api/v1/identity/organizations/{organization_id}/secrets/{id}/disable":{"post":{"operationId":"disable_api_v1_organization_secret","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/secrets/{id}/enable":{"post":{"operationId":"enable_api_v1_organization_secret","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/secrets/{id}/rotate":{"post":{"operationId":"rotate_api_v1_organization_secret","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/secrets/{id}/value":{"get":{"operationId":"value_api_v1_organization_secret","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/secrets/{secret_id}/grants":{"get":{"operationId":"api_v1_organization_secret_grants","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"secret_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_identity_organizations_organization_id_secrets_secret_id_grants","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"secret_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/secrets/{secret_id}/grants/{id}":{"get":{"operationId":"api_v1_organization_secret_grant","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"secret_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_identity_organizations_organization_id_secrets_secret_id_grants_id_","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"secret_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_identity_organizations_organization_id_secrets_secret_id_grants_id_","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"secret_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_identity_organizations_organization_id_secrets_secret_id_grants_id_","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"secret_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/secrets/{secret_id}/grants/{id}/restore":{"post":{"operationId":"restore_api_v1_organization_secret_grant","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"secret_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/secrets/{secret_id}/grants/{id}/revoke":{"post":{"operationId":"revoke_api_v1_organization_secret_grant","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"secret_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/secrets/{secret_id}/grants/{id}/suspend":{"post":{"operationId":"suspend_api_v1_organization_secret_grant","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"secret_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/secrets/{secret_id}/versions":{"get":{"operationId":"api_v1_organization_secret_versions","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"secret_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_identity_organizations_organization_id_secrets_secret_id_versions","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"secret_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/secrets/{secret_id}/versions/{id}":{"get":{"operationId":"api_v1_organization_secret_version","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"secret_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_identity_organizations_organization_id_secrets_secret_id_versions_id_","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"secret_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_identity_organizations_organization_id_secrets_secret_id_versions_id_","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"secret_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_identity_organizations_organization_id_secrets_secret_id_versions_id_","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"secret_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/secrets/{secret_id}/versions/{id}/redact":{"post":{"operationId":"redact_api_v1_organization_secret_version","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"secret_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/secrets/{secret_id}/versions/{id}/revoke":{"post":{"operationId":"revoke_api_v1_organization_secret_version","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"secret_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/service_accounts":{"get":{"operationId":"api_v1_organization_service_accounts","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_identity_organizations_organization_id_service_accounts","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/service_accounts/{id}":{"get":{"operationId":"api_v1_organization_service_account","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_identity_organizations_organization_id_service_accounts_id_","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_identity_organizations_organization_id_service_accounts_id_","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_identity_organizations_organization_id_service_accounts_id_","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/service_accounts/{id}/activate":{"post":{"operationId":"activate_api_v1_organization_service_account","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/service_accounts/{id}/revoke":{"post":{"operationId":"revoke_api_v1_organization_service_account","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/service_accounts/{id}/suspend":{"post":{"operationId":"suspend_api_v1_organization_service_account","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/workload_identities":{"get":{"operationId":"api_v1_organization_workload_identities","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_identity_organizations_organization_id_workload_identities","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/workload_identities/token_exchange":{"post":{"operationId":"token_exchange_api_v1_organization_workload_identities","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/workload_identities/{id}":{"get":{"operationId":"api_v1_organization_workload_identity","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_identity_organizations_organization_id_workload_identities_id_","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_identity_organizations_organization_id_workload_identities_id_","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_identity_organizations_organization_id_workload_identities_id_","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/workload_identities/{id}/activate":{"post":{"operationId":"activate_api_v1_organization_workload_identity","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/workload_identities/{id}/issue_exchange_token":{"post":{"operationId":"issue_exchange_token_api_v1_organization_workload_identity","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/workload_identities/{id}/materialize":{"post":{"operationId":"materialize_api_v1_organization_workload_identity","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/workload_identities/{id}/revoke":{"post":{"operationId":"revoke_api_v1_organization_workload_identity","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/identity/organizations/{organization_id}/workload_identities/{id}/suspend":{"post":{"operationId":"suspend_api_v1_organization_workload_identity","tags":["identity"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/marketing_settings":{"get":{"operationId":"api_v1_marketing_settings","tags":["marketing_settings"],"parameters":[],"responses":{"200":{"description":"Current homepage call-to-action mode","content":{"application/json":{"schema":{"type":"object","required":["call_first"],"properties":{"call_first":{"type":"boolean"}}}}}}},"security":[],"summary":"Read public marketing presentation settings","description":"Available without authentication. The response is not cached."}},"/api/v1/mcp":{"get|post|delete":{"operationId":"api_v1_mcp","tags":["mcp"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/mcp/oauth/authorize":{"get":{"operationId":"api_v1_mcp_oauth_authorize","tags":["mcp"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/mcp/oauth/consent":{"get":{"operationId":"api_v1_mcp_oauth_consent","tags":["mcp"],"parameters":[{"name":"request","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Verified client request and accessible Verify organizations","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["client_name","redirect_uri","scope","organizations"],"properties":{"client_name":{"type":"string"},"redirect_uri":{"type":"string"},"scope":{"type":"string"},"organizations":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Review an OAuth request to connect a verification client"},"post":{"operationId":"post_api_v1_mcp_oauth_consent","tags":["mcp"],"parameters":[],"responses":{"200":{"description":"Validated client callback URL","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["redirect_url"],"properties":{"redirect_url":{"type":"string"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["request","approve"],"properties":{"request":{"type":"string"},"approve":{"type":"boolean"},"organization_id":{"type":"string"},"all_organizations":{"type":"boolean","description":"Approve access to all organizations the signed-in user can access, including future memberships. Defaults to false; otherwise organization_id is required."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Approve or deny a verification OAuth connection"}},"/api/v1/mcp/oauth/register":{"post":{"operationId":"api_v1_mcp_oauth_register","tags":["mcp"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/mcp/oauth/revoke":{"post":{"operationId":"api_v1_mcp_oauth_revoke","tags":["mcp"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/mcp/oauth/token":{"post":{"operationId":"api_v1_mcp_oauth_token","tags":["mcp"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/mcp/verify":{"get|post|delete":{"operationId":"api_v1_mcp_verify","tags":["mcp"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/me":{"get":{"operationId":"api_v1_me","tags":["me"],"parameters":[],"responses":{"200":{"description":"Current authenticated session","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AuthSession","required":["id","email","name","picture_url","app_promotion","github_prs_authored_by_change_author","github_pr_user_authorization_connected","github_pr_user_authorization_login","organizations","active_organization","pending_organization_invitation_count","pending_organization_invitation_count_label"],"properties":{"openai_sign_in_enabled":{"type":"boolean"},"openai_sign_in_connected":{"type":"boolean"},"app_promotion":{"$ref":"#/components/schemas/AppPromotion"},"id":{"type":"string"},"email":{"type":"string","format":"email"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true},"github_prs_authored_by_change_author":{"type":"boolean"},"github_pr_user_authorization_connected":{"type":"boolean"},"github_pr_user_authorization_login":{"type":"string","nullable":true},"superadmin":{"type":"boolean"},"organizations":{"type":"array","items":{"type":"object","required":["id","slug","name","timezone","sandbox_region","logo_url","role","personal","member_count","pending_invitation_count","repository_count","activated_products","can_activate_products","github_prs_authored_by_change_author","verify_pr_scenario_writing_enabled","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string","description":"Default IANA timezone for organization-local schedules such as nightly dreaming."},"logo_url":{"type":"string","nullable":true},"role":{"type":"string","nullable":true},"personal":{"type":"boolean"},"member_count":{"type":"integer","minimum":0},"pending_invitation_count":{"type":"integer","minimum":0},"repository_count":{"type":"integer","minimum":0},"source_ui_enabled":{"type":"boolean","description":"Organization-scoped Source workspace rollout; missing values mean disabled."},"source_control_providers":{"type":"array","description":"Connected source control providers for this organization. Missing values mean no providers are known.","uniqueItems":true,"items":{"type":"string","enum":["github","gitlab"]}},"activated_products":{"type":"array","description":"Products this organization has activated (PRD 144). Activation is what makes a product's surfaces visible; it is neither permission nor entitlement.","items":{"type":"string","enum":["transcripts","vcs"]}},"can_activate_products":{"type":"boolean","description":"Whether the current user may activate a product for this organization: the organization-admin rule the activation endpoint enforces."},"sandbox_region":{"type":"string","enum":["us-was-1","us-pdx-1","eu-lon-1","eu-fra-1","auto"]},"github_prs_authored_by_change_author":{"type":"boolean"},"verify_pr_scenario_writing_enabled":{"type":"boolean"},"shared_agent_personal_accounts_enabled":{"type":"boolean","description":"Whether a shared agent may use one person's account for everyone who chats with it. Present only where agent integrations are on."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}},"active_organization":{"oneOf":[{"type":"object","required":["id","slug","name","timezone","sandbox_region","logo_url","role","personal","member_count","pending_invitation_count","repository_count","activated_products","can_activate_products","github_prs_authored_by_change_author","verify_pr_scenario_writing_enabled","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string","description":"Default IANA timezone for organization-local schedules such as nightly dreaming."},"logo_url":{"type":"string","nullable":true},"role":{"type":"string","nullable":true},"personal":{"type":"boolean"},"member_count":{"type":"integer","minimum":0},"pending_invitation_count":{"type":"integer","minimum":0},"repository_count":{"type":"integer","minimum":0},"source_ui_enabled":{"type":"boolean","description":"Organization-scoped Source workspace rollout; missing values mean disabled."},"source_control_providers":{"type":"array","description":"Connected source control providers for this organization. Missing values mean no providers are known.","uniqueItems":true,"items":{"type":"string","enum":["github","gitlab"]}},"activated_products":{"type":"array","description":"Products this organization has activated (PRD 144). Activation is what makes a product's surfaces visible; it is neither permission nor entitlement.","items":{"type":"string","enum":["transcripts","vcs"]}},"can_activate_products":{"type":"boolean","description":"Whether the current user may activate a product for this organization: the organization-admin rule the activation endpoint enforces."},"sandbox_region":{"type":"string","enum":["us-was-1","us-pdx-1","eu-lon-1","eu-fra-1","auto"]},"github_prs_authored_by_change_author":{"type":"boolean"},"verify_pr_scenario_writing_enabled":{"type":"boolean"},"shared_agent_personal_accounts_enabled":{"type":"boolean","description":"Whether a shared agent may use one person's account for everyone who chats with it. Present only where agent integrations are on."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},{"type":"null"}]},"pending_organization_invitation_count":{"type":"integer","minimum":0},"pending_organization_invitation_count_label":{"type":"string"},"api_token":{"type":"string"},"api_base_url":{"type":"string","format":"uri"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_me","tags":["me"],"parameters":[],"responses":{"200":{"description":"Updated authenticated session","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["id","email","name","picture_url","app_promotion","github_prs_authored_by_change_author","github_pr_user_authorization_connected","github_pr_user_authorization_login","organizations","active_organization","pending_organization_invitation_count","pending_organization_invitation_count_label"],"properties":{"openai_sign_in_enabled":{"type":"boolean"},"openai_sign_in_connected":{"type":"boolean"},"app_promotion":{"$ref":"#/components/schemas/AppPromotion"},"id":{"type":"string"},"email":{"type":"string","format":"email"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true},"github_prs_authored_by_change_author":{"type":"boolean"},"github_pr_user_authorization_connected":{"type":"boolean"},"github_pr_user_authorization_login":{"type":"string","nullable":true},"superadmin":{"type":"boolean"},"organizations":{"type":"array","items":{"type":"object","required":["id","slug","name","timezone","sandbox_region","logo_url","role","personal","member_count","pending_invitation_count","repository_count","activated_products","can_activate_products","github_prs_authored_by_change_author","verify_pr_scenario_writing_enabled","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string","description":"Default IANA timezone for organization-local schedules such as nightly dreaming."},"logo_url":{"type":"string","nullable":true},"role":{"type":"string","nullable":true},"personal":{"type":"boolean"},"member_count":{"type":"integer","minimum":0},"pending_invitation_count":{"type":"integer","minimum":0},"repository_count":{"type":"integer","minimum":0},"source_ui_enabled":{"type":"boolean","description":"Organization-scoped Source workspace rollout; missing values mean disabled."},"source_control_providers":{"type":"array","description":"Connected source control providers for this organization. Missing values mean no providers are known.","uniqueItems":true,"items":{"type":"string","enum":["github","gitlab"]}},"activated_products":{"type":"array","description":"Products this organization has activated (PRD 144). Activation is what makes a product's surfaces visible; it is neither permission nor entitlement.","items":{"type":"string","enum":["transcripts","vcs"]}},"can_activate_products":{"type":"boolean","description":"Whether the current user may activate a product for this organization: the organization-admin rule the activation endpoint enforces."},"sandbox_region":{"type":"string","enum":["us-was-1","us-pdx-1","eu-lon-1","eu-fra-1","auto"]},"github_prs_authored_by_change_author":{"type":"boolean"},"verify_pr_scenario_writing_enabled":{"type":"boolean"},"shared_agent_personal_accounts_enabled":{"type":"boolean","description":"Whether a shared agent may use one person's account for everyone who chats with it. Present only where agent integrations are on."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}},"active_organization":{"oneOf":[{"type":"object","required":["id","slug","name","timezone","sandbox_region","logo_url","role","personal","member_count","pending_invitation_count","repository_count","activated_products","can_activate_products","github_prs_authored_by_change_author","verify_pr_scenario_writing_enabled","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string","description":"Default IANA timezone for organization-local schedules such as nightly dreaming."},"logo_url":{"type":"string","nullable":true},"role":{"type":"string","nullable":true},"personal":{"type":"boolean"},"member_count":{"type":"integer","minimum":0},"pending_invitation_count":{"type":"integer","minimum":0},"repository_count":{"type":"integer","minimum":0},"source_ui_enabled":{"type":"boolean","description":"Organization-scoped Source workspace rollout; missing values mean disabled."},"source_control_providers":{"type":"array","description":"Connected source control providers for this organization. Missing values mean no providers are known.","uniqueItems":true,"items":{"type":"string","enum":["github","gitlab"]}},"activated_products":{"type":"array","description":"Products this organization has activated (PRD 144). Activation is what makes a product's surfaces visible; it is neither permission nor entitlement.","items":{"type":"string","enum":["transcripts","vcs"]}},"can_activate_products":{"type":"boolean","description":"Whether the current user may activate a product for this organization: the organization-admin rule the activation endpoint enforces."},"sandbox_region":{"type":"string","enum":["us-was-1","us-pdx-1","eu-lon-1","eu-fra-1","auto"]},"github_prs_authored_by_change_author":{"type":"boolean"},"verify_pr_scenario_writing_enabled":{"type":"boolean"},"shared_agent_personal_accounts_enabled":{"type":"boolean","description":"Whether a shared agent may use one person's account for everyone who chats with it. Present only where agent integrations are on."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},{"type":"null"}]},"pending_organization_invitation_count":{"type":"integer","minimum":0},"pending_organization_invitation_count_label":{"type":"string"},"api_token":{"type":"string"},"api_base_url":{"type":"string","format":"uri"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/me/account_deletion":{"get":{"operationId":"api_v1_me_account_deletion","tags":["me"],"parameters":[],"responses":{"200":{"description":"Current request or null when none exists","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AccountDeletionResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read your tracked account-deletion request"},"post":{"operationId":"post_api_v1_me_account_deletion","tags":["me"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Sign-in required"},"403":{"description":"Runtime, system or impersonation credentials cannot request deletion"},"404":{"description":"Not found"},"422":{"description":"Explicit confirmation required"},"502":{"description":"Bad gateway"},"202":{"description":"Durable deletion request recorded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountDeletionResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["confirmation"],"properties":{"confirmation":{"type":"string","const":"DELETE MY ACCOUNT"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Request permanent deletion of your account and associated personal information","description":"Requires a personal user sign-in and explicit confirmation. Repeated requests return the original reference and 30-day deadline. Fulfillment is operator-owned; requesting deletion does not itself delete data or cancel third-party subscriptions."}},"/api/v1/me/active_organization":{"put":{"operationId":"api_v1_me_active_organization","tags":["me"],"parameters":[],"responses":{"200":{"description":"Active organization updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["active_organization"],"properties":{"active_organization":{"oneOf":[{"$ref":"#/components/schemas/OrganizationSummary"},{"type":"null"}]}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ActiveOrganizationPayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/me/app_promotion":{"post":{"operationId":"api_v1_me_app_promotion","tags":["me"],"parameters":[],"responses":{"200":{"description":"Updated app promotion eligibility","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AppPromotion"}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Invalid promotion action"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["action_name"],"properties":{"action_name":{"type":"string","enum":["desktop_installed","mobile_installed","request_ios_testing","request_android_testing"]}}}}}},"security":[{"bearerAuth":[]}],"summary":"Acknowledge an installed app or request mobile testing"}},"/api/v1/me/emails":{"get":{"operationId":"api_v1_user_emails","tags":["me"],"parameters":[],"responses":{"200":{"description":"Account emails","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AccountEmailsPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List emails registered on the current account"},"post":{"operationId":"post_api_v1_me_emails","tags":["me"],"parameters":[],"responses":{"200":{"description":"Email registered and verification sent","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AccountEmailsPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Email registered and verification sent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountEmailsPage"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["email"],"properties":{"email":{"type":"string","format":"email"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Register an additional email address"}},"/api/v1/me/emails/{id}":{"patch":{"operationId":"api_v1_user_email","tags":["me"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated account emails","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AccountEmailsPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"oneOf":[{"type":"object","required":["account"],"properties":{"account":{"type":"boolean"}}},{"type":"object","required":["commit_author"],"properties":{"commit_author":{"type":"boolean"}}}]}}}},"security":[{"bearerAuth":[]}],"summary":"Set a verified email as the account or commit author address"},"put":{"operationId":"put_api_v1_me_emails_id_","tags":["me"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_me_emails_id_","tags":["me"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated account emails","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AccountEmailsPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Remove an additional email address"}},"/api/v1/me/emails/{id}/resend_verification":{"post":{"operationId":"resend_verification_api_v1_user_email","tags":["me"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated account emails","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AccountEmailsPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Resend the verification email for an unverified address"}},"/api/v1/me/landing":{"get":{"operationId":"api_v1_me_landing","tags":["me"],"parameters":[],"responses":{"200":{"description":"Final organization or project destination","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["path"],"properties":{"path":{"type":"string"}}}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Resolve the authenticated web landing destination"}},"/api/v1/me/organization_session":{"post":{"operationId":"api_v1_me_organization_session","tags":["me"],"parameters":[],"responses":{"200":{"description":"Authenticated session","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AuthSession"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Organization is not accessible"},"422":{"description":"Organization switching requires a session login"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization_slug"],"properties":{"organization_slug":{"type":"string"}}}}}},"security":[{"browserSession":[],"csrfToken":[]}],"summary":"Select an accessible organization by slug and return the updated session","description":"Requires the browser session cookie issued by login and an X-CSRF-Token obtained from GET /api/v1/auth/csrf with that same cookie. Bearer credentials are not supported."}},"/api/v1/me/profile_image":{"put":{"operationId":"api_v1_me_profile_image","tags":["me"],"parameters":[],"responses":{"200":{"description":"Authenticated session","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AuthSession"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/ImageUploadPayload"}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_me_profile_image","tags":["me"],"parameters":[],"responses":{"200":{"description":"Authenticated session","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AuthSession"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/me/workspace_suggestion":{"get":{"operationId":"api_v1_me_workspace_suggestion","tags":["me"],"parameters":[],"responses":{"200":{"description":"Suggested workspace name and address","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["name","slug"],"properties":{"name":{"type":"string"},"slug":{"type":"string"}}}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Suggest a name and an unclaimed address for the user's new workspace"}},"/api/v1/merge_resolutions":{"post":{"operationId":"createMergeResolution","tags":["merge_resolutions"],"parameters":[],"responses":{"200":{"description":"Resolved file bytes, or resolved=false when the conflict is left intact","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/MergeResolutionResult"}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Input is not three UTF-8 strings"},"502":{"description":"Bad gateway"},"413":{"description":"Body exceeds 4 MiB"},"429":{"description":"Per-user resolution rate limit exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/MergeResolutionInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Resolve a three-way file conflict after line merge and Mergiraf, using MagicMerge as last resort"}},"/api/v1/metronome/webhooks":{"post":{"operationId":"api_v1_metronome_webhooks","tags":["metronome"],"parameters":[],"responses":{"200":{"description":"Event stored; processing runs in a job."},"400":{"description":"Malformed body."},"401":{"description":"Signature invalid or the secret is not configured."}},"security":[],"summary":"Metronome event destination (signature verified)"}},"/api/v1/model_subscription_accounts":{"get":{"operationId":"modelSubscriptionAccountsGet","tags":["model_subscription_accounts","Model subscriptions"],"parameters":[],"responses":{"200":{"description":"Your personal model subscription accounts","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ModelSubscriptionAccounts"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"modelSubscriptionAccountsPost","tags":["model_subscription_accounts","Model subscriptions"],"parameters":[],"responses":{"200":{"description":"Your personal model subscription accounts","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ModelSubscriptionAccounts"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"oneOf":[{"type":"object","required":["action_name","token"],"properties":{"action_name":{"type":"string","enum":["claude"]},"token":{"type":"string","maxLength":32768},"label":{"type":"string","maxLength":160}}},{"type":"object","required":["action_name","agent_id","profile_id"],"properties":{"action_name":{"type":"string","enum":["import"]},"agent_id":{"type":"string"},"profile_id":{"type":"string"}}}]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/model_subscription_accounts/connection/{agent_id}":{"get":{"operationId":"modelSubscriptionConnectionGet","tags":["model_subscription_accounts","Model subscriptions"],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Provider sign-in state","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSubscriptionSettings"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"modelSubscriptionConnectionPost","tags":["model_subscription_accounts","Model subscriptions"],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Provider sign-in state","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSubscriptionSettings"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"oneOf":[{"type":"object","required":["action_name","method"],"properties":{"action_name":{"type":"string","enum":["start"]},"method":{"type":"string","enum":["openai/openai-device-code","xai/xai-oauth"]}}},{"type":"object","required":["action_name","login_id","step_id"],"properties":{"action_name":{"type":"string","enum":["answer"]},"login_id":{"type":"string"},"step_id":{"type":"string"},"value":{"oneOf":[{"type":"string"},{"type":"boolean"}]}}},{"type":"object","required":["action_name","login_id"],"properties":{"action_name":{"type":"string","enum":["cancel"]},"login_id":{"type":"string"}}}]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/model_subscription_accounts/{id}":{"patch":{"operationId":"modelSubscriptionAccountPatch","tags":["model_subscription_accounts","Model subscriptions"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Your personal model subscription accounts","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ModelSubscriptionAccounts"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["label"],"properties":{"label":{"type":"string","maxLength":160}}}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_model_subscription_accounts_id_","tags":["model_subscription_accounts"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"modelSubscriptionAccountDelete","tags":["model_subscription_accounts","Model subscriptions"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Your personal model subscription accounts","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ModelSubscriptionAccounts"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces":{"get":{"operationId":"api_v1_spaces","tags":["networking"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_networking_spaces","tags":["networking"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{id}":{"get":{"operationId":"api_v1_space","tags":["networking"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_networking_spaces_id_","tags":["networking"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_networking_spaces_id_","tags":["networking"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_networking_spaces_id_","tags":["networking"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{id}/activate":{"post":{"operationId":"activate_api_v1_space","tags":["networking"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{id}/archive":{"post":{"operationId":"archive_api_v1_space","tags":["networking"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{id}/pause":{"post":{"operationId":"pause_api_v1_space","tags":["networking"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{id}/validate_route":{"post":{"operationId":"validate_route_api_v1_space","tags":["networking"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/catalog":{"get":{"operationId":"api_v1_space_catalog","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/dns_records":{"get":{"operationId":"api_v1_space_dns_records","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_networking_spaces_space_id_dns_records","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/dns_records/config":{"get":{"operationId":"config_api_v1_space_dns_records","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/dns_records/sync_report":{"post":{"operationId":"sync_report_api_v1_space_dns_records","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/dns_records/{id}":{"get":{"operationId":"api_v1_space_dns_record","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_networking_spaces_space_id_dns_records_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_networking_spaces_space_id_dns_records_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_networking_spaces_space_id_dns_records_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/enrollment_tokens":{"get":{"operationId":"api_v1_space_enrollment_tokens","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_networking_spaces_space_id_enrollment_tokens","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/enrollment_tokens/{id}":{"get":{"operationId":"api_v1_space_enrollment_token","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_networking_spaces_space_id_enrollment_tokens_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_networking_spaces_space_id_enrollment_tokens_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_networking_spaces_space_id_enrollment_tokens_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/enrollment_tokens/{id}/revoke":{"post":{"operationId":"revoke_api_v1_space_enrollment_token","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/gateways":{"get":{"operationId":"api_v1_space_gateways","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_networking_spaces_space_id_gateways","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/gateways/{id}":{"get":{"operationId":"api_v1_space_gateway","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_networking_spaces_space_id_gateways_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_networking_spaces_space_id_gateways_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_networking_spaces_space_id_gateways_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/gateways/{id}/config":{"get":{"operationId":"config_api_v1_space_gateway","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/gateways/{id}/heartbeat":{"post":{"operationId":"heartbeat_api_v1_space_gateway","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/gateways/{id}/sync":{"post":{"operationId":"sync_api_v1_space_gateway","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/group_memberships":{"get":{"operationId":"api_v1_space_group_memberships","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_networking_spaces_space_id_group_memberships","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/group_memberships/{id}":{"patch":{"operationId":"api_v1_space_group_membership","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_networking_spaces_space_id_group_memberships_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_networking_spaces_space_id_group_memberships_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/groups":{"get":{"operationId":"api_v1_space_groups","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_networking_spaces_space_id_groups","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/groups/{id}":{"patch":{"operationId":"api_v1_space_group","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_networking_spaces_space_id_groups_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_networking_spaces_space_id_groups_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/peer_attachments":{"get":{"operationId":"api_v1_space_peer_attachments","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_networking_spaces_space_id_peer_attachments","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/peer_attachments/{id}":{"patch":{"operationId":"api_v1_space_peer_attachment","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_networking_spaces_space_id_peer_attachments_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_networking_spaces_space_id_peer_attachments_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/peers":{"get":{"operationId":"api_v1_space_peers","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_networking_spaces_space_id_peers","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/peers/enroll":{"post":{"operationId":"enroll_api_v1_space_peers","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/peers/{id}":{"get":{"operationId":"api_v1_space_peer","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_networking_spaces_space_id_peers_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_networking_spaces_space_id_peers_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_networking_spaces_space_id_peers_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/peers/{id}/approve":{"post":{"operationId":"approve_api_v1_space_peer","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/peers/{id}/bootstrap":{"get":{"operationId":"bootstrap_api_v1_space_peer","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/peers/{id}/revoke":{"post":{"operationId":"revoke_api_v1_space_peer","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/peers/{id}/suspend":{"post":{"operationId":"suspend_api_v1_space_peer","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/policies":{"get":{"operationId":"api_v1_space_policies","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_networking_spaces_space_id_policies","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/policies/{id}":{"get":{"operationId":"api_v1_space_policy","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_networking_spaces_space_id_policies_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_networking_spaces_space_id_policies_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_networking_spaces_space_id_policies_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/policies/{id}/activate":{"post":{"operationId":"activate_api_v1_space_policy","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/policies/{id}/archive":{"post":{"operationId":"archive_api_v1_space_policy","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/policies/{id}/pause":{"post":{"operationId":"pause_api_v1_space_policy","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/segments":{"get":{"operationId":"api_v1_space_segments","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_networking_spaces_space_id_segments","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/networking/spaces/{space_id}/segments/{id}":{"get":{"operationId":"api_v1_space_segment","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_networking_spaces_space_id_segments_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_networking_spaces_space_id_segments_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_networking_spaces_space_id_segments_id_","tags":["networking"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/clickhouse_clusters":{"get":{"operationId":"api_v1_clickhouse_clusters","tags":["observability"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_observability_clickhouse_clusters","tags":["observability"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/clickhouse_clusters/{id}":{"get":{"operationId":"api_v1_clickhouse_cluster","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_observability_clickhouse_clusters_id_","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_observability_clickhouse_clusters_id_","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_observability_clickhouse_clusters_id_","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/clickhouse_clusters/{id}/activate":{"post":{"operationId":"activate_api_v1_clickhouse_cluster","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/clickhouse_clusters/{id}/archive":{"post":{"operationId":"archive_api_v1_clickhouse_cluster","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/clickhouse_clusters/{id}/deploy":{"post":{"operationId":"deploy_api_v1_clickhouse_cluster","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/clickhouse_clusters/{id}/pause":{"post":{"operationId":"pause_api_v1_clickhouse_cluster","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/quickwit_clusters":{"get":{"operationId":"api_v1_quickwit_clusters","tags":["observability"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_observability_quickwit_clusters","tags":["observability"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/quickwit_clusters/{id}":{"get":{"operationId":"api_v1_quickwit_cluster","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_observability_quickwit_clusters_id_","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_observability_quickwit_clusters_id_","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_observability_quickwit_clusters_id_","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/quickwit_clusters/{id}/activate":{"post":{"operationId":"activate_api_v1_quickwit_cluster","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/quickwit_clusters/{id}/archive":{"post":{"operationId":"archive_api_v1_quickwit_cluster","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/quickwit_clusters/{id}/deploy":{"post":{"operationId":"deploy_api_v1_quickwit_cluster","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/quickwit_clusters/{id}/pause":{"post":{"operationId":"pause_api_v1_quickwit_cluster","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces":{"get":{"operationId":"get_api_v1_observability_spaces","tags":["observability"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_observability_spaces","tags":["observability"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{id}":{"get":{"operationId":"get_api_v1_observability_spaces_id_","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_observability_spaces_id_","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_observability_spaces_id_","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_observability_spaces_id_","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{id}/activate":{"post":{"operationId":"post_api_v1_observability_spaces_id_activate","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{id}/archive":{"post":{"operationId":"post_api_v1_observability_spaces_id_archive","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{id}/pause":{"post":{"operationId":"post_api_v1_observability_spaces_id_pause","tags":["observability"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/alert_rules":{"get":{"operationId":"api_v1_space_alert_rules","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_observability_spaces_space_id_alert_rules","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/alert_rules/{alert_rule_id}/events":{"get":{"operationId":"api_v1_space_alert_rule_events","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"alert_rule_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_observability_spaces_space_id_alert_rules_alert_rule_id_events","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"alert_rule_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/alert_rules/{alert_rule_id}/events/{id}":{"get":{"operationId":"api_v1_space_alert_rule_event","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"alert_rule_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_observability_spaces_space_id_alert_rules_alert_rule_id_events_id_","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"alert_rule_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/alert_rules/{alert_rule_id}/events/{id}/acknowledge":{"post":{"operationId":"acknowledge_api_v1_space_alert_rule_event","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"alert_rule_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/alert_rules/{alert_rule_id}/events/{id}/resolve":{"post":{"operationId":"resolve_api_v1_space_alert_rule_event","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"alert_rule_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/alert_rules/{alert_rule_id}/events/{id}/silence":{"post":{"operationId":"silence_api_v1_space_alert_rule_event","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"alert_rule_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/alert_rules/{id}":{"get":{"operationId":"api_v1_space_alert_rule","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_observability_spaces_space_id_alert_rules_id_","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_observability_spaces_space_id_alert_rules_id_","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_observability_spaces_space_id_alert_rules_id_","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/alert_rules/{id}/activate":{"post":{"operationId":"activate_api_v1_space_alert_rule","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/alert_rules/{id}/archive":{"post":{"operationId":"archive_api_v1_space_alert_rule","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/alert_rules/{id}/pause":{"post":{"operationId":"pause_api_v1_space_alert_rule","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/audit_events":{"get":{"operationId":"api_v1_space_audit_events","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_observability_spaces_space_id_audit_events","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/log_streams":{"get":{"operationId":"api_v1_space_log_streams","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_observability_spaces_space_id_log_streams","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/log_streams/{log_stream_id}/chunks":{"get":{"operationId":"api_v1_space_log_stream_chunks","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"log_stream_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_observability_spaces_space_id_log_streams_log_stream_id_chunks","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"log_stream_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/log_streams/{log_stream_id}/chunks/{id}":{"get":{"operationId":"api_v1_space_log_stream_chunk","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"log_stream_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/metric_series":{"get":{"operationId":"api_v1_space_metric_series_index","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_observability_spaces_space_id_metric_series","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/otel_collectors":{"get":{"operationId":"api_v1_space_otel_collectors","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_observability_spaces_space_id_otel_collectors","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/otel_collectors/{id}":{"get":{"operationId":"api_v1_space_otel_collector","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_observability_spaces_space_id_otel_collectors_id_","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_observability_spaces_space_id_otel_collectors_id_","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_observability_spaces_space_id_otel_collectors_id_","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/otel_collectors/{id}/activate":{"post":{"operationId":"activate_api_v1_space_otel_collector","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/otel_collectors/{id}/archive":{"post":{"operationId":"archive_api_v1_space_otel_collector","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/otel_collectors/{id}/bootstrap_config":{"get":{"operationId":"bootstrap_config_api_v1_space_otel_collector","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/otel_collectors/{id}/deploy":{"post":{"operationId":"deploy_api_v1_space_otel_collector","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/otel_collectors/{id}/heartbeat":{"post":{"operationId":"heartbeat_api_v1_space_otel_collector","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/otel_collectors/{id}/nomad_spec":{"get":{"operationId":"nomad_spec_api_v1_space_otel_collector","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/otel_collectors/{id}/pause":{"post":{"operationId":"pause_api_v1_space_otel_collector","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/otel_collectors/{id}/rendered_config":{"get":{"operationId":"rendered_config_api_v1_space_otel_collector","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/observability/spaces/{space_id}/trace_spans":{"get":{"operationId":"api_v1_space_trace_spans","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_observability_spaces_space_id_trace_spans","tags":["observability"],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/openapi":{"get":{"operationId":"api_v1_openapi","tags":["openapi"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/org_invitations/{token}":{"get":{"operationId":"get_api_v1_org_invitations_token_","tags":["org_invitations"],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Organization invitation and sign-in setup","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["invitation","requires_password_setup","start_guided_setup","registration_options"],"properties":{"invitation":{"$ref":"#/components/schemas/OrganizationInvitation"},"requires_password_setup":{"type":"boolean"},"start_guided_setup":{"type":"boolean"},"registration_options":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/PasswordRegistrationOptions"}]}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/org_invitations/{token}/accept":{"post":{"operationId":"post_api_v1_org_invitations_token_accept","tags":["org_invitations"],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Accepted organization invitation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["invitation","organization"],"properties":{"invitation":{"$ref":"#/components/schemas/OrganizationInvitation"},"organization":{"$ref":"#/components/schemas/OrganizationSummary"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"402":{"description":"The organization's billing limit refuses this usage; see `error.upgrade_path`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingLimitExceededError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations":{"get":{"operationId":"api_v1_organizations","tags":["organizations"],"parameters":[],"responses":{"200":{"description":"Organizations visible to the current user","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organizations","active_organization"],"properties":{"organizations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationSummary"}},"active_organization":{"oneOf":[{"$ref":"#/components/schemas/OrganizationSummary"},{"type":"null"}]}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations","tags":["organizations"],"parameters":[],"responses":{"200":{"description":"Organization","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization"],"properties":{"organization":{"$ref":"#/components/schemas/OrganizationSummary"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Organization","content":{"application/json":{"schema":{"type":"object","required":["organization"],"properties":{"organization":{"$ref":"#/components/schemas/OrganizationSummary"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OrganizationCreatePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{id}":{"get":{"operationId":"api_v1_organization","tags":["organizations"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Organization detail","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization","organization"],"properties":{"organization":{"$ref":"#/components/schemas/OrganizationSummary","type":"object","required":["id","slug","name","timezone","sandbox_region","logo_url","role","personal","member_count","pending_invitation_count","repository_count","activated_products","can_activate_products","github_prs_authored_by_change_author","verify_pr_scenario_writing_enabled","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string","description":"Default IANA timezone for organization-local schedules such as nightly dreaming."},"logo_url":{"type":"string","nullable":true},"role":{"type":"string","nullable":true},"personal":{"type":"boolean"},"member_count":{"type":"integer","minimum":0},"pending_invitation_count":{"type":"integer","minimum":0},"repository_count":{"type":"integer","minimum":0},"source_ui_enabled":{"type":"boolean","description":"Organization-scoped Source workspace rollout; missing values mean disabled."},"source_control_providers":{"type":"array","description":"Connected source control providers for this organization. Missing values mean no providers are known.","uniqueItems":true,"items":{"type":"string","enum":["github","gitlab"]}},"activated_products":{"type":"array","description":"Products this organization has activated (PRD 144). Activation is what makes a product's surfaces visible; it is neither permission nor entitlement.","items":{"type":"string","enum":["transcripts","vcs"]}},"can_activate_products":{"type":"boolean","description":"Whether the current user may activate a product for this organization: the organization-admin rule the activation endpoint enforces."},"sandbox_region":{"type":"string","enum":["us-was-1","us-pdx-1","eu-lon-1","eu-fra-1","auto"]},"github_prs_authored_by_change_author":{"type":"boolean"},"verify_pr_scenario_writing_enabled":{"type":"boolean"},"shared_agent_personal_accounts_enabled":{"type":"boolean","description":"Whether a shared agent may use one person's account for everyone who chats with it. Present only where agent integrations are on."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_id_","tags":["organizations"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Organization","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization"],"properties":{"organization":{"$ref":"#/components/schemas/OrganizationSummary"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OrganizationUpdatePayload"}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_id_","tags":["organizations"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Organization","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization"],"properties":{"organization":{"$ref":"#/components/schemas/OrganizationSummary"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OrganizationUpdatePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/cdn_spaces":{"get":{"operationId":"api_v1_cdn_spaces","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_org_slug_cdn_spaces","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/changes":{"get":{"operationId":"api_v1_changes","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"source","in":"query","schema":{"type":"string","enum":["all","vex","github"]}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","enum":["open","needs_review","changes_requested","approved","ready_to_land","landed","abandoned","folded","orphaned","needs_restack"]}},{"name":"repo","in":"query","required":false,"schema":{"type":"string"}},{"name":"author","in":"query","required":false,"description":"Public ID of the user who created the change.","schema":{"type":"string"}},{"name":"mine","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"tips_only","in":"query","required":false,"description":"Show only active stack tips and standalone changes.","schema":{"type":"boolean"}},{"name":"awaiting_review","in":"query","required":false,"description":"Only open changes that explicitly request a current patchset review from the signed-in user. Excludes changes authored by that user.","schema":{"type":"boolean"}},{"name":"target","in":"query","required":false,"schema":{"type":"string"}},{"name":"stack","in":"query","required":false,"description":"Durable stack code or the stack's optional human alias.","schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["submitted","updated","number"],"default":"submitted"}},{"name":"direction","in":"query","required":false,"schema":{"type":"string","enum":["asc","desc"],"default":"desc"}},{"name":"view","in":"query","required":false,"description":"Return paginated groups instead of the flat change list. `stack` groups by active stack, `author` by the user who created each change, and `created_time` by rolling period.","schema":{"type":"string","enum":["list","stack","author","created_time"],"default":"list"}},{"name":"number","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"label","in":"query","required":false,"description":"Label slug. Repeat the parameter or comma-separate values to require every label.","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Outer page. Selects changes in the list view and group keys in a grouped view. Ignored by `created_time`, whose four periods are all returned.","schema":{"type":"integer","minimum":1,"default":1}},{"name":"group_pages","in":"query","required":false,"description":"Inner page positions, as a comma-separated list of `key:page` pairs such as `usr_a:3,usr_b:2`. Keys are the group keys this endpoint returned. Unknown, duplicate, malformed, and currently invisible keys are ignored, and a page past the end of a group resolves to that group's last page.","schema":{"type":"string"}}],"responses":{"200":{"description":"One page of the organization change queue, flat or grouped","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["result","counts","filters"],"properties":{"github_sync":{"$ref":"#/components/schemas/GithubReviewSync"},"result":{"description":"What this page is a page of. `kind` states what the top-level pagination describes: changes in the list view, group keys in a grouped view.","oneOf":[{"$ref":"#/components/schemas/VcsOrganizationChangeListResult"},{"$ref":"#/components/schemas/VcsOrganizationChangeGroupedResult"}]},"counts":{"type":"object","description":"Counts for each state across the active non-state filters.","additionalProperties":false,"required":["all","open","needs_review","changes_requested","approved","ready_to_land","landed","abandoned","folded","orphaned","needs_restack"],"properties":{"all":{"type":"integer","minimum":0},"open":{"type":"integer","minimum":0},"needs_review":{"type":"integer","minimum":0},"changes_requested":{"type":"integer","minimum":0},"approved":{"type":"integer","minimum":0},"ready_to_land":{"type":"integer","minimum":0},"landed":{"type":"integer","minimum":0},"abandoned":{"type":"integer","minimum":0},"folded":{"type":"integer","minimum":0},"orphaned":{"type":"integer","minimum":0},"needs_restack":{"type":"integer","minimum":0}}},"filters":{"type":"object","required":["repos","labels","authors"],"properties":{"repos":{"type":"array","items":{"type":"object","required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"}}}},"labels":{"type":"array","items":{"$ref":"#/components/schemas/VcsLabelFacet"}},"authors":{"type":"array","items":{"$ref":"#/components/schemas/VcsActorSummary"}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List changes across an organization"}},"/api/v1/organizations/{org_slug}/changes/transcript_summaries":{"get":{"operationId":"api_v1_changes_transcript_summaries","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"ids","in":"query","required":true,"description":"Up to 100 comma-separated public Change IDs.","schema":{"type":"string"}}],"responses":{"200":{"description":"Transcript summaries keyed by public Change ID","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["summaries"],"properties":{"summaries":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/VcsChangeTranscriptSummary"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Invalid Change IDs"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Summarize transcripts for visible organization changes","description":"Returns summaries only for requested, authorized repository Changes."}},"/api/v1/organizations/{org_slug}/gh/{github_owner}/{github_repo}/{number}":{"get":{"operationId":"get_api_v1_organizations_org_slug_gh_github_owner_github_repo_number_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"github_owner","in":"path","required":true,"schema":{"type":"string"}},{"name":"github_repo","in":"path","required":true,"schema":{"type":"string"}},{"name":"number","in":"path","required":true,"schema":{"type":"string"}},{"in":"path","name":"org_slug","required":true,"schema":{"type":"string"}},{"in":"path","required":true,"schema":{"type":"string"},"name":"github_owner"},{"in":"path","required":true,"schema":{"type":"string"},"name":"github_repo"},{"in":"path","name":"number","required":true,"schema":{"type":"string"}},{"in":"query","name":"section","schema":{"type":"string"}},{"in":"query","name":"page","schema":{"type":"integer"}},{"in":"query","name":"cursor","schema":{"type":"string"}},{"name":"thread_id","in":"query","schema":{"type":"string"}},{"name":"check_id","in":"query","schema":{"type":"string"}},{"in":"query","name":"run_id","schema":{"type":"string"}},{"in":"query","name":"job_id","schema":{"type":"string"}}],"responses":{"200":{"description":"GitHub review response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/GithubReviewPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read a GitHub pull request inside Vex"}},"/api/v1/organizations/{org_slug}/github/pull_requests/refresh":{"post":{"operationId":"api_v1_github_pull_requests_refresh","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"GitHub review response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"}},"required":["status"]}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Discover GitHub pull requests"}},"/api/v1/organizations/{org_slug}/github/pull_requests/{github_repository_id}/{number}":{"get":{"operationId":"get_api_v1_organizations_org_slug_github_pull_requests_github_repository_id_number_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"github_repository_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"number","in":"path","required":true,"schema":{"type":"string"}},{"in":"path","name":"org_slug","required":true,"schema":{"type":"string"}},{"in":"path","name":"github_repository_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"number","required":true,"schema":{"type":"string"}},{"in":"query","name":"section","schema":{"type":"string"}},{"in":"query","name":"page","schema":{"type":"integer"}},{"in":"query","name":"cursor","schema":{"type":"string"}},{"name":"thread_id","in":"query","schema":{"type":"string"}},{"name":"check_id","in":"query","schema":{"type":"string"}},{"in":"query","name":"run_id","schema":{"type":"string"}},{"in":"query","name":"job_id","schema":{"type":"string"}}],"responses":{"200":{"description":"GitHub review response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/GithubReviewPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read a GitHub pull request inside Vex"}},"/api/v1/organizations/{org_slug}/github/pull_requests/{github_repository_id}/{number}/actions":{"post":{"operationId":"post_api_v1_organizations_org_slug_github_pull_requests_github_repository_id_number_actions","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"github_repository_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"number","in":"path","required":true,"schema":{"type":"string"}},{"in":"path","name":"org_slug","required":true,"schema":{"type":"string"}},{"in":"path","name":"github_repository_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"number","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"GitHub review response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/GithubReviewOperation"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"GitHub review response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubReviewOperation"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/GithubReviewMutation"}}}},"security":[{"bearerAuth":[]}],"summary":"Comment or review on GitHub as the current user"}},"/api/v1/organizations/{org_slug}/github/pull_requests/{github_repository_id}/{number}/magic_merge/merge":{"post":{"operationId":"post_api_v1_organizations_org_slug_github_pull_requests_github_repository_id_number_magic_merge_merge","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"github_repository_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"number","in":"path","required":true,"schema":{"type":"string"}},{"in":"path","name":"org_slug","required":true,"schema":{"type":"string"}},{"in":"path","name":"github_repository_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"number","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The exact merge commit was applied and read back","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/MagicMergeApplyResult"}}}},"401":{"description":"Unauthorized"},"403":{"description":"GitHub repository admin access is required"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"The candidate was refused or its GitHub outcome is uncertain"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["expected_head_sha","expected_base_sha"],"properties":{"expected_head_sha":{"type":"string"},"expected_base_sha":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Apply one reviewed MagicMerge merge commit"}},"/api/v1/organizations/{org_slug}/github/pull_requests/{github_repository_id}/{number}/magic_merge/rebase":{"post":{"operationId":"post_api_v1_organizations_org_slug_github_pull_requests_github_repository_id_number_magic_merge_rebase","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"github_repository_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"number","in":"path","required":true,"schema":{"type":"string"}},{"in":"path","name":"org_slug","required":true,"schema":{"type":"string"}},{"in":"path","name":"github_repository_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"number","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The exact candidate was applied and read back","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/MagicMergeApplyResult"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"The approval was refused or the Git push outcome is uncertain"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"idempotency_key":{"type":"string"}},"required":["idempotency_key"]}}}},"security":[{"bearerAuth":[]}],"summary":"Approve and apply one current MagicMerge rebase candidate"}},"/api/v1/organizations/{org_slug}/github/pull_requests/{github_repository_id}/{number}/magic_merge/resolve":{"post":{"operationId":"post_api_v1_organizations_org_slug_github_pull_requests_github_repository_id_number_magic_merge_resolve","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"github_repository_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"number","in":"path","required":true,"schema":{"type":"string"}},{"in":"path","name":"org_slug","required":true,"schema":{"type":"string"}},{"in":"path","name":"github_repository_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"number","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"A clean candidate was published privately","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"status":{"type":"string"},"tip_sha":{"type":"string"},"resolution_ref":{"type":"string"}},"required":["status","tip_sha","resolution_ref"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"The pair changed or the supplied resolution was refused"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"expected_head_sha":{"type":"string"},"expected_base_sha":{"type":"string"},"mode":{"type":"string","enum":["merge","rebase"]},"resolutions":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string"},"content":{"type":"string"}},"required":["path","content"]},{"type":"object","properties":{"path":{"type":"string"},"sides":{"type":"array","items":{"type":"string","enum":["head","destination"]}}},"required":["path","sides"]},{"type":"object","properties":{"original_sha":{"type":"string"},"files":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"content":{"type":"string"}},"required":["path","content"]}}},"required":["original_sha","files"]}]}}},"required":["expected_head_sha","expected_base_sha","mode","resolutions"]}}}},"security":[{"bearerAuth":[]}],"summary":"Publish a reviewed manual merge or rebase resolution for one exact MagicMerge pair"}},"/api/v1/organizations/{org_slug}/github_runner_history":{"get":{"operationId":"get_api_v1_organizations_org_slug_github_runner_history","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"days","in":"query","schema":{"type":"integer","enum":[7,14,30]}},{"name":"repository","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string","enum":["success","failed","active","cancelled"]}},{"name":"q","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Organization runner history","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/GithubRunnerHistory"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Organization unavailable"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Filter and paginate organization GitHub runner history"}},"/api/v1/organizations/{org_slug}/gitlab":{"get":{"operationId":"get_api_v1_organizations_org_slug_gitlab","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer"}},{"name":"search","in":"query","schema":{"type":"string"}},{"name":"integration_id","in":"query","schema":{"type":"string"}},{"name":"connection_ids","in":"query","schema":{"type":"string"},"description":"Comma-separated import connection IDs to resume; scoped to this organization."},{"name":"sort","in":"query","schema":{"type":"string","enum":["newest","alphabetical"]}}],"responses":{"200":{"description":"GitLab source integration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/GitlabPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/gitlab/authorize":{"post":{"operationId":"api_v1_authorize","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"GitLab source integration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitlabAuthorizationUrl"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"integration_id":{"type":"string"},"instance_url":{"type":"string"},"client_id":{"type":"string"},"client_secret":{"type":"string"},"webhook_authentication":{"type":"string"},"return_target":{"type":"string","description":"Return to this first-run wizard path (`<org>/verify/start/<app id>`) after GitLab sign-in."}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/gitlab/connections/{connection_id}/control":{"post":{"operationId":"post_api_v1_organizations_org_slug_gitlab_connections_connection_id_control","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"connection_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Sync control applied"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["action_name"],"properties":{"action_name":{"type":"string","enum":["pause","resume","disconnect","sync","replace","remap"]},"integration_id":{"type":"string"},"source_branch":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/gitlab/connections/{connection_id}/retry":{"post":{"operationId":"post_api_v1_organizations_org_slug_gitlab_connections_connection_id_retry","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"connection_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"GitLab source integration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitlabConnection"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/gitlab/imports":{"post":{"operationId":"api_v1_imports","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"GitLab source integration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitlabConnection"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["integration_id","project_id"],"properties":{"integration_id":{"type":"string"},"project_id":{"type":"integer"},"source_branch":{"type":"string"},"repo_slug":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/image_repositories":{"get":{"operationId":"api_v1_image_repositories","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Image repositories for an organization","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["image_repositories"],"properties":{"image_repositories":{"type":"array","items":{"$ref":"#/components/schemas/ImageRepository"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_org_slug_image_repositories","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Image repository created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["image_repository"],"properties":{"image_repository":{"$ref":"#/components/schemas/ImageRepository"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Image repository created","content":{"application/json":{"schema":{"type":"object","required":["image_repository"],"properties":{"image_repository":{"$ref":"#/components/schemas/ImageRepository"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ImageRepositoryCreatePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/labels":{"get":{"operationId":"api_v1_labels","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_unused","in":"query","required":false,"description":"Include labels no change currently carries.","schema":{"type":"boolean","default":false}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Organization change labels","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["labels"],"properties":{"labels":{"type":"array","items":{"$ref":"#/components/schemas/VcsLabel"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List the organization's change labels","description":"Ordered by how many changes carry each label, for facet lists and label autocomplete."}},"/api/v1/organizations/{org_slug}/pages/agent_usage":{"get":{"operationId":"api_v1_pages_agent_usage","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"window","required":false,"description":"`7d` (default) or `30d`.","schema":{"type":"string","enum":["7d","30d"]}}],"responses":{"200":{"description":"The analytics page.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentUsagePage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Organization not found or not accessible."},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"400":{"description":"Unknown window."}},"security":[{"bearerAuth":[]}],"summary":"Organization agent usage analytics page contract","description":"Coding-agent token usage and estimated cost per day and per person, split by model, over the last 7 or 30 days. Rows are per-checkpoint deltas priced at capture time, so every figure is a plain sum; `source` says whether Tinybird or the Rails outbox served them. Organization membership required; the outbox path is restricted to the organization's readable repositories."}},"/api/v1/organizations/{org_slug}/pages/agreements":{"get":{"operationId":"get_api_v1_organizations_org_slug_pages_agreements","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Organization agreements page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OrganizationAgreementsPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/pages/billing":{"get":{"operationId":"get_api_v1_organizations_org_slug_pages_billing","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Billing page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BillingPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/pages/deployments/architecture":{"get":{"operationId":"api_v1_pages_deployments_architecture","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"app","required":false,"schema":{"type":"string"}},{"in":"query","name":"service","required":false,"schema":{"type":"string"}},{"in":"query","name":"environment","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deployments Architecture page contract. The view draws one of two canvases and never both: `map` is the organization topology and is present exactly when no app was selected, and everything below it is the selected app's topology. A scope value that names nothing is ignored rather than rejected.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["filters","deploy_targets","app_id","map","locations","environments","service_views","data_resources","storage_resources","connections","managed_database_catalog"],"properties":{"filters":{"$ref":"#/components/schemas/DeploymentFilters"},"deploy_targets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentTarget"}},"app_id":{"type":"string","nullable":true},"map":{"oneOf":[{"$ref":"#/components/schemas/DeploymentOrganizationMap"},{"type":"null"}]},"locations":{"type":"array","items":{"$ref":"#/components/schemas/HostingLocation"}},"environments":{"type":"array","items":{"$ref":"#/components/schemas/AppEnvironment"}},"service_views":{"type":"array","items":{"$ref":"#/components/schemas/ArchitectureServiceView"}},"data_resources":{"type":"array","items":{"$ref":"#/components/schemas/AppDataResource"}},"storage_resources":{"type":"array","items":{"$ref":"#/components/schemas/AppStorageResource"}},"connections":{"type":"array","items":{"$ref":"#/components/schemas/ServiceConnection"}},"managed_database_catalog":{"oneOf":[{"$ref":"#/components/schemas/ManagedDatabaseCatalog"},{"type":"null"}]}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/pages/deployments/details":{"get":{"operationId":"api_v1_pages_deployments_details","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"app","required":false,"schema":{"type":"string"}},{"in":"query","name":"service","required":false,"schema":{"type":"string"}},{"in":"query","name":"environment","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deployments Details page contract: the live operational state of the app, service and stage the request names. Every collection is already narrowed to that scope, so nothing is filtered again after it arrives. A scope value that names nothing is ignored rather than rejected.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeploymentDetailsPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/pages/deployments/feed":{"get":{"operationId":"api_v1_pages_deployments_feed","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"app","required":false,"schema":{"type":"string"}},{"in":"query","name":"service","required":false,"schema":{"type":"string"}},{"in":"query","name":"environment","required":false,"schema":{"type":"string"}},{"in":"query","name":"page","required":false,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Organization deployment feed page contract. `operations` is one page of deployment operations for the requested app, service and environment; a scope value that names nothing is ignored rather than rejected.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["filters","deploy_targets","operations","pagination"],"properties":{"filters":{"$ref":"#/components/schemas/DeploymentFilters"},"deploy_targets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentTarget"}},"operations":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentOperation"}},"pagination":{"type":"object","required":["page","limit","count","count_label","last","series"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1},"count":{"type":"integer","minimum":0},"count_label":{"type":"string"},"last":{"type":"integer","minimum":1},"previous":{"type":"integer","nullable":true,"minimum":1},"next":{"type":"integer","nullable":true,"minimum":1},"series":{"type":"array","items":{"oneOf":[{"type":"integer","minimum":1},{"type":"string","enum":["gap"]}]}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/pages/deployments/logs":{"get":{"operationId":"api_v1_pages_deployments_logs","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"app","required":false,"schema":{"type":"string"}},{"in":"query","name":"service","required":false,"schema":{"type":"string"}},{"in":"query","name":"environment","required":false,"schema":{"type":"string"}},{"in":"query","name":"log_service","required":false,"description":"Public id of the service to read. Ignored when it has no allocations; the first service that does answers instead.","schema":{"type":"string"}},{"in":"query","name":"log_location","required":false,"description":"Restricts the merge to allocations in one location.","schema":{"type":"string"}},{"in":"query","name":"limit","required":false,"description":"Merged lines to keep, counted from the end.","schema":{"type":"integer","minimum":1,"maximum":5000,"default":800}}],"responses":{"200":{"description":"Deployments Logs page contract. `lines` is the stdout and stderr of every allocation serving `app_service_id`, merged and numbered across the whole stream before truncation; a scope value that names nothing is ignored rather than rejected.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["filters","deploy_targets","log_services","app_service_id","allocations","lines","summary"],"properties":{"filters":{"$ref":"#/components/schemas/DeploymentFilters"},"deploy_targets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentTarget"}},"log_services":{"type":"array","items":{"type":"object","required":["id","name","allocation_count"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"allocation_count":{"type":"integer","minimum":0}}}},"app_service_id":{"type":"string","nullable":true},"allocations":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentServiceLogAllocation"}},"lines":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentServiceLogLine"}},"summary":{"type":"string","nullable":true}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/pages/deployments/metrics":{"get":{"operationId":"api_v1_pages_deployments_metrics","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"app","required":false,"schema":{"type":"string"}},{"in":"query","name":"service","required":false,"schema":{"type":"string"}},{"in":"query","name":"environment","required":false,"schema":{"type":"string"}},{"in":"query","name":"metrics_range","required":false,"description":"Window for the observed-usage charts. An unknown value falls back to the default.","schema":{"type":"string","enum":["1h","6h","24h","7d"]}}],"responses":{"200":{"description":"Deployments Metrics page contract: observed usage, reserved capacity, and the one Grafana embed for the scope the page draws. A scope value that names nothing is ignored rather than rejected.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["filters","deploy_targets","app_id","app_name","summary","capacity","service_views","observed_metrics","grafana_embed"],"properties":{"filters":{"$ref":"#/components/schemas/DeploymentFilters"},"deploy_targets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentTarget"}},"app_id":{"type":"string","nullable":true},"app_name":{"type":"string","nullable":true},"summary":{"$ref":"#/components/schemas/DeploymentMetricsSummary"},"capacity":{"$ref":"#/components/schemas/DeploymentCapacity"},"service_views":{"type":"array","items":{"$ref":"#/components/schemas/MetricsServiceView"}},"observed_metrics":{"oneOf":[{"$ref":"#/components/schemas/ObservedMetricsSnapshot"},{"type":"null"}]},"grafana_embed":{"oneOf":[{"$ref":"#/components/schemas/GrafanaEmbed"},{"type":"null"}]}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/pages/deployments/previews":{"get":{"operationId":"api_v1_pages_deployments_previews","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"app","in":"query","schema":{"type":"string"}},{"name":"owner","in":"query","schema":{"type":"string"}},{"name":"change","in":"query","schema":{"type":"string"}},{"name":"health","in":"query","schema":{"type":"string","enum":["degraded","running","starting","stopped"]}},{"name":"expiry","in":"query","schema":{"type":"string","enum":["expiring","expired","retained"]}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Organization preview inventory, filter choices and pagination","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OrganizationPreviewsPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List organization previews with administration filters"}},"/api/v1/organizations/{org_slug}/pages/deployments/settings":{"get":{"operationId":"api_v1_pages_deployments_settings","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"app","required":false,"schema":{"type":"string"}},{"in":"query","name":"service","required":false,"schema":{"type":"string"}},{"in":"query","name":"environment","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deployments Settings page contract. Everything below `app_id` is empty or null until an app is selected; a scope value that names nothing is ignored rather than rejected.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["filters","deploy_targets","app_id","locations","available_locations","environments","services","scoped_service","scoped_environment","placement","desired_state_count","domains","config_variables","cdns","cdn_deployments"],"properties":{"filters":{"$ref":"#/components/schemas/DeploymentFilters"},"deploy_targets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentTarget"}},"app_id":{"type":"string","nullable":true},"locations":{"type":"array","items":{"$ref":"#/components/schemas/HostingLocation"}},"available_locations":{"type":"array","items":{"$ref":"#/components/schemas/HostingLocation"}},"environments":{"type":"array","items":{"$ref":"#/components/schemas/AppEnvironment"}},"services":{"type":"array","items":{"$ref":"#/components/schemas/AppService"}},"scoped_service":{"oneOf":[{"$ref":"#/components/schemas/AppService"},{"type":"null"}]},"scoped_environment":{"oneOf":[{"$ref":"#/components/schemas/AppEnvironment"},{"type":"null"}]},"placement":{"oneOf":[{"$ref":"#/components/schemas/AppServicePlacement"},{"type":"null"}]},"desired_state_count":{"type":"integer","minimum":0},"domains":{"type":"array","items":{"$ref":"#/components/schemas/AppDomain"}},"config_variables":{"type":"array","items":{"$ref":"#/components/schemas/AppConfigVariable"}},"cdns":{"type":"array","items":{"$ref":"#/components/schemas/AppCdnDistribution"}},"cdn_deployments":{"type":"array","items":{"$ref":"#/components/schemas/AppCdnDeployment"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/pages/deployments/{deployment_id}":{"get":{"operationId":"get_api_v1_organizations_org_slug_pages_deployments_deployment_id_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"deployment_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deployment operation detail page contract","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["operation"],"properties":{"operation":{"$ref":"#/components/schemas/DeploymentOperation"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/pages/github_integrations":{"get":{"operationId":"get_api_v1_organizations_org_slug_pages_github_integrations","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"GitHub organization settings overview page contract","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization","github_installations"],"properties":{"organization":{"$ref":"#/components/schemas/OrganizationSummary"},"github_installations":{"type":"array","items":{"$ref":"#/components/schemas/GithubIntegrationSummary"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/pages/github_integrations/{github_app_installation_id}":{"get":{"operationId":"get_api_v1_organizations_org_slug_pages_github_integrations_github_app_installation_id_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"github_app_installation_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"GitHub organization settings detail page contract","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization","github_installation","repositories","pagination"],"properties":{"organization":{"$ref":"#/components/schemas/OrganizationSummary"},"github_installation":{"$ref":"#/components/schemas/GithubIntegrationDetail"},"repositories":{"type":"array","items":{"$ref":"#/components/schemas/GithubIntegrationRepository"}},"pagination":{"type":"object","required":["page","limit","count","last","previous","next","series"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1},"count":{"type":"integer","minimum":0},"last":{"type":"integer","minimum":1},"previous":{"type":"integer","nullable":true,"minimum":1},"next":{"type":"integer","nullable":true,"minimum":1},"series":{"type":"array","items":{"oneOf":[{"type":"integer","minimum":1},{"type":"string","enum":["gap"]}]}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/pages/github_onboarding":{"get":{"operationId":"api_v1_pages_github_onboarding","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"github_app_installation_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"github_import_batch_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Organization GitHub onboarding page contract","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization","onboarding"],"properties":{"organization":{"$ref":"#/components/schemas/OrganizationSummary"},"onboarding":{"$ref":"#/components/schemas/GithubOnboardingState"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/pages/members":{"get":{"operationId":"get_api_v1_organizations_org_slug_pages_members","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Organization team page (members plus invitations for admins and owners)","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization","members","invitations","google_workspace_join"],"properties":{"organization":{"$ref":"#/components/schemas/OrganizationSummary"},"members":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationMember"}},"invitations":{"type":"array","description":"Invitation history for admins and owners; empty for other members.","items":{"$ref":"#/components/schemas/OrganizationInvitation"}},"google_workspace_join":{"type":"object","required":["domain","verified_domain","can_manage"],"properties":{"domain":{"type":"string","nullable":true},"verified_domain":{"type":"string","nullable":true,"description":"The owner's verified company Google Workspace domain."},"can_manage":{"type":"boolean"}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/pages/now":{"get":{"operationId":"api_v1_pages_now","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"page","required":false,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Organization Now page contract","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["summary","needs_attention","shipping_now","recently_landed","pagination"],"properties":{"summary":{"type":"object","required":["needs_attention_count","shipping_count","landed_count"],"properties":{"needs_attention_count":{"type":"integer"},"shipping_count":{"type":"integer"},"landed_count":{"type":"integer"}}},"needs_attention":{"type":"array","items":{"$ref":"#/components/schemas/NowMergeQueueItem"}},"shipping_now":{"type":"array","items":{"$ref":"#/components/schemas/NowMergeQueueItem"}},"recently_landed":{"type":"array","items":{"$ref":"#/components/schemas/NowMergeQueueItem"}},"pagination":{"type":"object","additionalProperties":true,"required":["page","limit","count","count_label","last","series"],"properties":{"page":{"type":"integer"},"limit":{"type":"integer"},"count":{"type":"integer"},"count_label":{"type":"string"},"last":{"type":"integer"},"previous":{"type":"integer","nullable":true},"next":{"type":"integer","nullable":true},"series":{"type":"array","items":{"oneOf":[{"type":"integer"},{"type":"string"}]}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/pages/pull_zones":{"get":{"operationId":"api_v1_pages_pull_zones","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"app","schema":{"type":"string"}}],"responses":{"200":{"description":"Organization pull zones and the selected app's CDN configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["apps","selected_app_id","cdns","cdn_deployments","services","environments"],"properties":{"selected_app_id":{"type":"string","nullable":true},"apps":{"type":"array","items":{"type":"object","required":["id","name","slug"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}}}},"services":{"type":"array","items":{"type":"object","required":["id","name","slug"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}}}},"environments":{"type":"array","items":{"type":"object","required":["id","name","slug"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}}}},"cdns":{"type":"array","items":{"$ref":"#/components/schemas/AppCdnDistribution"}},"cdn_deployments":{"type":"array","items":{"$ref":"#/components/schemas/AppCdnDeployment"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/pages/registry":{"get":{"operationId":"api_v1_pages_registry","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"page","required":false,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Organization registry page contract","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["repositories","repository_count","active_repository_count","pagination","error"],"properties":{"repositories":{"type":"array","items":{"$ref":"#/components/schemas/ImageRepository"}},"repository_count":{"type":"integer","minimum":0},"active_repository_count":{"type":"integer","minimum":0},"pagination":{"type":"object","required":["page","limit","count","count_label","last","previous","next","series"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1},"count":{"type":"integer","minimum":0},"count_label":{"type":"string"},"last":{"type":"integer","minimum":1},"previous":{"type":"integer","nullable":true,"minimum":1},"next":{"type":"integer","nullable":true,"minimum":1},"series":{"type":"array","items":{"oneOf":[{"type":"integer","minimum":1},{"type":"string","enum":["gap"]}]}}}},"error":{"type":"string","nullable":true}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/pages/repository_import":{"get":{"operationId":"api_v1_pages_repository_import","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"search","in":"query","required":false,"schema":{"type":"string"}},{"name":"accounts_only","in":"query","required":false,"schema":{"type":"boolean"},"description":"Return accounts and resumable imports without fetching provider repository inventories."}],"responses":{"200":{"description":"Connected source accounts for repository import","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RepositoryImportPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/pages/session/{session_id}":{"get":{"operationId":"get_api_v1_organizations_org_slug_pages_session_session_id_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string"}},{"in":"path","name":"session_id","required":true,"description":"Public id of the session to show.","schema":{"type":"string"}},{"in":"query","name":"checkpoint","required":false,"description":"Public id of a specific uploaded checkpoint to resolve the transcript against. Defaults to the session's latest uploaded checkpoint.","schema":{"type":"string"}},{"in":"query","name":"around_event","schema":{"type":"integer","minimum":0},"description":"Search citation event index; requires checkpoint and event_digest."},{"in":"query","name":"event_digest","schema":{"type":"string","pattern":"^[0-9a-f]{64}$"},"description":"Verifies that the cited event still matches before opening the page."}],"responses":{"200":{"description":"Fullscreen session detail page contract.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/SessionShowPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"The session does not exist in a repository the caller can read.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Fullscreen session detail page contract","description":"Composes everything the fullscreen session page needs from Rails-owned records: the session (serialized identically to the org sessions page's expanded session so the web reuses one builder), the \"Jump to checkpoint\" markers, session-level token usage for the header cost estimate, and the resolved checkpoint's transcript-index state plus derived header stats (files/lines/duration + prompt/response/step counts). The resolved checkpoint is an explicit `checkpoint` (public id) or the session's latest uploaded checkpoint; when its index is not yet current a build is lazily enqueued and the state reads `preparing`. Fail-closed authorization: a session outside the caller's readable organization repositories resolves to 404. Payloads carry sanitized provenance only — no storage keys, checksums, or archive/chunk URLs."}},"/api/v1/organizations/{org_slug}/pages/sessions":{"get":{"operationId":"api_v1_pages_sessions","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"repo","required":false,"description":"Repository slug filter.","schema":{"type":"string"}},{"in":"query","name":"adapter","required":false,"description":"Agent adapter/harness filter (codex, claude, cursor, roder, grok).","schema":{"type":"string"}},{"in":"query","name":"user_id","required":false,"description":"Public id of the session owner to filter by.","schema":{"type":"string"}},{"in":"query","name":"status","required":false,"description":"Session status filter (active, completed, abandoned).","schema":{"type":"string"}},{"in":"query","name":"from","required":false,"description":"ISO8601 lower bound (inclusive) on session started_at.","schema":{"type":"string"}},{"in":"query","name":"to","required":false,"description":"ISO8601 upper bound (inclusive) on session started_at.","schema":{"type":"string"}},{"in":"query","name":"offset","required":false,"schema":{"type":"integer","minimum":0}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"session","required":false,"description":"Public id of a session to expand with its checkpoint timeline.","schema":{"type":"string"}}],"responses":{"200":{"description":"Organization sessions page contract","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["sessions","pagination","facets","session"],"properties":{"sessions":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationSessionSummary"}},"pagination":{"type":"object","required":["offset","limit","has_more"],"properties":{"offset":{"type":"integer"},"limit":{"type":"integer"},"has_more":{"type":"boolean"}}},"facets":{"type":"object","required":["adapters","repositories","users"],"properties":{"adapters":{"type":"array","items":{"type":"string"}},"repositories":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/OrganizationSessionRepository"},{"type":"object","required":["session_count"],"properties":{"session_count":{"type":"integer"}}}]}},"users":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/OrganizationSessionUser"},{"type":"object","required":["session_count"],"properties":{"session_count":{"type":"integer"}}}]}}}},"session":{"oneOf":[{"$ref":"#/components/schemas/OrganizationSessionDetail"},{"type":"null"}]},"search_enabled":{"type":"boolean"},"search":{"nullable":true,"oneOf":[{"$ref":"#/components/schemas/TranscriptSearchResult"},{"$ref":"#/components/schemas/TranscriptSearchError"}]}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Organization agent sessions page contract","description":"Cross-repo browser of captured agent sessions for one organization, restricted to repositories the current user can read. Returns the filtered/paginated session list with per-session stats, filter facets, and — when `session` is supplied — the expanded session's checkpoint timeline, its server-derived git `commits` and `pull_requests`, and its checkpoint `linked_commits`. Each expanded checkpoint carries the Git commit IDs it is attached to (`linked_commits`), resolved through the reverse checkpoint→commit lookup; `linked_commits_available` is false and the lists are empty when that lookup is unavailable. Payloads carry sanitized provenance only (no storage keys, checksums, or archive URLs)."},"post":{"operationId":"post_api_v1_organizations_org_slug_pages_sessions","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"in":"path","name":"org_slug","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Composed transcript search page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["sessions","pagination","facets","session"],"properties":{"sessions":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationSessionSummary"}},"pagination":{"type":"object","required":["offset","limit","has_more"],"properties":{"offset":{"type":"integer"},"limit":{"type":"integer"},"has_more":{"type":"boolean"}}},"facets":{"type":"object","required":["adapters","repositories","users"],"properties":{"adapters":{"type":"array","items":{"type":"string"}},"repositories":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/OrganizationSessionRepository"},{"type":"object","required":["session_count"],"properties":{"session_count":{"type":"integer"}}}]}},"users":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/OrganizationSessionUser"},{"type":"object","required":["session_count"],"properties":{"session_count":{"type":"integer"}}}]}}}},"session":{"oneOf":[{"$ref":"#/components/schemas/OrganizationSessionDetail"},{"type":"null"}]},"search_enabled":{"type":"boolean"},"search":{"nullable":true,"oneOf":[{"$ref":"#/components/schemas/TranscriptSearchResult"},{"$ref":"#/components/schemas/TranscriptSearchError"}]}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"query":{"type":"string","minLength":1,"maxLength":4000},"mode":{"type":"string","enum":["hybrid","keyword","semantic"],"default":"hybrid"},"repo":{"type":"string"},"adapter":{"type":"string"},"status":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"},"cursor":{"type":"string"},"limit":{"type":"integer","minimum":1,"maximum":50,"default":20},"max_bytes":{"type":"integer","minimum":8192,"maximum":131072,"default":32768},"user_id":{"type":"string"},"offset":{"type":"integer"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Search transcripts with permitted page facets"}},"/api/v1/organizations/{org_slug}/pages/settings":{"get":{"operationId":"get_api_v1_organizations_org_slug_pages_settings","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Organization settings page (organization summary plus import branch policy)","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"allOf":[{"$ref":"#/components/schemas/OrganizationImportBranchPolicy"},{"type":"object","required":["organization","sandbox_regions","can_manage_sandbox_region","can_manage_pr_scenario_writing","dedicated_outbound_ip_addresses"],"properties":{"organization":{"$ref":"#/components/schemas/OrganizationSummary"},"can_manage_sandbox_region":{"type":"boolean"},"can_manage_pr_scenario_writing":{"type":"boolean"},"sandbox_regions":{"type":"array","items":{"type":"object","required":["value","label"],"properties":{"value":{"type":"string","enum":["us-was-1","us-pdx-1","eu-lon-1","eu-fra-1","auto"]},"label":{"type":"string"}}}},"dedicated_outbound_ip_addresses":{"$ref":"#/components/schemas/DedicatedOutboundIpAddresses"}}}]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/pages/sites":{"get":{"operationId":"api_v1_pages_sites","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"site","required":false,"description":"Public id of the site to open. A value naming nothing is ignored and the first site answers instead.","schema":{"type":"string"}}],"responses":{"200":{"description":"Organization Sites page contract. `domains` and `deployments` belong to `selected_site_id`, which names one of `sites`.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization_id","sites","selected_site_id","domains","deployments","cloudflare_connected","summary"],"properties":{"organization_id":{"type":"string"},"sites":{"type":"array","items":{"$ref":"#/components/schemas/StaticSite"}},"selected_site_id":{"type":"string","nullable":true},"domains":{"type":"array","items":{"$ref":"#/components/schemas/StaticSiteDomain"}},"deployments":{"type":"array","items":{"$ref":"#/components/schemas/StaticSiteDeployment"}},"cloudflare_connected":{"type":"boolean"},"summary":{"type":"object","required":["total","active","failed"],"properties":{"total":{"type":"integer","minimum":0},"active":{"type":"integer","minimum":0},"failed":{"type":"integer","minimum":0}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/pages/vcs_nodes":{"get":{"operationId":"get_api_v1_organizations_org_slug_pages_vcs_nodes","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Organization nodes page contract","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization","pool_catalogs","github_runner_pools","github_installations","github_runner_egress"],"properties":{"organization":{"$ref":"#/components/schemas/OrganizationSummary"},"github_runner_egress":{"$ref":"#/components/schemas/GithubRunnerEgress"},"github_runner_private_links":{"type":"array","items":{"$ref":"#/components/schemas/GithubRunnerPrivateLink"}},"github_runner_pools":{"type":"array","items":{"$ref":"#/components/schemas/GithubRunnerPool"}},"github_runner_repositories":{"type":"array","description":"GitHub runner pools grouped by repository, in display order","items":{"$ref":"#/components/schemas/GithubRunnerRepository"}},"github_installations":{"type":"array","items":{"$ref":"#/components/schemas/GithubAppInstallation"}},"pool_catalogs":{"type":"array","items":{"type":"object","required":["pool","enrollment_tokens"],"properties":{"pool":{"$ref":"#/components/schemas/CiRunnerPoolCatalog"},"enrollment_tokens":{"type":"array","items":{"$ref":"#/components/schemas/CiNodeEnrollmentToken"}}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/pages/vcs_settings":{"get":{"operationId":"get_api_v1_organizations_org_slug_pages_vcs_settings","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Organization settings page (organization summary plus import branch policy)","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"allOf":[{"$ref":"#/components/schemas/OrganizationImportBranchPolicy"},{"type":"object","required":["organization","sandbox_regions","can_manage_sandbox_region","can_manage_pr_scenario_writing","dedicated_outbound_ip_addresses"],"properties":{"organization":{"$ref":"#/components/schemas/OrganizationSummary"},"dedicated_outbound_ip_addresses":{"$ref":"#/components/schemas/DedicatedOutboundIpAddresses"},"can_manage_sandbox_region":{"type":"boolean"},"can_manage_pr_scenario_writing":{"type":"boolean"},"sandbox_regions":{"type":"array","items":{"type":"object","required":["value","label"],"properties":{"value":{"type":"string","enum":["us-was-1","us-pdx-1","eu-lon-1","eu-fra-1","auto"]},"label":{"type":"string"}}}}}}]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Organization not found or Source is not enabled"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/pages/workspace_activity":{"get":{"operationId":"api_v1_pages_workspace_activity","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Sidebar Workspace Activity page contract","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/WorkspaceActivityPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos":{"get":{"operationId":"api_v1_repos","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["name","github"],"default":"name"}},{"name":"direction","in":"query","required":false,"schema":{"type":"string","enum":["asc","desc"],"default":"asc"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1}}],"responses":{"200":{"description":"Paginated workspace Repo inventory","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["repos","pagination"],"properties":{"repos":{"type":"array","items":{"type":"object","required":["id","slug","name","icon_name","github_repository","sync_status","sync_error_message","can_retry_sync","can_retry_import","import_item_id","is_home","disclaimer","federated_in_home","root_path"],"properties":{"id":{"type":"string","description":"Virtual repository public ID for non-Home rows; Home uses the physical repository public ID."},"slug":{"type":"string"},"name":{"type":"string"},"icon_name":{"type":"string"},"github_repository":{"type":"string","nullable":true},"sync_provider":{"type":"string","enum":["none","github","git","gitlab"]},"remote_repository":{"type":"string","nullable":true},"sync_status":{"type":"string","enum":["none","importing","syncing","failed","ready"]},"sync_error_message":{"type":"string","nullable":true},"can_retry_sync":{"type":"boolean","description":"True when the latest sync run failed and can be retried."},"can_retry_import":{"type":"boolean","description":"True when a failed client import can be requeued for CLI resume."},"import_item_id":{"type":"string","nullable":true},"is_home":{"type":"boolean"},"disclaimer":{"type":"string","nullable":true},"federated_in_home":{"type":"boolean","description":"True when this Space is a folder virtual repository inside the organization Home monorepo. False for Home itself and for standalone physical companions."},"root_path":{"type":"string","nullable":true,"description":"Home-relative folder path when federated_in_home is true; null otherwise."}}}},"pagination":{"type":"object","required":["page","limit","count","count_label","last","series"],"additionalProperties":true,"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1},"count":{"type":"integer","minimum":0},"count_label":{"type":"string"},"last":{"type":"integer","minimum":1},"previous":{"type":"integer","nullable":true},"next":{"type":"integer","nullable":true},"series":{"type":"array","items":{"oneOf":[{"type":"integer"},{"type":"string"}]}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}":{"delete":{"operationId":"delete_api_v1_organizations_org_slug_repos_repo_slug_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Repository deleted"},"409":{"description":"Repository mutation is busy or deletion is restricted"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/access_tokens":{"get":{"operationId":"api_v1_repository_access_tokens","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Manual repository access tokens","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["access_tokens"],"properties":{"access_tokens":{"type":"array","items":{"type":"object","required":["id","name","permission_level","token_preview","active","expires_at","last_used_at","revoked_at","created_at","updated_at","expires_at_label","last_used_at_label","revoked_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"permission_level":{"type":"string","enum":["read_only","read_write"]},"token_preview":{"type":"string"},"active":{"type":"boolean"},"expires_at":{"type":"string","format":"date-time","nullable":true},"last_used_at":{"type":"string","format":"date-time","nullable":true},"revoked_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"expires_at_label":{"type":"string","nullable":true},"last_used_at_label":{"type":"string","nullable":true},"revoked_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_access_tokens","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Created repository access token","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["access_token","plain_text_token"],"properties":{"access_token":{"type":"object","required":["id","name","permission_level","token_preview","active","expires_at","last_used_at","revoked_at","created_at","updated_at","expires_at_label","last_used_at_label","revoked_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"permission_level":{"type":"string","enum":["read_only","read_write"]},"token_preview":{"type":"string"},"active":{"type":"boolean"},"expires_at":{"type":"string","format":"date-time","nullable":true},"last_used_at":{"type":"string","format":"date-time","nullable":true},"revoked_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"expires_at_label":{"type":"string","nullable":true},"last_used_at_label":{"type":"string","nullable":true},"revoked_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"plain_text_token":{"type":"string"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Created repository access token","content":{"application/json":{"schema":{"type":"object","required":["access_token","plain_text_token"],"properties":{"access_token":{"type":"object","required":["id","name","permission_level","token_preview","active","expires_at","last_used_at","revoked_at","created_at","updated_at","expires_at_label","last_used_at_label","revoked_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"permission_level":{"type":"string","enum":["read_only","read_write"]},"token_preview":{"type":"string"},"active":{"type":"boolean"},"expires_at":{"type":"string","format":"date-time","nullable":true},"last_used_at":{"type":"string","format":"date-time","nullable":true},"revoked_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"expires_at_label":{"type":"string","nullable":true},"last_used_at_label":{"type":"string","nullable":true},"revoked_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"plain_text_token":{"type":"string"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["name"],"properties":{"name":{"type":"string"},"permission_level":{"type":"string","enum":["read_only","read_write"]},"credential_purpose":{"type":"string","enum":["git_remote_helper"],"description":"Issues a revocable read-write system credential valid for one hour."},"expires_in_days":{"type":"integer","minimum":1,"nullable":true}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/access_tokens/{id}":{"delete":{"operationId":"api_v1_repository_access_token","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Repository access token revoked"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/agent_checkpoints/{id}":{"get":{"operationId":"api_v1_agent_checkpoint","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/agent_checkpoints/{id}/download":{"get":{"operationId":"download_api_v1_agent_checkpoint","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/agent_sessions":{"get":{"operationId":"api_v1_agent_sessions","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_agent_sessions","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/agent_sessions/{agent_session_id}/checkpoints":{"get":{"operationId":"api_v1_agent_session_checkpoints","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent_session_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_agent_sessions_agent_session_id_checkpoints","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent_session_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/agent_sessions/{agent_session_id}/checkpoints/prepare_chunks":{"post":{"operationId":"prepare_chunks_api_v1_agent_session_checkpoints","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent_session_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/agent_sessions/{agent_session_id}/checkpoints/{id}":{"get":{"operationId":"api_v1_agent_session_checkpoint","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent_session_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/agent_sessions/{agent_session_id}/checkpoints/{id}/download":{"get":{"operationId":"download_api_v1_agent_session_checkpoint","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent_session_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/agent_sessions/{agent_session_id}/checkpoints/{id}/finalize":{"post":{"operationId":"finalize_api_v1_agent_session_checkpoint","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent_session_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/agent_sessions/{agent_session_id}/checkpoints/{id}/seal":{"post":{"operationId":"seal_api_v1_agent_session_checkpoint","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent_session_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The recorded checkpoint source, after required queue admission.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["agent_checkpoint"],"properties":{"agent_checkpoint":{"$ref":"#/components/schemas/GitSealedAgentCheckpoint"}}}}}},"401":{"description":"Authentication required."},"403":{"description":"Only the session owner may seal a checkpoint."},"404":{"description":"Missing or inaccessible repository, session or checkpoint."},"422":{"description":"Malformed or all-zero Git source."},"502":{"description":"Bad gateway"},"400":{"description":"Missing or blank Git source."},"409":{"description":"Source already differs or checkpoint is no longer available."},"503":{"description":"Retry; the source may have committed before PR-link queue admission failed."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["git_commit_sha"],"properties":{"git_commit_sha":{"type":"string","pattern":"^[0-9a-fA-F]{40}$","description":"Complete nonzero original Git SHA; normalized to lowercase."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Seal a checkpoint at its original Git commit","description":"The session owner may add a Git source once to a pending or uploaded checkpoint. Repeating the same source is idempotent and retries PR-link queue admission. No archive bytes or new upload contract are required, including when the delivered archive was already pruned locally. Retained, purging or failed checkpoints cannot be sealed. This records source metadata; it does not publish a Git commit or authorize a push."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/agent_sessions/{id}":{"get":{"operationId":"api_v1_agent_session","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_org_slug_repos_repo_slug_agent_sessions_id_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The updated agent session","content":{"application/json":{"schema":{"type":"object","required":["agent_session"],"properties":{"agent_session":{"type":"object","properties":{"id":{"type":"string"},"adapter":{"type":"string"},"external_session_id":{"type":"string"},"status":{"type":"string"},"title":{"type":"string","nullable":true}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"}},"security":[{"bearerAuth":[]}],"summary":"Update an agent session title","description":"Sets the scrubbed, human-readable title derived by the CLI collector. Owner-only. Title is intentionally not accepted on the create path.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["agent_session"],"properties":{"agent_session":{"type":"object","required":["title"],"properties":{"title":{"type":"string","maxLength":120,"nullable":true}}}}}}}}},"put":{"operationId":"put_api_v1_organizations_org_slug_repos_repo_slug_agent_sessions_id_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/agent_sessions/{id}/complete":{"post":{"operationId":"complete_api_v1_agent_session","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/agent_sessions/{id}/roder_handoffs":{"post":{"operationId":"roder_handoffs_api_v1_agent_session","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"The session checkpoint handoff coordinate could not be resolved.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"502":{"description":"Bad gateway"},"201":{"description":"Roder browser connection seeded with the session handoff capability.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionRoderHandoff"}}}},"409":{"description":"The session has no uploaded checkpoint to hand off.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"checkpoint_id":{"type":"string","description":"Public id of the checkpoint to hand off. Defaults to the latest uploaded."},"purpose":{"type":"string","enum":["ask_why","continue"],"description":"Handoff intent; defaults to `continue`."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Seed a Roder conversation scoped to this session's checkpoint","description":"Mints a short-lived, single-tool, one-time capability scoped to one of the session's checkpoints and returns the vex-roder browser connection for the org Agents workspace to open. The capability authorizes exactly the `get_session_agent_checkpoint_handoff_context` MCP tool for exactly this checkpoint and is consumed at most once. When `checkpoint_id` is omitted the session's latest uploaded checkpoint is used."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/agent_sessions/{id}/transcript":{"get":{"operationId":"transcript_api_v1_agent_session","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"cursor","required":false,"description":"Opaque backward-pagination cursor from a previous response's `prev_cursor`. Omit for the latest (tail) page.","schema":{"type":"string"}},{"in":"query","name":"limit","required":false,"description":"Events per page (default 200).","schema":{"type":"integer","minimum":1,"maximum":500}},{"in":"query","name":"checkpoint","required":false,"description":"Public id of a specific uploaded checkpoint to read. Defaults to the session's latest uploaded checkpoint.","schema":{"type":"string"}}],"responses":{"200":{"description":"A page of transcript events, newest-last within the page.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSessionTranscriptPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"The checkpoint archive could not be read.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"502":{"description":"Bad gateway"},"409":{"description":"The session has no uploaded checkpoint transcript available yet.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Browsable transcript for one captured agent session","description":"Returns the whole sanitized transcript captured in one of the session's checkpoints, as a normalized, paginated event list. The default page is the TAIL (latest events); pass the returned `prev_cursor` as `cursor` to walk backward through older events. When `checkpoint` is omitted the session's latest uploaded checkpoint is used, since each checkpoint archive is self-contained and the newest carries the fullest transcript. Payloads are parsed server-side and carry sanitized event text only — no storage keys, checksums, or archive URLs."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/agent_sessions/{id}/transcript_export":{"get":{"operationId":"transcript_export_api_v1_agent_session","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"checkpoint","required":false,"description":"Public id of a specific uploaded checkpoint to export.","schema":{"type":"string"}},{"in":"query","name":"format","required":false,"description":"Export format. Defaults to Markdown.","schema":{"type":"string","enum":["markdown","jsonl"],"default":"markdown"}}],"responses":{"200":{"description":"Transcript file attachment.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"text/markdown":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"The checkpoint archive could not be read.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"502":{"description":"Bad gateway"},"400":{"description":"The requested export format is unsupported.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"409":{"description":"The session has no uploaded checkpoint transcript available yet.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Download one captured agent transcript","description":"Downloads the sanitized, normalized transcript from one uploaded checkpoint as agent-readable Markdown or newline-delimited JSON. When `checkpoint` is omitted the latest uploaded checkpoint is used."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/agent_sessions/{id}/transcript_index":{"get":{"operationId":"transcript_index_api_v1_agent_session","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"in":"path","name":"id","required":true,"description":"Public id of the session.","schema":{"type":"string"}},{"in":"query","name":"checkpoint","required":false,"description":"Public id of a specific uploaded checkpoint. Defaults to the session's latest uploaded checkpoint.","schema":{"type":"string"}},{"in":"query","name":"chunk","required":false,"description":"Sequence number of a single chunk to serve instead of the index body. Must be a non-negative integer listed in the manifest's `chunks`; anything else is a 404. Clients follow the `url` from the index response rather than building this themselves.","schema":{"type":"integer","minimum":0}}],"responses":{"200":{"description":"Without `chunk`: the transcript index state — when `state` is `ready` the `manifest` and the per-chunk `chunks` URLs are included, otherwise only `state`, `session_id`, and `checkpoint_id`. With `chunk`: that chunk object's raw JSON, zstd-encoded when the client accepts it.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"oneOf":[{"$ref":"#/components/schemas/SessionTranscriptIndexResponse"},{"$ref":"#/components/schemas/TranscriptIndexChunk"}]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"The session is not readable, the pinned checkpoint does not exist, or the requested `chunk` is not in the manifest (or its object is gone)."},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"The session has no uploaded checkpoint to index yet.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Derived transcript index for one checkpoint (manifest + chunk bytes)","description":"Returns the derived, chunked transcript index for one of the session's checkpoints: the manifest inline plus a same-origin URL per chunk. Those URLs point back at this same operation with `chunk=<seq>` appended, which serves the chunk object's bytes through the API — object storage answers signed GETs without CORS headers, so no signed URL is minted or returned here. When `checkpoint` is omitted the session's latest uploaded checkpoint is used. While the index is still being derived (or a build failed) the response is a bare `{state}` body (`preparing`/`failed`) and a build is lazily enqueued; poll until `state` is `ready`. Chunk bytes are zstd-compressed JSON: a client that advertises `zstd` in `Accept-Encoding` gets the stored bytes with `content-encoding: zstd`, any other client gets the same JSON decompressed. Chunk responses are immutable and cacheable (`private, max-age=86400, immutable`) because chunk objects are content-addressed."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/bookmark_protection_events":{"get":{"operationId":"api_v1_bookmark_protection_events","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"bookmark","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Recent bookmark protection events","content":{"application/json":{"schema":{"type":"array","additionalProperties":true,"items":{"type":"object","required":["id","bookmark_protection_rule_id","organization_id","repository_id","actor_user_id","bookmark_name","action","old_target","new_target","actor_kind","actor_label","intent","decision","source_request_id","created_at","updated_at","created_at_label","updated_at_label","reason_codes","metadata"],"properties":{"id":{"type":"string"},"bookmark_protection_rule_id":{"type":"string","nullable":true},"organization_id":{"type":"string"},"repository_id":{"type":"string"},"actor_user_id":{"type":"string","nullable":true},"bookmark_name":{"type":"string"},"action":{"type":"string"},"old_target":{"type":"string","nullable":true},"new_target":{"type":"string","nullable":true},"actor_kind":{"type":"string","enum":["user","vex_automation","system","github_app","service"]},"actor_label":{"type":"string","nullable":true},"intent":{"type":"string","nullable":true},"decision":{"type":"string","enum":["allowed","denied","bypassed","simulated"]},"source_request_id":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true},"reason_codes":{"type":"array","items":{"type":"string"}},"metadata":{"type":"object","additionalProperties":true}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/bookmark_protections":{"get":{"operationId":"api_v1_bookmark_protections","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Bookmark protection rules","content":{"application/json":{"schema":{"type":"array","additionalProperties":true,"items":{"type":"object","required":["id","organization_id","repository_id","created_by_user_id","updated_by_user_id","name","enabled","priority","target_kind","target_pattern","bypass_mode","created_at","updated_at","requirements","actor_policy"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"repository_id":{"type":"string"},"created_by_user_id":{"type":"string","nullable":true},"updated_by_user_id":{"type":"string","nullable":true},"name":{"type":"string"},"enabled":{"type":"boolean"},"priority":{"type":"integer"},"target_kind":{"type":"string","enum":["exact","pattern","default_branch"]},"target_pattern":{"type":"string","nullable":true},"bypass_mode":{"type":"string","enum":["admins","none"]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"requirements":{"type":"object","additionalProperties":true,"properties":{"ci":{"$ref":"#/components/schemas/BookmarkProtectionCiRequirements"}}},"actor_policy":{"type":"object","additionalProperties":true}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_bookmark_protections","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Bookmark protection rule created","content":{"application/json":{"schema":{"type":"object","required":["id","organization_id","repository_id","created_by_user_id","updated_by_user_id","name","enabled","priority","target_kind","target_pattern","bypass_mode","created_at","updated_at","requirements","actor_policy"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"repository_id":{"type":"string"},"created_by_user_id":{"type":"string","nullable":true},"updated_by_user_id":{"type":"string","nullable":true},"name":{"type":"string"},"enabled":{"type":"boolean"},"priority":{"type":"integer"},"target_kind":{"type":"string","enum":["exact","pattern","default_branch"]},"target_pattern":{"type":"string","nullable":true},"bypass_mode":{"type":"string","enum":["admins","none"]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"requirements":{"type":"object","additionalProperties":true,"properties":{"ci":{"$ref":"#/components/schemas/BookmarkProtectionCiRequirements"}}},"actor_policy":{"type":"object","additionalProperties":true}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"name":{"type":"string"},"enabled":{"type":"boolean"},"priority":{"type":"integer"},"target_kind":{"type":"string","enum":["exact","pattern","default_branch"]},"target_pattern":{"type":"string","nullable":true},"bypass_mode":{"type":"string","enum":["admins","none"]},"requirements":{"type":"object","additionalProperties":true,"properties":{"ci":{"$ref":"#/components/schemas/BookmarkProtectionCiRequirements"}}},"actor_policy":{"type":"object","additionalProperties":true}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/bookmark_protections/refresh_github_required_checks":{"post":{"operationId":"refresh_github_required_checks_api_v1_bookmark_protections","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"GitHub required-check policy snapshot","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/GithubRequiredCheckSnapshot"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"github_branch":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/bookmark_protections/simulate":{"post":{"operationId":"simulate_api_v1_bookmark_protections","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Bookmark protection evaluation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["evaluation"],"properties":{"evaluation":{"type":"object","required":["allowed","bypassed","action","rule_id","reasons","metadata"],"properties":{"allowed":{"type":"boolean"},"bypassed":{"type":"boolean"},"action":{"type":"string"},"rule_id":{"type":"string","nullable":true},"reasons":{"type":"array","items":{"type":"object","required":["code","message","severity","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"severity":{"type":"string"},"details":{"type":"object","additionalProperties":true}}}},"metadata":{"type":"object","additionalProperties":true}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["bookmark","to"],"properties":{"bookmark":{"type":"string"},"to":{"type":"string"},"from":{"type":"string","nullable":true},"intent":{"type":"string","nullable":true},"actor_kind":{"type":"string","nullable":true},"change_id":{"type":"string","nullable":true}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/bookmark_protections/{id}":{"get":{"operationId":"api_v1_bookmark_protection","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Bookmark protection rule","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["id","organization_id","repository_id","created_by_user_id","updated_by_user_id","name","enabled","priority","target_kind","target_pattern","bypass_mode","created_at","updated_at","requirements","actor_policy"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"repository_id":{"type":"string"},"created_by_user_id":{"type":"string","nullable":true},"updated_by_user_id":{"type":"string","nullable":true},"name":{"type":"string"},"enabled":{"type":"boolean"},"priority":{"type":"integer"},"target_kind":{"type":"string","enum":["exact","pattern","default_branch"]},"target_pattern":{"type":"string","nullable":true},"bypass_mode":{"type":"string","enum":["admins","none"]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"requirements":{"type":"object","additionalProperties":true,"properties":{"ci":{"$ref":"#/components/schemas/BookmarkProtectionCiRequirements"}}},"actor_policy":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_org_slug_repos_repo_slug_bookmark_protections_id_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Bookmark protection rule updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["id","organization_id","repository_id","created_by_user_id","updated_by_user_id","name","enabled","priority","target_kind","target_pattern","bypass_mode","created_at","updated_at","requirements","actor_policy"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"repository_id":{"type":"string"},"created_by_user_id":{"type":"string","nullable":true},"updated_by_user_id":{"type":"string","nullable":true},"name":{"type":"string"},"enabled":{"type":"boolean"},"priority":{"type":"integer"},"target_kind":{"type":"string","enum":["exact","pattern","default_branch"]},"target_pattern":{"type":"string","nullable":true},"bypass_mode":{"type":"string","enum":["admins","none"]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"requirements":{"type":"object","additionalProperties":true,"properties":{"ci":{"$ref":"#/components/schemas/BookmarkProtectionCiRequirements"}}},"actor_policy":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"name":{"type":"string"},"enabled":{"type":"boolean"},"priority":{"type":"integer"},"target_kind":{"type":"string","enum":["exact","pattern","default_branch"]},"target_pattern":{"type":"string","nullable":true},"bypass_mode":{"type":"string","enum":["admins","none"]},"requirements":{"type":"object","additionalProperties":true,"properties":{"ci":{"$ref":"#/components/schemas/BookmarkProtectionCiRequirements"}}},"actor_policy":{"type":"object","additionalProperties":true}}}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_org_slug_repos_repo_slug_bookmark_protections_id_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Bookmark protection rule updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["id","organization_id","repository_id","created_by_user_id","updated_by_user_id","name","enabled","priority","target_kind","target_pattern","bypass_mode","created_at","updated_at","requirements","actor_policy"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"repository_id":{"type":"string"},"created_by_user_id":{"type":"string","nullable":true},"updated_by_user_id":{"type":"string","nullable":true},"name":{"type":"string"},"enabled":{"type":"boolean"},"priority":{"type":"integer"},"target_kind":{"type":"string","enum":["exact","pattern","default_branch"]},"target_pattern":{"type":"string","nullable":true},"bypass_mode":{"type":"string","enum":["admins","none"]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"requirements":{"type":"object","additionalProperties":true,"properties":{"ci":{"$ref":"#/components/schemas/BookmarkProtectionCiRequirements"}}},"actor_policy":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"name":{"type":"string"},"enabled":{"type":"boolean"},"priority":{"type":"integer"},"target_kind":{"type":"string","enum":["exact","pattern","default_branch"]},"target_pattern":{"type":"string","nullable":true},"bypass_mode":{"type":"string","enum":["admins","none"]},"requirements":{"type":"object","additionalProperties":true,"properties":{"ci":{"$ref":"#/components/schemas/BookmarkProtectionCiRequirements"}}},"actor_policy":{"type":"object","additionalProperties":true}}}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_organizations_org_slug_repos_repo_slug_bookmark_protections_id_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Bookmark protection rule deleted"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/ci/status/changes/{id}":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_ci_status_changes_id_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"CI status for a change","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["change_id","status","status_label","status_state","status_tone","patchsets"],"properties":{"change_id":{"type":"string"},"status":{"type":"string","enum":["absent","queued","running","succeeded","failed","canceled"]},"status_label":{"type":"string"},"status_state":{"type":"string"},"status_tone":{"type":"string"},"patchsets":{"type":"array","items":{"allOf":[{"type":"object","required":["status","status_label","status_state","status_tone","total","counts","checks"],"properties":{"status":{"type":"string","enum":["absent","queued","running","succeeded","failed","canceled"]},"status_label":{"type":"string"},"status_state":{"type":"string"},"status_tone":{"type":"string"},"total":{"type":"integer","minimum":0},"counts":{"type":"object","additionalProperties":{"type":"integer","minimum":0}},"checks":{"type":"array","items":{"type":"object","required":["run_id","run_slug","run_number","job_id","job_slug","name","status"],"properties":{"run_id":{"type":"string"},"run_slug":{"type":"string"},"run_number":{"type":"integer","minimum":1},"job_id":{"type":"string"},"job_slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","canceled","blocked"]},"conclusion":{"type":"string"},"allow_failure":{"type":"boolean"},"pipeline_id":{"type":"string"},"pipeline_slug":{"type":"string"},"ref_name":{"type":"string"},"commit_sha":{"type":"string"},"started_at":{"type":"string","format":"date-time"},"finished_at":{"type":"string","format":"date-time"},"source":{"type":"string"},"details_url":{"type":"string","format":"uri"},"external_id":{"type":"string"},"app_id":{"type":"integer"},"expected":{"type":"boolean"},"expected_since":{"type":"string","format":"date-time"},"requirement_source":{"type":"string"},"requirement_state":{"type":"string"}}}}}},{"type":"object","required":["patchset_id","commit_sha","checks_status"],"properties":{"patchset_id":{"type":"string"},"commit_sha":{"type":"string","nullable":true},"checks_status":{"type":"string","nullable":true}}}]}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/ci/status/commits/{commit_sha}":{"get":{"operationId":"api_v1_org_repo_ci_status","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"commit_sha","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"CI status for a commit","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"allOf":[{"type":"object","required":["status","status_label","status_state","status_tone","total","counts","checks"],"properties":{"status":{"type":"string","enum":["absent","queued","running","succeeded","failed","canceled"]},"status_label":{"type":"string"},"status_state":{"type":"string"},"status_tone":{"type":"string"},"total":{"type":"integer","minimum":0},"counts":{"type":"object","additionalProperties":{"type":"integer","minimum":0}},"checks":{"type":"array","items":{"type":"object","required":["run_id","run_slug","run_number","job_id","job_slug","name","status"],"properties":{"run_id":{"type":"string"},"run_slug":{"type":"string"},"run_number":{"type":"integer","minimum":1},"job_id":{"type":"string"},"job_slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","canceled","blocked"]},"conclusion":{"type":"string"},"allow_failure":{"type":"boolean"},"pipeline_id":{"type":"string"},"pipeline_slug":{"type":"string"},"ref_name":{"type":"string"},"commit_sha":{"type":"string"},"started_at":{"type":"string","format":"date-time"},"finished_at":{"type":"string","format":"date-time"},"source":{"type":"string"},"details_url":{"type":"string","format":"uri"},"external_id":{"type":"string"},"app_id":{"type":"integer"},"expected":{"type":"boolean"},"expected_since":{"type":"string","format":"date-time"},"requirement_source":{"type":"string"},"requirement_state":{"type":"string"}}}}}},{"type":"object","required":["commit_sha"],"properties":{"commit_sha":{"type":"string"}}}]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/ci/status/patchsets/{id}":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_ci_status_patchsets_id_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"CI status for a patchset","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"allOf":[{"type":"object","required":["status","status_label","status_state","status_tone","total","counts","checks"],"properties":{"status":{"type":"string","enum":["absent","queued","running","succeeded","failed","canceled"]},"status_label":{"type":"string"},"status_state":{"type":"string"},"status_tone":{"type":"string"},"total":{"type":"integer","minimum":0},"counts":{"type":"object","additionalProperties":{"type":"integer","minimum":0}},"checks":{"type":"array","items":{"type":"object","required":["run_id","run_slug","run_number","job_id","job_slug","name","status"],"properties":{"run_id":{"type":"string"},"run_slug":{"type":"string"},"run_number":{"type":"integer","minimum":1},"job_id":{"type":"string"},"job_slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","canceled","blocked"]},"conclusion":{"type":"string"},"allow_failure":{"type":"boolean"},"pipeline_id":{"type":"string"},"pipeline_slug":{"type":"string"},"ref_name":{"type":"string"},"commit_sha":{"type":"string"},"started_at":{"type":"string","format":"date-time"},"finished_at":{"type":"string","format":"date-time"},"source":{"type":"string"},"details_url":{"type":"string","format":"uri"},"external_id":{"type":"string"},"app_id":{"type":"integer"},"expected":{"type":"boolean"},"expected_since":{"type":"string","format":"date-time"},"requirement_source":{"type":"string"},"requirement_state":{"type":"string"}}}}}},{"type":"object","required":["patchset_id","commit_sha","checks_status"],"properties":{"patchset_id":{"type":"string"},"commit_sha":{"type":"string","nullable":true},"checks_status":{"type":"string","nullable":true}}}]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/ci/status/ref":{"get":{"operationId":"api_v1_org_repo_ci_status_ref","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"ref","in":"query","required":false,"description":"Ref to summarize. Omitted, the repository's default branch is resolved server-side and echoed back as `ref_name`.","schema":{"type":"string"}}],"responses":{"200":{"description":"CI status for a ref","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"allOf":[{"type":"object","required":["status","status_label","status_state","status_tone","total","counts","checks"],"properties":{"status":{"type":"string","enum":["absent","queued","running","succeeded","failed","canceled"]},"status_label":{"type":"string"},"status_state":{"type":"string"},"status_tone":{"type":"string"},"total":{"type":"integer","minimum":0},"counts":{"type":"object","additionalProperties":{"type":"integer","minimum":0}},"checks":{"type":"array","items":{"type":"object","required":["run_id","run_slug","run_number","job_id","job_slug","name","status"],"properties":{"run_id":{"type":"string"},"run_slug":{"type":"string"},"run_number":{"type":"integer","minimum":1},"job_id":{"type":"string"},"job_slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","canceled","blocked"]},"conclusion":{"type":"string"},"allow_failure":{"type":"boolean"},"pipeline_id":{"type":"string"},"pipeline_slug":{"type":"string"},"ref_name":{"type":"string"},"commit_sha":{"type":"string"},"started_at":{"type":"string","format":"date-time"},"finished_at":{"type":"string","format":"date-time"},"source":{"type":"string"},"details_url":{"type":"string","format":"uri"},"external_id":{"type":"string"},"app_id":{"type":"integer"},"expected":{"type":"boolean"},"expected_since":{"type":"string","format":"date-time"},"requirement_source":{"type":"string"},"requirement_state":{"type":"string"}}}}}},{"type":"object","required":["ref_name"],"properties":{"ref_name":{"type":"string"}}}]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/cloud_workspace_backups":{"get":{"operationId":"api_v1_cloud_workspace_backups","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_cloud_workspace_backups","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/cloud_workspace_backups/{backup_key}":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_cloud_workspace_backups_backup_key_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"backup_key","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/cloud_workspace_backups/{backup_key}/objects/{object_key}":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_cloud_workspace_backups_backup_key_objects_object_key_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"backup_key","in":"path","required":true,"schema":{"type":"string"}},{"name":"object_key","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/cloud_workspace_backups/{backup_key}/restore_request":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_cloud_workspace_backups_backup_key_restore_request","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"backup_key","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/code_rules":{"get":{"operationId":"api_v1_code_rules","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"rule","in":"query","required":false,"description":"Slug or code_rule ID of one rule to expand inline as selected_rule","schema":{"type":"string"}}],"responses":{"200":{"description":"Code rules for the Repo","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/CodeRuleCollectionResponse"}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Repo not accessible"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List every code rule for the canonical Repo with capabilities and limits"},"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_code_rules","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required"},"403":{"description":"Readable Repo but the caller may not manage rules","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeRuleError"}}}},"404":{"description":"Repo or rule not accessible"},"422":{"description":"Invalid definition, unknown revision or rule limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeRuleError"}}}},"502":{"description":"Bad gateway"},"201":{"description":"The rule after the operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeRuleDetailResponse"}}}},"413":{"description":"Request body over the documented limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeRuleError"}}}},"409":{"description":"Stale expected_version or duplicate slug","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeRuleError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["definition"],"properties":{"definition":{"$ref":"#/components/schemas/CodeRuleDefinitionInput"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Create a code rule with revision 1 saved but disabled"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/code_rules/evaluations":{"post":{"operationId":"api_v1_code_rules_evaluations","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Advisory evaluation, including explicit incomplete coverage when disabled or unavailable","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/CodeRuleEvaluationResult"}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Repo not accessible"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"413":{"description":"Body exceeds 2 MiB"},"429":{"description":"Per-user evaluation rate limit exceeded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/CodeRuleEvaluationInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Evaluate a bounded diff against frozen active code rules without retaining source"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/code_rules/{rule}":{"get":{"operationId":"api_v1_code_rule","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"rule","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The rule after the operation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/CodeRuleDetailResponse"}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Repo or rule not accessible"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Code rule detail with exact latest and active content and recent revisions"},"patch":{"operationId":"patch_api_v1_organizations_org_slug_repos_repo_slug_code_rules_rule_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"rule","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The rule after the operation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/CodeRuleDetailResponse"}}}},"401":{"description":"Authentication required"},"403":{"description":"Readable Repo but the caller may not manage rules","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeRuleError"}}}},"404":{"description":"Repo or rule not accessible"},"422":{"description":"Invalid definition, unknown revision or rule limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeRuleError"}}}},"502":{"description":"Bad gateway"},"413":{"description":"Request body over the documented limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeRuleError"}}}},"409":{"description":"Stale expected_version or duplicate slug","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeRuleError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["definition","expected_version"],"properties":{"definition":{"$ref":"#/components/schemas/CodeRuleDefinitionInput"},"expected_version":{"type":"integer"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Append a draft revision; the active revision is unchanged"},"put":{"operationId":"put_api_v1_organizations_org_slug_repos_repo_slug_code_rules_rule_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"rule","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The rule after the operation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/CodeRuleDetailResponse"}}}},"401":{"description":"Authentication required"},"403":{"description":"Readable Repo but the caller may not manage rules","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeRuleError"}}}},"404":{"description":"Repo or rule not accessible"},"422":{"description":"Invalid definition, unknown revision or rule limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeRuleError"}}}},"502":{"description":"Bad gateway"},"409":{"description":"Stale expected_version or duplicate slug","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeRuleError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["definition","expected_version"],"properties":{"definition":{"$ref":"#/components/schemas/CodeRuleDefinitionInput"},"expected_version":{"type":"integer"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Same as PATCH"},"delete":{"operationId":"delete_api_v1_organizations_org_slug_repos_repo_slug_code_rules_rule_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"rule","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The deleted rule identity and its canonical Repo","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/CodeRuleDeletedResponse"}}}},"401":{"description":"Authentication required"},"403":{"description":"Readable Repo but the caller may not manage rules","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeRuleError"}}}},"404":{"description":"Repo or rule not accessible"},"422":{"description":"Invalid definition, unknown revision or rule limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeRuleError"}}}},"502":{"description":"Bad gateway"},"409":{"description":"Stale expected_version or duplicate slug","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeRuleError"}}}}},"security":[{"bearerAuth":[]}],"summary":"Delete the rule and its revisions","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["expected_version"],"properties":{"expected_version":{"type":"integer"}}}}}}}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/code_rules/{rule}/activation":{"put":{"operationId":"activation_api_v1_code_rule","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"rule","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The rule after the operation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/CodeRuleDetailResponse"}}}},"401":{"description":"Authentication required"},"403":{"description":"Readable Repo but the caller may not manage rules","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeRuleError"}}}},"404":{"description":"Repo or rule not accessible"},"422":{"description":"Invalid definition, unknown revision or rule limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeRuleError"}}}},"502":{"description":"Bad gateway"},"409":{"description":"Stale expected_version or duplicate slug","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeRuleError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["revision","expected_version"],"properties":{"revision":{"type":"integer"},"expected_version":{"type":"integer"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Enable an exact stored revision"},"delete":{"operationId":"delete_api_v1_organizations_org_slug_repos_repo_slug_code_rules_rule_activation","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"rule","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The rule after the operation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/CodeRuleDetailResponse"}}}},"401":{"description":"Authentication required"},"403":{"description":"Readable Repo but the caller may not manage rules","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeRuleError"}}}},"404":{"description":"Repo or rule not accessible"},"422":{"description":"Invalid definition, unknown revision or rule limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeRuleError"}}}},"502":{"description":"Bad gateway"},"409":{"description":"Stale expected_version or duplicate slug","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeRuleError"}}}}},"security":[{"bearerAuth":[]}],"summary":"Disable the rule; revisions are kept","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["expected_version"],"properties":{"expected_version":{"type":"integer"}}}}}}}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/pages/access":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_pages_access","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"in":"path","name":"org_slug","required":true,"schema":{"type":"string"}},{"in":"path","name":"repo_slug","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Repository access page contract","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["catalog","selected_entry","catalog_error","supports_manual_transport","tokens","tokens_error"],"properties":{"catalog":{"type":"array","items":{"$ref":"#/components/schemas/RepositoryAccessEntry"}},"selected_entry":{"oneOf":[{"$ref":"#/components/schemas/RepositoryAccessEntry"},{"type":"null"}]},"catalog_error":{"type":"string","nullable":true},"supports_manual_transport":{"type":"boolean"},"tokens":{"type":"array","items":{"$ref":"#/components/schemas/RepositoryAccessToken"}},"tokens_error":{"type":"string","nullable":true}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/pages/actions":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_pages_actions","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"range","schema":{"type":"string","enum":["7d","14d","30d"]}},{"in":"query","name":"pipeline_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Actions page contract","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["analytics","default_branch","can_retry_ci","repository_id","pipelines","action_runs","error","organization_id","github_source","github_installations","github_installations_error","github_ci_repositories","github_ci_runner_pools","github_ci_error","github_runner_egress","github_ci_compatibility_reports_by_repository","github_ci_compatibility_error_by_repository"],"properties":{"analytics":{"type":"object","required":["range","sample_count","successful_count","truncated","median_seconds","p95_seconds","median_change_percent","success_rate","median_wait_seconds","daily","slow_jobs"],"properties":{"range":{"type":"string"},"sample_count":{"type":"integer"},"successful_count":{"type":"integer"},"truncated":{"type":"boolean"},"median_seconds":{"type":"number","nullable":true},"p95_seconds":{"type":"number","nullable":true},"median_change_percent":{"type":"number","nullable":true},"success_rate":{"type":"number","nullable":true},"median_wait_seconds":{"type":"number","nullable":true},"daily":{"type":"array","items":{"type":"object","required":["date","median_seconds","p95_seconds","succeeded","failed","canceled"],"properties":{"date":{"type":"string"},"median_seconds":{"type":"number","nullable":true},"p95_seconds":{"type":"number","nullable":true},"succeeded":{"type":"integer"},"failed":{"type":"integer"},"canceled":{"type":"integer"}}}},"slow_jobs":{"type":"array","items":{"type":"object","required":["name","pipeline_name","pipeline_id","run_id","run_number","sample_count","median_seconds","p95_seconds","peak_seconds","total_seconds","median_wait_seconds"],"properties":{"name":{"type":"string"},"pipeline_name":{"type":"string"},"pipeline_id":{"type":"string"},"run_id":{"type":"string"},"run_number":{"type":"integer"},"sample_count":{"type":"integer"},"median_seconds":{"type":"number"},"p95_seconds":{"type":"number"},"peak_seconds":{"type":"number"},"total_seconds":{"type":"number"},"median_wait_seconds":{"type":"number","nullable":true}}}}}},"default_branch":{"type":"string"},"can_retry_ci":{"type":"boolean"},"repository_id":{"type":"string"},"pipelines":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/CiPipeline"},{"type":"object","required":["runner_pool","runs"],"properties":{"runner_pool":{"oneOf":[{"$ref":"#/components/schemas/CiRunnerPool"},{"type":"null"}]},"runs":{"type":"array","items":{"$ref":"#/components/schemas/CiPipelineRun"}}}}]}},"action_runs":{"type":"array","items":{"type":"object","required":["pipeline","run"],"properties":{"pipeline":{"$ref":"#/components/schemas/CiPipeline"},"run":{"$ref":"#/components/schemas/CiPipelineRun"}}}},"error":{"type":"string","nullable":true},"organization_id":{"type":"string"},"github_source":{"type":"object","nullable":true,"required":["repository_owner","repository_name","github_repository_id","github_app_installation_id","default_branch"],"properties":{"repository_owner":{"type":"string"},"repository_name":{"type":"string"},"github_repository_id":{"type":"string","nullable":true},"github_app_installation_id":{"type":"string"},"default_branch":{"type":"string"}}},"github_installations":{"type":"array","items":{"$ref":"#/components/schemas/GithubAppInstallation"}},"github_installations_error":{"type":"string","nullable":true},"github_ci_repositories":{"type":"array","items":{"$ref":"#/components/schemas/GithubCiRepository"}},"github_ci_runner_pools":{"type":"array","items":{"$ref":"#/components/schemas/CiRunnerPool"}},"github_ci_error":{"type":"string","nullable":true},"github_runner_egress":{"$ref":"#/components/schemas/GithubRunnerEgress"},"github_runner_private_links":{"type":"array","items":{"$ref":"#/components/schemas/GithubRunnerPrivateLink"}},"github_ci_compatibility_reports_by_repository":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/GithubCiCompatibilityReport"}}},"github_ci_compatibility_error_by_repository":{"type":"object","additionalProperties":{"type":"string","nullable":true}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/pages/pull_request/{number}/transcripts":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_pages_pull_request_number_transcripts","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"number","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"paginated","description":"Opt in to bounded session pages. Omit to retain the legacy complete list.","schema":{"type":"boolean","default":false}},{"in":"query","name":"cursor","description":"Opaque next_cursor from a previous page for this pull request.","schema":{"type":"string"}},{"in":"query","name":"limit","description":"Maximum sessions in paginated mode.","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"in":"path","name":"number","required":true,"description":"The pull request number on GitHub.","schema":{"type":"integer"}}],"responses":{"200":{"description":"Pull request agent transcripts page contract","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["pull_request","sessions"],"properties":{"pull_request":{"$ref":"#/components/schemas/OrganizationSessionPullRequest"},"pagination":{"type":"object","description":"Present only when paginated=true.","required":["next_cursor","has_more","limit"],"properties":{"next_cursor":{"type":"string","nullable":true},"has_more":{"type":"boolean"},"limit":{"type":"integer"}}},"sessions":{"type":"array","description":"Sessions linked to this pull request, newest first, in the Transcripts list row shape.","items":{"$ref":"#/components/schemas/OrganizationSessionSummary"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"No such pull request in this repository"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"400":{"description":"Invalid pagination cursor or limit"}},"security":[{"bearerAuth":[]}],"summary":"Pull request agent transcripts page contract","description":"The page the Vex comment on a GitHub pull request links to: the pull request as the server last recorded it, and every agent session the server derived a link to, in the same row shape as the organization Transcripts list. A pull request with no linked session returns an empty `sessions` array rather than a 404; a number this repository has no pull request for, and one belonging to another organization, are both 404. `repo_slug` addresses the repository the way the CLI does — the backing repository, across every virtual repository synced to GitHub under it."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/pages/sync":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_pages_sync","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Git source availability and refresh capability","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["sync_targets","error"],"properties":{"sync_targets":{"type":"array","items":{"type":"object","required":["id","provider_label","remote_repository","source_branch","status","status_label","status_description","github_app_installation_id","can_sync"],"properties":{"id":{"type":"string"},"provider_label":{"type":"string"},"remote_repository":{"type":"string","nullable":true},"source_branch":{"type":"string"},"status":{"type":"string","enum":["ready","unavailable"]},"status_label":{"type":"string"},"status_description":{"type":"string"},"github_app_installation_id":{"type":"string","nullable":true},"can_sync":{"type":"boolean"}}}},"error":{"type":"string","nullable":true}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/settings":{"get":{"operationId":"api_v1_settings","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Physical Git repository settings snapshot","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["org","repo","organization_id","repository","can_manage_settings","default_branch","default_change_land_method","github_installations","github_installations_error","magic_merge_settings","bookmark_protection_rules","bookmark_protection_events","required_check_candidates","github_required_check_snapshot","access_entry","access_catalog_error","access_tokens","access_tokens_error","supports_manual_access_tokens","mutation_lease"],"properties":{"org":{"type":"string"},"repo":{"type":"string"},"organization_id":{"type":"string"},"repository":{"$ref":"#/components/schemas/Repository"},"can_manage_settings":{"type":"boolean"},"default_branch":{"type":"string"},"default_change_land_method":{"type":"string","enum":["squash","rebase"]},"github_installations":{"type":"array","items":{"$ref":"#/components/schemas/GithubAppInstallation"}},"github_installations_error":{"type":"string","nullable":true},"magic_merge_settings":{"oneOf":[{"type":"object","required":["github_repository","application_mode"],"properties":{"github_repository":{"type":"string"},"application_mode":{"type":"string","enum":["off","automatic","review","command"]}}},{"type":"null"}]},"bookmark_protection_rules":{"type":"array","items":{"$ref":"#/components/schemas/BookmarkProtectionRule"}},"bookmark_protection_events":{"type":"array","items":{"$ref":"#/components/schemas/BookmarkProtectionEvent"}},"required_check_candidates":{"type":"array","items":{"$ref":"#/components/schemas/RequiredCheckCandidate"}},"github_required_check_snapshot":{"oneOf":[{"$ref":"#/components/schemas/GithubRequiredCheckSnapshot"},{"type":"null"}]},"access_entry":{"oneOf":[{"$ref":"#/components/schemas/RepositoryAccessEntry"},{"type":"null"}]},"access_catalog_error":{"type":"string","nullable":true},"access_tokens":{"type":"array","items":{"$ref":"#/components/schemas/RepositoryAccessToken"}},"access_tokens_error":{"type":"string","nullable":true},"supports_manual_access_tokens":{"type":"boolean"},"mutation_lease":{"oneOf":[{"$ref":"#/components/schemas/RepositoryMutationLease"},{"type":"null"}]}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_org_slug_repos_repo_slug_settings","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Repository metadata updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["repository"],"properties":{"repository":{"$ref":"#/components/schemas/Repository"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"name":{"type":"string","minLength":1},"description":{"type":"string","nullable":true},"icon_name":{"type":"string"},"status":{"type":"string","enum":["active","archived"]}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/settings/land_method":{"patch":{"operationId":"api_v1_settings_land_method","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Default Change land method updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["default_change_land_method"],"properties":{"default_change_land_method":{"type":"string","enum":["squash","rebase"]}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["default_change_land_method"],"properties":{"default_change_land_method":{"type":"string","enum":["squash","rebase"]}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/settings/magic_merge":{"patch":{"operationId":"api_v1_settings_magic_merge","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Repository MagicMerge mode updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["application_mode"],"properties":{"application_mode":{"type":"string","enum":["off","automatic","review","command"]}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["application_mode"],"properties":{"application_mode":{"type":"string","enum":["off","automatic","review","command"]}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/settings/mutation_lease/clear":{"post":{"operationId":"api_v1_settings_mutation_lease_clear","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Mutation lease cleared and the previous holder fenced off","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["cleared","was_live","fenced_to_version","lease_fingerprint","lease"],"properties":{"cleared":{"type":"boolean"},"was_live":{"type":"boolean"},"fenced_to_version":{"type":"integer"},"lease_fingerprint":{"type":"string","nullable":true},"lease":{"$ref":"#/components/schemas/RepositoryMutationLease"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"No mutation lease to clear","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"reason":{"type":"string","maxLength":2000}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/settings/trunk":{"patch":{"operationId":"api_v1_settings_trunk","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Repository trunk updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["default_branch"],"properties":{"default_branch":{"type":"string"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["default_branch"],"properties":{"default_branch":{"type":"string","minLength":1}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/stats":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_stats","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Repository statistics snapshot with a downsampled history series","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["repository_stats"],"properties":{"repository_stats":{"$ref":"#/components/schemas/RepositoryGitStats"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"503":{"description":"Git inventory is unavailable for this repository","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Physical Git object inventory and recorded history"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/stats/refresh":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_stats_refresh","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Repository statistics snapshot with a downsampled history series","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["repository_stats"],"properties":{"repository_stats":{"$ref":"#/components/schemas/RepositoryGitStats"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"429":{"description":"A recompute was spent for this repository too recently","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"503":{"description":"Git inventory is unavailable for this repository","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Spend a recompute of the repository statistics snapshot","description":"Organization-admin only and rate limited per repository. A recompute spends a bounded scan over the repository's Git inventory, so the cost is what is gated rather than the content. Returns the same body as the read endpoint.\n"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/archive.zip":{"get":{"operationId":"api_v1_org_repo_vcs_archive","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Materialized trunk snapshot without repository history or VCS metadata","content":{"application/zip":{"schema":{"type":"string","format":"binary"}}},"headers":{"Content-Disposition":{"description":"Attachment filename containing organization, repository, trunk, and short commit id","schema":{"type":"string"}},"Content-Length":{"description":"Compressed ZIP size in bytes","schema":{"type":"integer","minimum":0}},"X-Vex-Repository-Ref":{"description":"Resolved trunk name","schema":{"type":"string"}},"X-Vex-Repository-Commit":{"description":"Resolved trunk commit id","schema":{"type":"string"}},"X-Vex-Archive-File-Count":{"description":"Number of files in the archive","schema":{"type":"integer","minimum":0}},"X-Vex-Archive-Uncompressed-Bytes":{"description":"Total uncompressed file bytes","schema":{"type":"integer","minimum":0}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"403":{"description":"Repository read access denied","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"404":{"description":"Repository or trunk ref not found","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Archive contains an unsupported symlink or unsafe path","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"502":{"description":"Backend repository read failed","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"400":{"description":"Invalid virtual-repository path scope","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"413":{"description":"Archive exceeds a configured direct-download limit","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"503":{"description":"Archive generation exceeded its configured deadline","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Download the materialized trunk as a ZIP archive","description":"Requires an authenticated session cookie or bearer token with repository read access. The archive always resolves the repository's current trunk; virtual repositories are scoped and rewritten to their own root."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/blame":{"get":{"operationId":"api_v1_org_repo_vcs_blame","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"ref","in":"query","required":true,"schema":{"type":"string"}},{"name":"path","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Per line file blame","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VcsBlameResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/blob":{"get":{"operationId":"api_v1_org_repo_vcs_blob","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/branches":{"get":{"operationId":"api_v1_org_repo_vcs_branches","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Repository bookmarks","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VcsBranchesResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_branches","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/branches/{branch_name}":{"delete":{"operationId":"api_v1_org_repo_vcs","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"branch_name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Bookmark deleted"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/browser/file":{"get":{"operationId":"api_v1_org_repo_vcs_browser_file","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"ref","in":"query","required":true,"schema":{"type":"string"}},{"name":"path","in":"query","required":false,"schema":{"type":"string"}},{"name":"file","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Selected repository browser file","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VcsBrowserFileResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/browser/tree":{"get":{"operationId":"api_v1_org_repo_vcs_browser_tree","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"recursive","in":"query","required":false,"description":"Set false to read only root and ancestors of path.","schema":{"type":"boolean","default":true}},{"name":"path","in":"query","required":false,"description":"Entry to reveal when recursive is false.","schema":{"type":"string"}},{"name":"ref","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Repository browser tree","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VcsBrowserTreeResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/change_groups":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_vcs_change_groups","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Repository-scoped change groups","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["groups"],"properties":{"groups":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeGroup"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List explicit change groups in a repository"},"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_change_groups","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"502":{"description":"Bad gateway"},"201":{"description":"Created explicit change group","content":{"application/json":{"schema":{"type":"object","required":["group"],"properties":{"group":{"$ref":"#/components/schemas/VcsChangeGroup"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["name"],"properties":{"name":{"type":"string"},"title":{"type":"string","nullable":true}}}}}},"security":[{"bearerAuth":[]}],"summary":"Create an explicit change group"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/change_groups/{id}":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_vcs_change_groups_id_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Created explicit change group","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["group"],"properties":{"group":{"$ref":"#/components/schemas/VcsChangeGroup"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read an explicit change group by number, id, or name"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/change_groups/{id}/members":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_change_groups_id_members","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Created explicit change group","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["group"],"properties":{"group":{"$ref":"#/components/schemas/VcsChangeGroup"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["change_id"],"properties":{"change_id":{"type":"string","description":"Change number","canonical id":null,"or legacy diff id.":null}}}}}},"security":[{"bearerAuth":[]}],"summary":"Add a change to an explicit group"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/change_groups/{id}/members/{change_id}":{"delete":{"operationId":"delete_api_v1_organizations_org_slug_repos_repo_slug_vcs_change_groups_id_members_change_id_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"change_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Created explicit change group","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["group"],"properties":{"group":{"$ref":"#/components/schemas/VcsChangeGroup"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Remove a change from an explicit group"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"mine","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"target","in":"query","required":false,"schema":{"type":"string"}},{"name":"label","in":"query","required":false,"description":"Label slug. Repeat the parameter or comma-separate values to require every label.","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"`orphaned` and `needs_restack` select open changes by their derived state.","schema":{"type":"string","enum":["open","landed","abandoned","folded","orphaned","needs_restack"]}},{"name":"group","in":"query","required":false,"description":"Return active stacks and ungrouped changes from this same filtered list. Unpaged: a row is a stack, and cutting the change relation underneath one would render it as smaller than it is. Sending `page` or `limit` alongside it is rejected rather than answered with truncated stacks.","schema":{"type":"string","enum":["stack"]}},{"name":"page","in":"query","required":false,"description":"Which page of changes to return. Rejected with `group=stack`.","schema":{"type":"integer","minimum":1,"default":1}},{"name":"limit","in":"query","required":false,"description":"Changes per page, clamped to 100. Rejected with `group=stack`.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}}],"responses":{"200":{"description":"One page of change summaries, plus status counts for the whole filtered scope","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["counts","visible_count_label"],"properties":{"changes":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeIndexItem"}},"pagination":{"allOf":[{"$ref":"#/components/schemas/VcsPagination"}],"description":"Present for the flat list, where `count` is every change matching the filters rather than the page's length. Absent under `group=stack`, which is unpaged."},"stacks":{"type":"array","description":"Present when `group=stack`.","items":{"$ref":"#/components/schemas/VcsStack"}},"ungrouped":{"type":"array","description":"Changes without an active stack, present when `group=stack`.","items":{"$ref":"#/components/schemas/VcsChangeIndexItem"}},"counts":{"type":"object","additionalProperties":{"type":"integer"}},"visible_count_label":{"type":"string","description":"How many changes this response carries. `pagination.count_label` names the whole scope."}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List reviewable changes in one repository"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/assets":{"post":{"operationId":"api_v1_assets","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"502":{"description":"Bad gateway"},"201":{"description":"Direct upload instructions and a pending asset binding","content":{"application/json":{"schema":{"type":"object","required":["asset","upload"],"properties":{"asset":{"$ref":"#/components/schemas/VcsChangeAsset"},"upload":{"type":"object","additionalProperties":true}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["alias","filename","content_type","byte_size","checksum_sha256","checksum_md5"],"properties":{"alias":{"type":"string"},"filename":{"type":"string"},"content_type":{"type":"string"},"byte_size":{"type":"integer","minimum":0},"checksum_sha256":{"type":"string"},"checksum_md5":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Reserve a direct upload for a private change-description asset"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/assets/{id}/finalize":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_assets_id_finalize","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Available change asset","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["asset"],"properties":{"asset":{"$ref":"#/components/schemas/VcsChangeAsset"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["blob_signed_id"],"properties":{"blob_signed_id":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Finalize a private change-description direct upload"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/git_branch_submissions":{"post":{"operationId":"api_v1_git_branch_submissions","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/git_commit_identities":{"post":{"operationId":"api_v1_git_commit_identities","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Exact patchset identities and explicit unmatched Git commits; no native conversion","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["identities","missing_git_commit_ids"],"properties":{"identities":{"type":"array","maxItems":100,"items":{"$ref":"#/components/schemas/GitReviewIdentity"}},"missing_git_commit_ids":{"type":"array","maxItems":100,"items":{"type":"string","minLength":40,"maxLength":40,"pattern":"^[0-9a-f]{40}$"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Repository unavailable to the caller"},"422":{"description":"Invalid or oversized Git identity selection"},"502":{"description":"Bad gateway"},"409":{"description":"Ambiguous association or retained revision unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["git_commit_ids"],"properties":{"git_commit_ids":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"string","minLength":40,"maxLength":40,"pattern":"^[0-9a-f]{40}$"}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Look up exact sealed Git review patchsets in one authorized repository"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/git_commit_identities/{id}":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_git_commit_identities_id_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Exact persisted Git patchset in the authorized physical repository","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/GitReviewIdentity"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Repository or reviewed Git revision unavailable to the caller"},"422":{"description":"Invalid Git identity"},"502":{"description":"Bad gateway"},"409":{"description":"Ambiguous association or retained revision unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Resolve a sealed Git commit to its exact review identity and patchset lease"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/git_publications":{"post":{"operationId":"api_v1_git_publications","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Invalid graph or unsupported repository scope"},"502":{"description":"Bad gateway"},"201":{"description":"Receipt prepared or identical retry acknowledged; object readiness is checked separately","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitPublicationReceipt"}}}},"409":{"description":"Operation key reused with a different graph","target":null,"or mirror binding":null}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["operation_key","request"],"properties":{"operation_key":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,96}$"},"request":{"$ref":"#/components/schemas/GitPublicationRequest"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Prepare an immutable Git publication receipt"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/git_publications/{id}":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_git_publications_id_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Original Git objects, Change identities, exact parents, and target verified","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"allOf":[{"$ref":"#/components/schemas/GitPublicationReceipt"},{"type":"object","required":["revisions","expected_target_commit_id"],"properties":{"expected_target_commit_id":{"type":"string","pattern":"^[0-9a-f]{40}$"},"revisions":{"type":"array","items":{"type":"object","required":["change_id","commit_id","parent_commit_id","base_commit_id","description","title"],"properties":{"change_id":{"type":"string","pattern":"^[0-9a-f]{32}$"},"commit_id":{"type":"string","pattern":"^[0-9a-f]{40}$"},"parent_commit_id":{"type":"string","nullable":true,"pattern":"^[0-9a-f]{40}$"},"base_commit_id":{"type":"string","nullable":true,"pattern":"^[0-9a-f]{40}$"},"description":{"type":"string"},"title":{"type":"string"}}}}}}]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Receipt unavailable in this repository or for this author"},"422":{"description":"Git identity","graph":null,"or repository binding is invalid":null},"502":{"description":"Bad gateway"},"202":{"description":"Receipt-owned immutable Git anchors are awaiting durable publication","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1}}}},"409":{"description":"Git target moved since receipt preparation; refresh before retrying"}},"security":[{"bearerAuth":[]}],"summary":"Verify original Git objects and durable publication anchors"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/lookup":{"get":{"operationId":"api_v1_lookup","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"legacy_stack_ref","in":"query","required":false,"schema":{"type":"string"}},{"name":"change_keys[]","in":"query","required":false,"schema":{"type":"array","minItems":1,"items":{"type":"string"}}},{"name":"target_branch","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Ordered known and missing JJ change identities, or the canonical first change for a legacy stack","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"oneOf":[{"type":"object","required":["change"],"properties":{"change":{"type":"object","required":["number","public_id"],"properties":{"number":{"type":"integer","minimum":1},"public_id":{"type":"string"}}}}},{"type":"object","required":["changes","missing_change_keys"],"properties":{"changes":{"type":"array","items":{"type":"object","additionalProperties":true}},"missing_change_keys":{"type":"array","items":{"type":"string"}},"target":{"type":"object","nullable":true,"additionalProperties":true}}}]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Look up submitted changes or resolve a legacy stack reference","description":"Provide `change_keys[]` for the normal durable-JJ lookup, or `legacy_stack_ref` while resolving a retired stack permalink."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/submit":{"post":{"operationId":"api_v1_submit","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Reviewer was not found in the organization","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"502":{"description":"Bad gateway"},"202":{"description":"Git revision anchors are awaiting durable publication; no review was created","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1}}}},"201":{"description":"Created or updated change outcomes","content":{"application/json":{"schema":{"type":"object","required":["changes","requested_reviewers","removed_reviewers"],"properties":{"changes":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeSubmitOutcome"}},"requested_reviewers":{"type":"array","items":{"$ref":"#/components/schemas/VcsResolvedReviewer"}},"removed_reviewers":{"type":"array","items":{"$ref":"#/components/schemas/VcsResolvedReviewer"}},"validated_target_commit_id":{"type":"string","description":"Target commit validated during submission."},"expected_ci":{"$ref":"#/components/schemas/VcsExpectedCiEstimate"}}}}}},"409":{"description":"The reviewer name is ambiguous, or the target ref changed; use the error to correct the request","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["error","code"],"properties":{"error":{"type":"string"},"code":{"type":"string","enum":["reviewer_ambiguous"]}}},{"type":"object","required":["error","code","target"],"properties":{"error":{"type":"string"},"code":{"type":"string","enum":["stale_target"]},"target":{"type":"object","additionalProperties":true}}}]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/GitPublicationSubmitRequest"}}}},"security":[{"bearerAuth":[]}],"summary":"Submit repository revisions as independent changes","description":"Upserts by stable change identity and appends a patchset only when the commit changes. Git publication receipts own their revision graph and target."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/submit_preview":{"get":{"operationId":"api_v1_submit_preview","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"head","in":"query","required":true,"schema":{"type":"string"}},{"name":"base","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Resolved Git revision, target, and observed review lease","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["base","base_commit_id","head_commit_id","change_id","parent_commit_id","title","description","directly_on_base","review_head_commit_id","review_patchset_number"],"properties":{"base":{"type":"string"},"base_commit_id":{"type":"string"},"head_commit_id":{"type":"string"},"change_id":{"type":"string"},"parent_commit_id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"directly_on_base":{"type":"boolean"},"review_head_commit_id":{"type":"string","nullable":true},"review_patchset_number":{"type":"integer","nullable":true}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Ref or commit cannot be submitted"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Preview a Git branch or commit for browser submission"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/submit_ref":{"post":{"operationId":"api_v1_submit_ref","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Ref or commit cannot be submitted"},"502":{"description":"Bad gateway"},"201":{"description":"Created or updated Change","content":{"application/json":{"schema":{"type":"object","required":["changes"],"properties":{"changes":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeSubmitOutcome"}}}}}}},"409":{"description":"Head or base moved since comparison"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["head","base","expected_head_commit_id","expected_base_commit_id","title"],"properties":{"head":{"type":"string"},"base":{"type":"string"},"expected_head_commit_id":{"type":"string"},"expected_base_commit_id":{"type":"string"},"expected_review_head_commit_id":{"type":"string","nullable":true},"expected_review_patchset_number":{"type":"integer","nullable":true},"title":{"type":"string"},"description":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Submit a Git branch or commit from the browser"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/sync":{"post":{"operationId":"api_v1_sync","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Created or updated change outcomes","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["changes","requested_reviewers","removed_reviewers"],"properties":{"changes":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeSubmitOutcome"}},"requested_reviewers":{"type":"array","items":{"$ref":"#/components/schemas/VcsResolvedReviewer"}},"removed_reviewers":{"type":"array","items":{"$ref":"#/components/schemas/VcsResolvedReviewer"}},"validated_target_commit_id":{"type":"string","description":"Target commit validated during submission."},"expected_ci":{"$ref":"#/components/schemas/VcsExpectedCiEstimate"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Reviewer was not found in the organization","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"502":{"description":"Bad gateway"},"202":{"description":"Git revision anchors are awaiting durable publication; no review was created","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1}}}},"409":{"description":"The reviewer name is ambiguous, or the target ref changed; use the error to correct the request","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["error","code"],"properties":{"error":{"type":"string"},"code":{"type":"string","enum":["reviewer_ambiguous"]}}},{"type":"object","required":["error","code","target"],"properties":{"error":{"type":"string"},"code":{"type":"string","enum":["stale_target"]},"target":{"type":"object","additionalProperties":true}}}]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/GitPublicationSubmitRequest"}}}},"security":[{"bearerAuth":[]}],"summary":"Synchronize submitted Git reviews","description":"Upserts by stable change identity and appends a patchset only when the commit changes. Git publication receipts own their revision graph and target."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{change_id}/diff":{"get":{"operationId":"api_v1_change_diff","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"change_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"base","in":"query","required":false,"schema":{"type":"string"}},{"name":"head","in":"query","required":false,"schema":{"type":"string"}},{"name":"base_patchset_number","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"head_patchset_number","in":"query","required":false,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Selected comparison, picker options, and persisted diff files","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VcsChangeDiff"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read one Rails-selected Change comparison"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{change_id}/transcript_chat":{"post":{"operationId":"api_v1_change_transcript_chat","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"change_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"A stateless answer. Accept text/event-stream for start, delta (text), done, and error (message) SSE events.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["answer","checkpoint_id","patchset_number"],"properties":{"answer":{"type":"string"},"checkpoint_id":{"type":"string"},"patchset_number":{"type":"integer"}}}},"text/event-stream":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Invalid conversation or unavailable checkpoint context"},"502":{"description":"Bad gateway"},"429":{"description":"Too many questions"},"503":{"description":"Model provider unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["transcript_chat"],"properties":{"transcript_chat":{"type":"object","required":["checkpoint_id","messages"],"properties":{"checkpoint_id":{"type":"string"},"messages":{"type":"array","minItems":1,"maxItems":21,"items":{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["user","assistant"]},"content":{"type":"string","maxLength":20000}}}}}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Ask a temporary question about an attached checkpoint"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{change_id}/transcripts":{"get":{"operationId":"api_v1_change_transcripts","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"change_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Bounded transcript metadata for the Change","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VcsChangeTranscripts"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List transcript rows attached to one Change"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}":{"get":{"operationId":"api_v1_change","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Change detail, canonical product path, relation chain, target state, sync preview, and landing closure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["canonical_path","target_advanced","change","relation_chain","related_changes","previews","landing","activity","target","sync"],"properties":{"review_summary":{"type":"object","properties":{"diff":{"type":["object","null"],"required":["file_count","files","additions","deletions"],"properties":{"file_count":{"type":"integer"},"files":{"type":"array","maxItems":10,"items":{"type":"object","required":["path","change_type","additions","deletions"],"properties":{"path":{"type":"string"},"change_type":{"type":"string","enum":["added","modified","deleted","renamed"]},"additions":{"type":"integer"},"deletions":{"type":"integer"}}}},"additions":{"type":"integer"},"deletions":{"type":"integer"}}},"transcripts":{"type":["object","null"],"required":["session_count","total_tokens","tokens_partial"],"properties":{"session_count":{"type":"integer"},"total_tokens":{"type":["integer","null"]},"tokens_partial":{"type":"boolean"}}}}},"canonical_path":{"type":"string"},"target_advanced":{"type":"boolean"},"change":{"$ref":"#/components/schemas/VcsChangePage"},"relation_chain":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeRelationChainMember"}},"previews":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangePreview"}},"related_changes":{"type":"array","items":{"$ref":"#/components/schemas/VcsRelatedChangeGroup"}},"landing":{"$ref":"#/components/schemas/VcsChangeLanding"},"activity":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeActivityItem"}},"target":{"type":"object","required":["status"],"additionalProperties":true,"properties":{"status":{"type":"string","enum":["available","unavailable"]},"target_branch":{"type":"string"},"target_commit_id":{"type":"string","nullable":true}}},"sync":{"$ref":"#/components/schemas/VcsChangeSync"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read the canonical Change page and Overview representation"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}/abandon":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_abandon","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Abandoned change and any directly orphaned changes","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["change","orphaned_changes"],"properties":{"change":{"$ref":"#/components/schemas/VcsChange"},"orphaned_changes":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeSummary"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Abandon one submitted change and expose explicit orphan descendants"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}/accept":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_accept","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Recorded vote. Reread the change page for its updated state.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["vote"],"properties":{"vote":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"message":{"type":"string","nullable":true}}}}}},"security":[{"bearerAuth":[]}],"summary":"Accept the current patchset of a change"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}/agent_context/checkpoints/{checkpoint_id}/transcript":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_agent_context_checkpoints_checkpoint_id_transcript","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"checkpoint_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"expected_commit_id","in":"query","required":true,"description":"Exact native commit ID reported in the checkpoint's patchset_commit_id. It must be one of this change's patchsets, including superseded patchsets; a commit from another change is denied.","schema":{"type":"string"}},{"name":"max_bytes","in":"query","required":false,"description":"Maximum UTF-8-safe excerpt size. The archive is fully verified while only this prefix is retained.","schema":{"type":"integer","minimum":1,"maximum":49152}}],"responses":{"200":{"description":"A verified bounded excerpt from the selected change patchset's sanitized checkpoint archive","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["context_excerpt","excerpt_bytes","content_truncated"],"properties":{"context_excerpt":{"type":"string","description":"Sanitized native transcript text. It is transient and non-cacheable."},"excerpt_bytes":{"type":"integer","minimum":0},"content_truncated":{"type":"boolean"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"The change, requested patchset, or direct checkpoint attachment is not available to this actor"},"422":{"description":"The selected archive or excerpt budget is unavailable or invalid"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read a bounded sanitized transcript for one change patchset"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}/ci":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_ci","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current checks, timing history, and retryable runs","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["change","checks","history","retryable_runs","can_retry_ci"],"properties":{"change":{"type":"object","additionalProperties":true},"checks":{"type":"array","items":{"type":"object","additionalProperties":true}},"history":{"type":"array","items":{"type":"object","additionalProperties":true}},"retryable_runs":{"type":"array","items":{"type":"object","additionalProperties":true}},"can_retry_ci":{"type":"boolean"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Explain current and recent CI performance for a change"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}/comments":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_comments","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"path","in":"query","required":false,"schema":{"type":"string"}},{"name":"resolved","in":"query","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Change comment threads","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["comments"],"properties":{"comment":{"$ref":"#/components/schemas/VcsChangeComment"},"comments":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeComment"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List root comment threads on a change"},"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_comments","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"The actor cannot mutate comments on this change","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"404":{"description":"Not found"},"422":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"502":{"description":"Bad gateway"},"201":{"description":"Created comment and refreshed change comment threads","content":{"application/json":{"schema":{"type":"object","required":["comments"],"properties":{"comment":{"$ref":"#/components/schemas/VcsChangeComment"},"comments":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeComment"}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["body"],"properties":{"body":{"type":"string"},"patchset_id":{"type":"string","nullable":true},"path":{"type":"string","nullable":true},"side":{"type":"string","enum":["additions","deletions"],"nullable":true},"line":{"type":"integer","nullable":true},"parent_comment_id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true}}}}}},"security":[{"bearerAuth":[]}],"summary":"Create a general or inline comment on a change"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}/comments/{comment_id}/resolve":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_comments_comment_id_resolve","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"comment_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Change comment threads","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["comments"],"properties":{"comment":{"$ref":"#/components/schemas/VcsChangeComment"},"comments":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeComment"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"The actor cannot mutate comments on this change","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Resolve a change comment thread"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}/comments/{comment_id}/unresolve":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_comments_comment_id_unresolve","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"comment_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Change comment threads","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["comments"],"properties":{"comment":{"$ref":"#/components/schemas/VcsChangeComment"},"comments":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeComment"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"The actor cannot mutate comments on this change","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Reopen a resolved change comment thread"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}/description":{"patch":{"operationId":"patch_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_description","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Detailed canonical change","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["change"],"properties":{"change":{"$ref":"#/components/schemas/VcsChange"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"404":{"description":"Not found"},"422":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"description":{"type":"string","nullable":true},"assets":{"type":"array","items":{"type":"object","required":["id","alias"],"properties":{"id":{"type":"string"},"alias":{"type":"string"}}}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Update the durable rich-text description of a change"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}/file_review_checkpoints":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_file_review_checkpoints","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"The actor cannot mutate comments on this change","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"404":{"description":"Not found"},"422":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"502":{"description":"Bad gateway"},"201":{"description":"Recorded checkpoint and refreshed exact-content review projection","content":{"application/json":{"schema":{"type":"object","required":["message","patchset_id","reviewed_files"],"properties":{"message":{"type":"string"},"patchset_id":{"type":"string"},"reviewed_files":{"type":"array","items":{"$ref":"#/components/schemas/VcsReviewedFile"}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["patchset_id","path","review_action","request_id"],"properties":{"patchset_id":{"type":"string"},"path":{"type":"string"},"review_action":{"type":"string","enum":["reviewed","unreviewed"]},"request_id":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Record a reviewer-private file review checkpoint for one patchset"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}/fold":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_fold","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The absorbing change with its new patchset, the folded change, and the changes reparented onto the absorber. For `dry_run`, the plan.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"oneOf":[{"type":"object","required":["change","folded_change","restacked_changes"],"properties":{"change":{"$ref":"#/components/schemas/VcsChange"},"folded_change":{"$ref":"#/components/schemas/VcsChangeSummary"},"restacked_changes":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeSummary"}}}},{"type":"object","required":["change","absorbing_change","restacked_changes","description"],"properties":{"change":{"$ref":"#/components/schemas/VcsChangeSummary"},"absorbing_change":{"$ref":"#/components/schemas/VcsChangeSummary"},"restacked_changes":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeSummary"}},"description":{"type":"string"}}}]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"The fold was refused. `conflict` names the path that blocked it when the refusal was a merge conflict.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"conflict":{"type":"object","properties":{"path":{"type":"string"},"kind":{"type":"string"}}}}}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"into":{"type":"string","description":"The change this caller believes the parent to be. Refused when it is not, so a stack that moved is not folded somewhere unintended."},"description":{"type":"string","description":"The absorbing change's new message. Composed from both changes when omitted."},"dry_run":{"type":"boolean"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Fold one change into its parent, absorbing its content","description":"Squashes this change into the change below it: the parent gains a patchset holding both, this change closes as `folded`, and this change's open children are reparented onto the parent. `dry_run` answers with the plan and writes nothing."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}/github_projection":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_github_projection","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current per-change GitHub projection state","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["change_id","change_number","github_backed","github_projection"],"properties":{"change_id":{"type":"string"},"change_number":{"type":"integer"},"github_backed":{"type":"boolean"},"github_projection":{"type":"object","nullable":true,"additionalProperties":true}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read the GitHub pull-request projection for one change"},"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_github_projection","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"502":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"202":{"description":"Current per-change GitHub projection state","content":{"application/json":{"schema":{"type":"object","required":["change_id","change_number","github_backed","github_projection"],"properties":{"change_id":{"type":"string"},"change_number":{"type":"integer"},"github_backed":{"type":"boolean"},"github_projection":{"type":"object","nullable":true,"additionalProperties":true}}}}}},"503":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false}}}},"security":[{"bearerAuth":[]}],"summary":"Queue synchronization of the physical GitHub review for one change","description":"Publication settings belong to the repository connection. This request does not confirm GitHub publication."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}/labels":{"patch":{"operationId":"patch_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_labels","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Detailed canonical change","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["change"],"properties":{"change":{"$ref":"#/components/schemas/VcsChange"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"labels":{"type":"array","items":{"type":"string"}},"add":{"type":"array","items":{"type":"string"}},"remove":{"type":"array","items":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Curate the labels attached to a change","description":"Send `labels` to replace the manually attached set, or `add`/`remove` to adjust it. Labels derived from a `Label:` commit-message trailer are not touched here; they are reconciled on the next submit. Unknown label names are created in the organization."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}/landing_hold/release":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_landing_hold_release","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}/landing_requests":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_landing_requests","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Landing request created for the complete submitted-together closure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["request"],"properties":{"request":{"$ref":"#/components/schemas/VcsChangeLandingRequest"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"404":{"description":"Not found"},"422":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"502":{"description":"Bad gateway"},"201":{"description":"Landing request created for the complete submitted-together closure","content":{"application/json":{"schema":{"type":"object","required":["request"],"properties":{"request":{"$ref":"#/components/schemas/VcsChangeLandingRequest"}}}}}},"409":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"503":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"expected_scope_version":{"type":"string"},"override_acknowledged":{"type":"boolean"},"expected_requirement_version":{"type":"string"},"override_codes":{"type":"array","items":{"type":"string"}},"priority":{"type":"string","enum":["normal","high"],"default":"normal"},"defer_until_ready":{"type":"boolean","description":"Admit the request while approvals or checks are pending"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Request atomic landing for a change, its ancestors, and its group"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}/landing_requests/{entry_id}":{"delete":{"operationId":"delete_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_landing_requests_entry_id_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"entry_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Landing request cancelled","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"404":{"description":"Not found"},"422":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"502":{"description":"Bad gateway"},"409":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}}},"security":[{"bearerAuth":[]}],"summary":"Cancel a waiting canonical change landing request","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["expected_version"],"properties":{"expected_version":{"type":"integer","minimum":1}}}}}}}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}/patchsets/{patchset_number}/diff/{fingerprint}":{"get":{"operationId":"api_v1_org_repo_change_patchset_diff","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"patchset_number","in":"path","required":true,"schema":{"type":"string"}},{"name":"fingerprint","in":"path","required":true,"schema":{"type":"string"}},{"name":"patchset_number","in":"path","required":true,"schema":{"type":"integer","minimum":1}},{"name":"fingerprint","in":"path","required":true,"description":"Opaque cache token from the patchset's `diff_path`. It is not a capability — every request is authorized like any other read of the change. A fingerprint that no longer matches still returns the current diff, but without the `immutable` directive.","schema":{"type":"string","pattern":"^[0-9a-f]{16}$"}}],"responses":{"200":{"description":"One patchset and its stored file diffs","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["patchset","files"],"properties":{"patchset":{"type":"object","required":["id","number","commit_id"],"properties":{"id":{"type":"string"},"number":{"type":"integer"},"commit_id":{"type":"string"},"parent_commit_id":{"type":"string","nullable":true},"base_commit_id":{"type":"string","nullable":true}}},"files":{"type":"array","items":{"$ref":"#/components/schemas/VcsDiffFile"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"The change or the patchset number does not exist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read the stored diff of one patchset, with patch bodies","description":"Serves the patch text Rails persisted when the patchset was submitted, so viewing a patchset's own diff never depends on jj-backend recomputing it. The change page carries file summaries only and names this path as `diff_path` on each patchset.\nThe fingerprint segment covers everything that determines the bytes, including the diff serialization version, so a body that changes is retired by moving to a new path rather than by a cache entry expiring. A request whose fingerprint matches is therefore answered `immutable` for a year. Request the `diff_path` the change page gave you; do not construct this path."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}/ready":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_ready","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Change marked ready","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["message"],"properties":{"message":{"type":"string"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Actor cannot mark this Change ready"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"Change is no longer open"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Mark an open draft Change ready for review","description":"Idempotent for ready open Changes. Requires organization membership and repository access. Does not enqueue or bypass landing requirements."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}/request_changes":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_request_changes","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Recorded vote. Reread the change page for its updated state.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["vote"],"properties":{"vote":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"message":{"type":"string","nullable":true}}}}}},"security":[{"bearerAuth":[]}],"summary":"Request changes on the current patchset of a change"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}/retry_ci":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_retry_ci","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Existing retries for this request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["pipeline_runs"],"properties":{"pipeline_runs":{"type":"array","items":{"$ref":"#/components/schemas/CiPipelineRun"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"502":{"description":"Bad gateway"},"201":{"description":"Existing retries for this request","content":{"application/json":{"schema":{"type":"object","required":["pipeline_runs"],"properties":{"pipeline_runs":{"type":"array","items":{"$ref":"#/components/schemas/CiPipelineRun"}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["request_id"],"properties":{"request_id":{"type":"string","minLength":1,"maxLength":100}}}}}},"security":[{"bearerAuth":[]}],"summary":"Retry every failed, canceled, or blocked current CI run for a change"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}/reviewers":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_reviewers","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current requested reviewers","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["reviewers"],"properties":{"reviewers":{"type":"array","items":{"$ref":"#/components/schemas/VcsResolvedReviewer"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Change was not found in this repository","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List the reviewers requested for a change"},"patch":{"operationId":"patch_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_reviewers","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current requested reviewers and the assignments changed by this request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["reviewers","requested_reviewers","removed_reviewers"],"properties":{"reviewers":{"type":"array","items":{"$ref":"#/components/schemas/VcsResolvedReviewer"}},"requested_reviewers":{"type":"array","items":{"$ref":"#/components/schemas/VcsResolvedReviewer"}},"removed_reviewers":{"type":"array","items":{"$ref":"#/components/schemas/VcsResolvedReviewer"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Change or reviewer was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"422":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"502":{"description":"Bad gateway"},"409":{"description":"The reviewer name is ambiguous","content":{"application/json":{"schema":{"type":"object","required":["error","code"],"properties":{"error":{"type":"string"},"code":{"type":"string","enum":["reviewer_ambiguous"]}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"add":{"type":"array","items":{"type":"string"}},"remove":{"type":"array","items":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Add or remove requested reviewers for a change","description":"Names and emails use the same organization member resolution as submit. Additions preserve existing reviewer requests. Removals affect only the named reviewers. Any organization member who can read the change can use this endpoint."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/changes/{id}/state":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_vcs_changes_id_state","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Uncached accepted revision metadata without backend or review-page reads","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["change"],"properties":{"change":{"type":"object","required":["number","reference","status","head_commit_id"],"properties":{"number":{"type":"integer"},"reference":{"type":"string"},"status":{"type":"string","enum":["open","landed","abandoned","folded"]},"head_commit_id":{"type":["string","null"]}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read authoritative Change state for submission checks"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/commit_file":{"post":{"operationId":"api_v1_org_repo_vcs_commit_file","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"402":{"description":"The organization's billing limit refuses this usage; see `error.upgrade_path`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingLimitExceededError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/commits":{"get":{"operationId":"api_v1_org_repo_vcs_commits","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"ref","in":"query","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","default":50,"maximum":100}},{"name":"offset","in":"query","schema":{"type":"integer","default":0}},{"name":"q","in":"query","description":"Filter by commit message, author, or SHA","schema":{"type":"string"}},{"name":"ref","in":"query","required":false,"description":"Bookmark or commit id to walk. Omitted, the repository's authoritative trunk is resolved server-side and echoed back as `ref_name`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"page","in":"query","required":false,"description":"1-based page number. Prefer this over `offset`.","schema":{"type":"integer","minimum":1,"default":1}},{"name":"offset","in":"query","required":false,"description":"Deprecated alias for `page`; snapped to the page containing this offset. Use `page`.","deprecated":true,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"path","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"First parent commit history","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VcsCommitsResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Paginated, searchable commit history for a ref"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/commits/{id}/diff/{fingerprint}":{"get":{"operationId":"api_v1_org_repo_vcs_commit_range_diff","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"fingerprint","in":"path","required":true,"schema":{"type":"string"}},{"name":"fingerprint","in":"path","required":true,"description":"Opaque cache token from the commit page's `diff_path`. It is not a capability — every request is authorized like any other read of the repository.","schema":{"type":"string","pattern":"^[0-9a-f]{16}$"}},{"name":"parent","in":"query","required":false,"description":"Override the base commit (defaults to the commit's first parent)","schema":{"type":"string"}}],"responses":{"200":{"description":"One commit range and its file diff","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VcsCommitRangeDiffResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"File diff for one commit range, with no commit metadata","description":"The file bytes of a commit range and nothing a `users` row can touch. The fingerprint segment covers everything that determines those bytes — the repository, the virtual-repository subtree and patch byte budget, the two commits, and the diff serialization version — so a body that changes is retired by moving to a new path rather than by a cache entry expiring. A request whose fingerprint matches a range named by full commit ids is answered `immutable` for a year.\nA range whose base is a moving reference, or a fingerprint that no longer matches, still returns the current diff but is not frozen.\nRequest the `diff_path` the commit page gave you; do not construct this path."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/commits/{id}/page":{"get":{"operationId":"api_v1_org_repo_vcs_commit_page","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"parent","in":"query","required":false,"description":"Override the base commit (defaults to the commit's first parent)","schema":{"type":"string"}}],"responses":{"200":{"description":"Commit metadata and the path serving its file diff","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VcsCommitPageResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Commit metadata for the commit page, and where its file bytes live","description":"The commit page's own request. It carries the commit's message, author, and resolved avatar — everything about the commit that a `users` row can move — together with `diff_path`, the fingerprinted path serving the file bytes.\nThis response revalidates and is never `immutable`: an author changing their profile picture changes it without any commit id changing, so no URL could express the change. The file bytes are addressed separately for exactly that reason, and can therefore be frozen.\nRequest `diff_path` as given; do not construct it."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/files":{"get":{"operationId":"api_v1_org_repo_vcs_files","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"ref","in":"query","required":true,"schema":{"type":"string"}},{"name":"prefix","in":"query","schema":{"type":"string","default":""}},{"name":"ref","in":"query","required":true,"schema":{"type":"string"}},{"name":"prefix","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Flat repository file index","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VcsFilesResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Recursive flat list of file paths (fuzzy finder)"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/merge":{"post":{"operationId":"api_v1_org_repo_vcs_merge","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Bookmark merge result","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VcsMergeResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VcsMergePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/merge_policy":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_vcs_merge_policy","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current policy and GitHub-primary eligibility","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["policy"],"properties":{"policy":{"type":"object","required":["repository_id","merge_github_repository_connection_id","github_connections","merge_authority","merge_authority_version","merge_policy_version","queue_validation_mode","queue_concurrency","repository_queue_concurrency","github_merge_gate","auto_land_enabled","github_primary_eligible","switch_blockers"],"properties":{"repository_id":{"type":"string"},"merge_github_repository_connection_id":{"type":"string","nullable":true},"github_connections":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"queue_validation_mode":{"type":"string","enum":["top_only","per_pr"]},"queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"repository_queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"queue_concurrency_label":{"type":"string"},"github_merge_gate":{"type":"string","enum":["branch_protection","vex_checks"]},"auto_land_enabled":{"type":"boolean"},"github_primary_eligible":{"type":"boolean"},"switch_blockers":{"type":"array","items":{"type":"string"}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read merge authority and merge-queue policy"},"patch":{"operationId":"patch_api_v1_organizations_org_slug_repos_repo_slug_vcs_merge_policy","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated policy","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["policy"],"properties":{"policy":{"type":"object","required":["repository_id","merge_github_repository_connection_id","github_connections","merge_authority","merge_authority_version","merge_policy_version","queue_validation_mode","queue_concurrency","repository_queue_concurrency","github_merge_gate","auto_land_enabled","github_primary_eligible","switch_blockers"],"properties":{"repository_id":{"type":"string"},"merge_github_repository_connection_id":{"type":"string","nullable":true},"github_connections":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"queue_validation_mode":{"type":"string","enum":["top_only","per_pr"]},"queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"repository_queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"queue_concurrency_label":{"type":"string"},"github_merge_gate":{"type":"string","enum":["branch_protection","vex_checks"]},"auto_land_enabled":{"type":"boolean"},"github_primary_eligible":{"type":"boolean"},"switch_blockers":{"type":"array","items":{"type":"string"}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Organization admin or owner membership is required"},"404":{"description":"Not found"},"422":{"description":"The authority switch is blocked or the policy is invalid"},"502":{"description":"Bad gateway"},"409":{"description":"The policy version changed"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["expected_version"],"properties":{"expected_version":{"type":"integer","minimum":1},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"queue_validation_mode":{"type":"string","enum":["top_only","per_pr"]},"queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"github_merge_gate":{"type":"string","enum":["branch_protection","vex_checks"]},"auto_land_enabled":{"type":"boolean"},"merge_github_repository_connection_id":{"type":"string","nullable":true}}}}}},"security":[{"bearerAuth":[]}],"summary":"Update merge authority and merge-queue policy","description":"Organization-admin only. Authority changes are optimistic and fail closed while queues are active, projections are reconciling or drifted, or required GitHub App permissions are missing."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/merge_queues":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_vcs_merge_queues","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"target","in":"query","required":false,"description":"Target branch. Omitted","the repository trunk is resolved server-side.":null,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"One-based page of terminal queue outcomes. Active entries are always included.","schema":{"type":"integer","minimum":1}},{"name":"window_days","in":"query","required":false,"description":"Queue analytics window. Unsupported values use the 14-day default.","schema":{"type":"integer","enum":[7,14,30],"default":14}},{"name":"entry_id","in":"query","required":false,"description":"Entry public id to resolve directly. Repeat or comma-separate for several.","schema":{"type":"string"}},{"name":"change","in":"query","required":false,"description":"Change number (`42` / `#42`) or public id whose entries should be resolved directly. Repeat or comma-separate for several.","schema":{"type":"string"}}],"responses":{"200":{"description":"Merge queue snapshot with target picker bookmarks","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["queue","policy"],"properties":{"queue":{"type":"object","required":["id","target_branch","state","state_label","state_version","merge_authority","merge_authority_version","merge_policy_version","validation_mode","concurrency","skip_ci_enabled","entries","active_entry_count","entry_count_label","terminal_history","recent_events","capabilities"],"properties":{"id":{"type":"string","nullable":true},"target_branch":{"type":"string"},"state":{"type":"string","enum":["active","paused"]},"state_label":{"type":"string"},"state_version":{"type":"integer","minimum":1},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"validation_mode":{"type":"string","enum":["top_only","per_pr"]},"concurrency":{"type":"integer","minimum":1,"maximum":20},"skip_ci_enabled":{"type":"boolean"},"active_entry_count":{"type":"integer","minimum":0},"capabilities":{"type":"object","required":["can_enqueue","can_pause","can_resume","can_promote","can_retry","can_merge"],"properties":{"can_enqueue":{"type":"boolean"},"can_pause":{"type":"boolean"},"can_resume":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"entries":{"type":"array","items":{"type":"object","required":["id","kind","state","state_label","phase","position","queue_position","title","author","enqueued_by","stack","checks_target","speculation","eta","checks_status","recovery","version","merge_when_ready","recovery_count","processing_checkpoint","started_at","completed_at","queue_time_ms","queue_time_label","ci_time_ms","ci_time_label","outcome","outcome_label","capabilities","members"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["change","github_pr"]},"state":{"type":"string","enum":["queued","validating","ready","merging","merged","ejected","cancelled","needs_attention"]},"state_label":{"type":"string","description":"What this state is called in the product. Landing is the product word, so the client renders this rather than title-casing the machine state."},"phase":{"type":"string","enum":["active","terminal"],"description":"Server-owned grouping of the entry state machine. Active entries belong in the live queue view; terminal entries belong in outcome history."},"position":{"type":"integer","minimum":1},"queue_position":{"type":"integer","minimum":1,"nullable":true},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"author":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"enqueued_by":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"stack":{"type":"object","nullable":true,"required":["code","name","reference","member_count"],"properties":{"code":{"type":"string"},"name":{"type":"string","nullable":true},"reference":{"type":"string"},"member_count":{"type":"integer","minimum":0}}},"github_pr_number":{"type":"integer","nullable":true},"selected_count":{"type":"integer","nullable":true},"selected_count_label":{"type":"string","nullable":true},"change_generation":{"type":"integer","nullable":true},"candidate_ref":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"checks_target":{"type":"object","nullable":true,"required":["kind","value"],"properties":{"kind":{"type":"string","enum":["commit"]},"value":{"type":"string"}}},"batch":{"type":"object","nullable":true,"description":"Latest durable execution batch for this entry. Current identifies shared candidate validation; older released attempts remain diagnostic history.","required":["id","current","state","status_label","reason","candidate_sha","scopes"],"properties":{"id":{"type":"string"},"current":{"type":"boolean"},"state":{"type":"string"},"status_label":{"type":"string"},"reason":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"scopes":{"type":"array","maxItems":4,"items":{"type":"object","required":["entry_id","changes"],"properties":{"entry_id":{"type":"string"},"changes":{"type":"array","maxItems":12,"items":{"type":"object","required":["id","number","reference","title"],"properties":{"id":{"type":"string"},"number":{"type":"integer"},"reference":{"type":"string"},"title":{"type":"string"}}}}}}}}},"full_ci_requested":{"type":"boolean"},"ci_skipped":{"type":"boolean"},"ci_impact":{"type":"object","nullable":true,"description":"Persisted candidate CI selection, not a claim that checks passed. Null when no impact receipt exists.","required":["status","summary","mode","reason","base_sha","candidate_sha","digest","changed_path_count","workflows","affected_components","suite_ids"],"properties":{"status":{"type":"string","enum":["current","stale"]},"summary":{"type":"string"},"mode":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"base_sha":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"digest":{"type":"string","nullable":true},"changed_path_count":{"type":"integer","minimum":0,"nullable":true},"affected_components":{"type":"array","items":{"type":"string"}},"suite_ids":{"type":"array","items":{"type":"string"}},"workflows":{"type":"array","items":{"type":"object","required":["path","selected","scheduled"],"properties":{"path":{"type":"string"},"selected":{"type":"boolean"},"scheduled":{"type":"boolean"}}}}}},"speculation":{"type":"object","nullable":true,"required":["kind","target_sha","base_ref","base_sha","candidate_ref","candidate_sha","prefix_fingerprint","build_duration_ms","ahead_count","cleanup_status"],"properties":{"kind":{"type":"string","enum":["exact_target","predicted_trunk"]},"target_sha":{"type":"string"},"base_ref":{"type":"string","nullable":true},"base_sha":{"type":"string"},"candidate_ref":{"type":"string"},"candidate_sha":{"type":"string"},"prefix_fingerprint":{"type":"string"},"build_duration_ms":{"type":"integer","minimum":0,"nullable":true},"ahead_count":{"type":"integer","minimum":0},"cleanup_status":{"type":"string","enum":["pending","cleaned","failed","not_required"]}}},"eta":{"type":"object","required":["status","target","label","detail","in_progress","reason","remaining_ms","remaining_label"],"properties":{"status":{"type":"string","enum":["available","unavailable"]},"target":{"type":"string","enum":["readiness","landing"],"description":"What the estimate is about. Readiness is validation finishing; landing is the merge itself, which is observed rather than predicted."},"label":{"type":"string","description":"The headline for this estimate, e.g. \"Ready now\", \"~28s to ready\", \"Landing now\"."},"detail":{"type":"string","description":"The sentence behind the headline, including the caveat that a readiness estimate is not a landing estimate."},"in_progress":{"type":"boolean","description":"The queue is acting on this entry right now, so the client shows activity rather than a countdown."},"reason":{"type":"string"},"remaining_ms":{"type":"integer","minimum":0,"nullable":true},"remaining_label":{"type":"string","nullable":true}}},"checks_status":{"type":"string","enum":["pending","passing","failing","stale","missing"]},"recovery":{"nullable":true,"type":"object","description":"Present on a stopped entry. Rails owns the wording; the client renders this rather than the raw ejection_reason, and uses checks_target to open the candidate's checks.","required":["kind","summary","next_step","action_required_by","action_kind"],"properties":{"kind":{"type":"string","enum":["checks_failed","landing_conflict","github_state_changed","github_access_problem","queue_policy_changed","merge_outcome_unknown","unknown"]},"summary":{"type":"string"},"next_step":{"type":"string"},"action_required_by":{"type":"string","enum":["author","repo_admin","vex"]},"action_kind":{"type":"string","enum":["open_checks","open_change","open_integration","open_queue"]}}},"ejection_reason":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true},"version":{"type":"integer","minimum":1},"merge_when_ready":{"type":"boolean"},"priority":{"type":"string","enum":["normal","high"]},"recovery_count":{"type":"integer","minimum":0},"processing_checkpoint":{"type":"string","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"started_at_label":{"type":"string","nullable":true},"completed_at":{"type":"string","format":"date-time","nullable":true},"completed_at_label":{"type":"string","nullable":true},"queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"queue_time_label":{"type":"string","nullable":true},"ci_time_ms":{"type":"integer","minimum":0},"ci_time_label":{"type":"string"},"outcome":{"type":"string","nullable":true,"enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"outcome_label":{"type":"string","nullable":true,"description":"The same wording the analytics breakdown gives this outcome, so one entry and the legend cannot disagree."},"capabilities":{"type":"object","required":["can_cancel","can_promote","can_retry","can_merge"],"properties":{"can_cancel":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_validate_full":{"type":"boolean"},"can_emergency_land":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"members":{"type":"array","items":{"type":"object","required":["id","position","state"],"properties":{"id":{"type":"string"},"position":{"type":"integer","minimum":1},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"change_key":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"github_pr_number":{"type":"integer","nullable":true},"state":{"type":"string"},"head_sha":{"type":"string","nullable":true},"checks_status":{"type":"string","nullable":true},"github_merge_commit_sha":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true}}}},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}}},"entry_count_label":{"type":"string"},"terminal_history":{"type":"object","required":["page","limit","count","count_label","last","previous","next"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1},"count":{"type":"integer","minimum":0},"count_label":{"type":"string"},"last":{"type":"integer","minimum":1},"previous":{"type":"integer","minimum":1,"nullable":true},"next":{"type":"integer","minimum":1,"nullable":true}}},"recent_events":{"type":"array","description":"Newest-first durable queue audit events, limited to 50 records.","maxItems":50,"items":{"type":"object","required":["id","action","entry_id","entry_state","entry_version","created_at"],"properties":{"id":{"type":"string"},"action":{"type":"string"},"entry_id":{"type":"string","nullable":true},"entry_state":{"type":"string","nullable":true},"entry_version":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true}}}},"last_ticked_at":{"type":"string","format":"date-time","nullable":true},"last_error":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"policy":{"type":"object","required":["repository_id","merge_github_repository_connection_id","github_connections","merge_authority","merge_authority_version","merge_policy_version","queue_validation_mode","queue_concurrency","repository_queue_concurrency","github_merge_gate","auto_land_enabled","github_primary_eligible","switch_blockers"],"properties":{"repository_id":{"type":"string"},"merge_github_repository_connection_id":{"type":"string","nullable":true},"github_connections":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"queue_validation_mode":{"type":"string","enum":["top_only","per_pr"]},"queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"repository_queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"queue_concurrency_label":{"type":"string"},"github_merge_gate":{"type":"string","enum":["branch_protection","vex_checks"]},"auto_land_enabled":{"type":"boolean"},"github_primary_eligible":{"type":"boolean"},"switch_blockers":{"type":"array","items":{"type":"string"}}}},"analytics":{"type":"object","description":"Queue performance for the reporting window. Present on queue reads only — mutation responses omit it rather than pay for a full window scan.","required":["window_days","starts_at","ends_at","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","queue_time_change_percent","average_ci_time_ms","average_ci_time_label","ci_time_change_percent","average_outside_ci_time_ms","average_outside_ci_time_label","peak_queue_time_ms","peak_queue_time_label","outcomes","daily"],"properties":{"health":{"type":"object","required":["source","starts_at","ends_at","observed_count","success_rate","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable","failures","daily"],"properties":{"source":{"type":"string","enum":["tinybird","outbox"]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"observed_count":{"type":"integer"},"success_rate":{"type":"number","nullable":true},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0},"failures":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer"}}}},"daily":{"type":"array","items":{"type":"object","required":["date","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable"],"properties":{"date":{"type":"string","format":"date"},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0}}}}}},"window_days":{"type":"integer","enum":[7,14,30]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"queue_time_change_percent":{"type":"integer","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"ci_time_change_percent":{"type":"integer","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true,"description":"Queue time not accounted for by CI — waiting behind earlier entries, plus the landing itself."},"average_outside_ci_time_label":{"type":"string","nullable":true},"peak_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"peak_queue_time_label":{"type":"string","nullable":true},"outcomes":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string","enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"label":{"type":"string"},"count":{"type":"integer","minimum":0}}}},"daily":{"type":"array","items":{"type":"object","required":["date","label","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","average_ci_time_ms","average_ci_time_label","average_outside_ci_time_ms","average_outside_ci_time_label"],"properties":{"date":{"type":"string","format":"date"},"label":{"type":"string"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_outside_ci_time_label":{"type":"string","nullable":true}}}}}},"target_branches":{"type":"array","items":{"type":"string"},"description":"Bookmark names for the target picker. Present only on the queue-page read (`GET /vcs/merge_queues`); mutation snapshots omit it. Empty while jj-backend is degraded."}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"503":{"description":"Merge queue rollout flag is disabled"}},"security":[{"bearerAuth":[]}],"summary":"Read a merge queue for the queue page","description":"The queue page's one request. `target` is optional — omitted, the repository's authoritative trunk is resolved server-side; the snapshot's `queue.target_branch` echoes the resolution. Also carries `target_branches` for the target picker."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/merge_queues/{target}":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_vcs_merge_queues_target_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"target","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"One-based page of terminal queue outcomes. Active entries are always included.","schema":{"type":"integer","minimum":1}},{"name":"window_days","in":"query","required":false,"description":"Queue analytics window. Unsupported values use the 14-day default.","schema":{"type":"integer","enum":[7,14,30],"default":14}},{"name":"entry_id","in":"query","required":false,"description":"Entry public id to resolve directly. Repeat or comma-separate for several.","schema":{"type":"string"}},{"name":"change","in":"query","required":false,"description":"Change number (`42` / `#42`) or public id whose entries should be resolved directly. Repeat or comma-separate for several.","schema":{"type":"string"}}],"responses":{"200":{"description":"Merge queue snapshot","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["queue","policy"],"properties":{"queue":{"type":"object","required":["id","target_branch","state","state_label","state_version","merge_authority","merge_authority_version","merge_policy_version","validation_mode","concurrency","skip_ci_enabled","entries","active_entry_count","entry_count_label","terminal_history","recent_events","capabilities"],"properties":{"id":{"type":"string","nullable":true},"target_branch":{"type":"string"},"state":{"type":"string","enum":["active","paused"]},"state_label":{"type":"string"},"state_version":{"type":"integer","minimum":1},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"validation_mode":{"type":"string","enum":["top_only","per_pr"]},"concurrency":{"type":"integer","minimum":1,"maximum":20},"skip_ci_enabled":{"type":"boolean"},"active_entry_count":{"type":"integer","minimum":0},"capabilities":{"type":"object","required":["can_enqueue","can_pause","can_resume","can_promote","can_retry","can_merge"],"properties":{"can_enqueue":{"type":"boolean"},"can_pause":{"type":"boolean"},"can_resume":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"entries":{"type":"array","items":{"type":"object","required":["id","kind","state","state_label","phase","position","queue_position","title","author","enqueued_by","stack","checks_target","speculation","eta","checks_status","recovery","version","merge_when_ready","recovery_count","processing_checkpoint","started_at","completed_at","queue_time_ms","queue_time_label","ci_time_ms","ci_time_label","outcome","outcome_label","capabilities","members"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["change","github_pr"]},"state":{"type":"string","enum":["queued","validating","ready","merging","merged","ejected","cancelled","needs_attention"]},"state_label":{"type":"string","description":"What this state is called in the product. Landing is the product word, so the client renders this rather than title-casing the machine state."},"phase":{"type":"string","enum":["active","terminal"],"description":"Server-owned grouping of the entry state machine. Active entries belong in the live queue view; terminal entries belong in outcome history."},"position":{"type":"integer","minimum":1},"queue_position":{"type":"integer","minimum":1,"nullable":true},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"author":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"enqueued_by":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"stack":{"type":"object","nullable":true,"required":["code","name","reference","member_count"],"properties":{"code":{"type":"string"},"name":{"type":"string","nullable":true},"reference":{"type":"string"},"member_count":{"type":"integer","minimum":0}}},"github_pr_number":{"type":"integer","nullable":true},"selected_count":{"type":"integer","nullable":true},"selected_count_label":{"type":"string","nullable":true},"change_generation":{"type":"integer","nullable":true},"candidate_ref":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"checks_target":{"type":"object","nullable":true,"required":["kind","value"],"properties":{"kind":{"type":"string","enum":["commit"]},"value":{"type":"string"}}},"batch":{"type":"object","nullable":true,"description":"Latest durable execution batch for this entry. Current identifies shared candidate validation; older released attempts remain diagnostic history.","required":["id","current","state","status_label","reason","candidate_sha","scopes"],"properties":{"id":{"type":"string"},"current":{"type":"boolean"},"state":{"type":"string"},"status_label":{"type":"string"},"reason":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"scopes":{"type":"array","maxItems":4,"items":{"type":"object","required":["entry_id","changes"],"properties":{"entry_id":{"type":"string"},"changes":{"type":"array","maxItems":12,"items":{"type":"object","required":["id","number","reference","title"],"properties":{"id":{"type":"string"},"number":{"type":"integer"},"reference":{"type":"string"},"title":{"type":"string"}}}}}}}}},"full_ci_requested":{"type":"boolean"},"ci_skipped":{"type":"boolean"},"ci_impact":{"type":"object","nullable":true,"description":"Persisted candidate CI selection, not a claim that checks passed. Null when no impact receipt exists.","required":["status","summary","mode","reason","base_sha","candidate_sha","digest","changed_path_count","workflows","affected_components","suite_ids"],"properties":{"status":{"type":"string","enum":["current","stale"]},"summary":{"type":"string"},"mode":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"base_sha":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"digest":{"type":"string","nullable":true},"changed_path_count":{"type":"integer","minimum":0,"nullable":true},"affected_components":{"type":"array","items":{"type":"string"}},"suite_ids":{"type":"array","items":{"type":"string"}},"workflows":{"type":"array","items":{"type":"object","required":["path","selected","scheduled"],"properties":{"path":{"type":"string"},"selected":{"type":"boolean"},"scheduled":{"type":"boolean"}}}}}},"speculation":{"type":"object","nullable":true,"required":["kind","target_sha","base_ref","base_sha","candidate_ref","candidate_sha","prefix_fingerprint","build_duration_ms","ahead_count","cleanup_status"],"properties":{"kind":{"type":"string","enum":["exact_target","predicted_trunk"]},"target_sha":{"type":"string"},"base_ref":{"type":"string","nullable":true},"base_sha":{"type":"string"},"candidate_ref":{"type":"string"},"candidate_sha":{"type":"string"},"prefix_fingerprint":{"type":"string"},"build_duration_ms":{"type":"integer","minimum":0,"nullable":true},"ahead_count":{"type":"integer","minimum":0},"cleanup_status":{"type":"string","enum":["pending","cleaned","failed","not_required"]}}},"eta":{"type":"object","required":["status","target","label","detail","in_progress","reason","remaining_ms","remaining_label"],"properties":{"status":{"type":"string","enum":["available","unavailable"]},"target":{"type":"string","enum":["readiness","landing"],"description":"What the estimate is about. Readiness is validation finishing; landing is the merge itself, which is observed rather than predicted."},"label":{"type":"string","description":"The headline for this estimate, e.g. \"Ready now\", \"~28s to ready\", \"Landing now\"."},"detail":{"type":"string","description":"The sentence behind the headline, including the caveat that a readiness estimate is not a landing estimate."},"in_progress":{"type":"boolean","description":"The queue is acting on this entry right now, so the client shows activity rather than a countdown."},"reason":{"type":"string"},"remaining_ms":{"type":"integer","minimum":0,"nullable":true},"remaining_label":{"type":"string","nullable":true}}},"checks_status":{"type":"string","enum":["pending","passing","failing","stale","missing"]},"recovery":{"nullable":true,"type":"object","description":"Present on a stopped entry. Rails owns the wording; the client renders this rather than the raw ejection_reason, and uses checks_target to open the candidate's checks.","required":["kind","summary","next_step","action_required_by","action_kind"],"properties":{"kind":{"type":"string","enum":["checks_failed","landing_conflict","github_state_changed","github_access_problem","queue_policy_changed","merge_outcome_unknown","unknown"]},"summary":{"type":"string"},"next_step":{"type":"string"},"action_required_by":{"type":"string","enum":["author","repo_admin","vex"]},"action_kind":{"type":"string","enum":["open_checks","open_change","open_integration","open_queue"]}}},"ejection_reason":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true},"version":{"type":"integer","minimum":1},"merge_when_ready":{"type":"boolean"},"priority":{"type":"string","enum":["normal","high"]},"recovery_count":{"type":"integer","minimum":0},"processing_checkpoint":{"type":"string","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"started_at_label":{"type":"string","nullable":true},"completed_at":{"type":"string","format":"date-time","nullable":true},"completed_at_label":{"type":"string","nullable":true},"queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"queue_time_label":{"type":"string","nullable":true},"ci_time_ms":{"type":"integer","minimum":0},"ci_time_label":{"type":"string"},"outcome":{"type":"string","nullable":true,"enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"outcome_label":{"type":"string","nullable":true,"description":"The same wording the analytics breakdown gives this outcome, so one entry and the legend cannot disagree."},"capabilities":{"type":"object","required":["can_cancel","can_promote","can_retry","can_merge"],"properties":{"can_cancel":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_validate_full":{"type":"boolean"},"can_emergency_land":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"members":{"type":"array","items":{"type":"object","required":["id","position","state"],"properties":{"id":{"type":"string"},"position":{"type":"integer","minimum":1},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"change_key":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"github_pr_number":{"type":"integer","nullable":true},"state":{"type":"string"},"head_sha":{"type":"string","nullable":true},"checks_status":{"type":"string","nullable":true},"github_merge_commit_sha":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true}}}},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}}},"entry_count_label":{"type":"string"},"terminal_history":{"type":"object","required":["page","limit","count","count_label","last","previous","next"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1},"count":{"type":"integer","minimum":0},"count_label":{"type":"string"},"last":{"type":"integer","minimum":1},"previous":{"type":"integer","minimum":1,"nullable":true},"next":{"type":"integer","minimum":1,"nullable":true}}},"recent_events":{"type":"array","description":"Newest-first durable queue audit events, limited to 50 records.","maxItems":50,"items":{"type":"object","required":["id","action","entry_id","entry_state","entry_version","created_at"],"properties":{"id":{"type":"string"},"action":{"type":"string"},"entry_id":{"type":"string","nullable":true},"entry_state":{"type":"string","nullable":true},"entry_version":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true}}}},"last_ticked_at":{"type":"string","format":"date-time","nullable":true},"last_error":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"policy":{"type":"object","required":["repository_id","merge_github_repository_connection_id","github_connections","merge_authority","merge_authority_version","merge_policy_version","queue_validation_mode","queue_concurrency","repository_queue_concurrency","github_merge_gate","auto_land_enabled","github_primary_eligible","switch_blockers"],"properties":{"repository_id":{"type":"string"},"merge_github_repository_connection_id":{"type":"string","nullable":true},"github_connections":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"queue_validation_mode":{"type":"string","enum":["top_only","per_pr"]},"queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"repository_queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"queue_concurrency_label":{"type":"string"},"github_merge_gate":{"type":"string","enum":["branch_protection","vex_checks"]},"auto_land_enabled":{"type":"boolean"},"github_primary_eligible":{"type":"boolean"},"switch_blockers":{"type":"array","items":{"type":"string"}}}},"analytics":{"type":"object","description":"Queue performance for the reporting window. Present on queue reads only — mutation responses omit it rather than pay for a full window scan.","required":["window_days","starts_at","ends_at","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","queue_time_change_percent","average_ci_time_ms","average_ci_time_label","ci_time_change_percent","average_outside_ci_time_ms","average_outside_ci_time_label","peak_queue_time_ms","peak_queue_time_label","outcomes","daily"],"properties":{"health":{"type":"object","required":["source","starts_at","ends_at","observed_count","success_rate","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable","failures","daily"],"properties":{"source":{"type":"string","enum":["tinybird","outbox"]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"observed_count":{"type":"integer"},"success_rate":{"type":"number","nullable":true},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0},"failures":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer"}}}},"daily":{"type":"array","items":{"type":"object","required":["date","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable"],"properties":{"date":{"type":"string","format":"date"},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0}}}}}},"window_days":{"type":"integer","enum":[7,14,30]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"queue_time_change_percent":{"type":"integer","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"ci_time_change_percent":{"type":"integer","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true,"description":"Queue time not accounted for by CI — waiting behind earlier entries, plus the landing itself."},"average_outside_ci_time_label":{"type":"string","nullable":true},"peak_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"peak_queue_time_label":{"type":"string","nullable":true},"outcomes":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string","enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"label":{"type":"string"},"count":{"type":"integer","minimum":0}}}},"daily":{"type":"array","items":{"type":"object","required":["date","label","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","average_ci_time_ms","average_ci_time_label","average_outside_ci_time_ms","average_outside_ci_time_label"],"properties":{"date":{"type":"string","format":"date"},"label":{"type":"string"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_outside_ci_time_label":{"type":"string","nullable":true}}}}}},"target_branches":{"type":"array","items":{"type":"string"},"description":"Bookmark names for the target picker. Present only on the queue-page read (`GET /vcs/merge_queues`); mutation snapshots omit it. Empty while jj-backend is degraded."}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"503":{"description":"Merge queue rollout flag is disabled"}},"security":[{"bearerAuth":[]}],"summary":"Read a target branch merge queue","description":"Returns active Change and plain-GitHub-PR entries plus one page of recent terminal outcomes with the current authority policy. Before the first mutation, the queue is an empty read-only snapshot and its id is null. Name an entry or change to have it resolved directly regardless of the paged history."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/merge_queues/{target}/concurrency":{"patch":{"operationId":"patch_api_v1_organizations_org_slug_repos_repo_slug_vcs_merge_queues_target_concurrency","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"target","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated queue snapshot","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["queue","policy"],"properties":{"queue":{"type":"object","required":["id","target_branch","state","state_label","state_version","merge_authority","merge_authority_version","merge_policy_version","validation_mode","concurrency","skip_ci_enabled","entries","active_entry_count","entry_count_label","terminal_history","recent_events","capabilities"],"properties":{"id":{"type":"string","nullable":true},"target_branch":{"type":"string"},"state":{"type":"string","enum":["active","paused"]},"state_label":{"type":"string"},"state_version":{"type":"integer","minimum":1},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"validation_mode":{"type":"string","enum":["top_only","per_pr"]},"concurrency":{"type":"integer","minimum":1,"maximum":20},"skip_ci_enabled":{"type":"boolean"},"active_entry_count":{"type":"integer","minimum":0},"capabilities":{"type":"object","required":["can_enqueue","can_pause","can_resume","can_promote","can_retry","can_merge"],"properties":{"can_enqueue":{"type":"boolean"},"can_pause":{"type":"boolean"},"can_resume":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"entries":{"type":"array","items":{"type":"object","required":["id","kind","state","state_label","phase","position","queue_position","title","author","enqueued_by","stack","checks_target","speculation","eta","checks_status","recovery","version","merge_when_ready","recovery_count","processing_checkpoint","started_at","completed_at","queue_time_ms","queue_time_label","ci_time_ms","ci_time_label","outcome","outcome_label","capabilities","members"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["change","github_pr"]},"state":{"type":"string","enum":["queued","validating","ready","merging","merged","ejected","cancelled","needs_attention"]},"state_label":{"type":"string","description":"What this state is called in the product. Landing is the product word, so the client renders this rather than title-casing the machine state."},"phase":{"type":"string","enum":["active","terminal"],"description":"Server-owned grouping of the entry state machine. Active entries belong in the live queue view; terminal entries belong in outcome history."},"position":{"type":"integer","minimum":1},"queue_position":{"type":"integer","minimum":1,"nullable":true},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"author":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"enqueued_by":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"stack":{"type":"object","nullable":true,"required":["code","name","reference","member_count"],"properties":{"code":{"type":"string"},"name":{"type":"string","nullable":true},"reference":{"type":"string"},"member_count":{"type":"integer","minimum":0}}},"github_pr_number":{"type":"integer","nullable":true},"selected_count":{"type":"integer","nullable":true},"selected_count_label":{"type":"string","nullable":true},"change_generation":{"type":"integer","nullable":true},"candidate_ref":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"checks_target":{"type":"object","nullable":true,"required":["kind","value"],"properties":{"kind":{"type":"string","enum":["commit"]},"value":{"type":"string"}}},"batch":{"type":"object","nullable":true,"description":"Latest durable execution batch for this entry. Current identifies shared candidate validation; older released attempts remain diagnostic history.","required":["id","current","state","status_label","reason","candidate_sha","scopes"],"properties":{"id":{"type":"string"},"current":{"type":"boolean"},"state":{"type":"string"},"status_label":{"type":"string"},"reason":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"scopes":{"type":"array","maxItems":4,"items":{"type":"object","required":["entry_id","changes"],"properties":{"entry_id":{"type":"string"},"changes":{"type":"array","maxItems":12,"items":{"type":"object","required":["id","number","reference","title"],"properties":{"id":{"type":"string"},"number":{"type":"integer"},"reference":{"type":"string"},"title":{"type":"string"}}}}}}}}},"full_ci_requested":{"type":"boolean"},"ci_skipped":{"type":"boolean"},"ci_impact":{"type":"object","nullable":true,"description":"Persisted candidate CI selection, not a claim that checks passed. Null when no impact receipt exists.","required":["status","summary","mode","reason","base_sha","candidate_sha","digest","changed_path_count","workflows","affected_components","suite_ids"],"properties":{"status":{"type":"string","enum":["current","stale"]},"summary":{"type":"string"},"mode":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"base_sha":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"digest":{"type":"string","nullable":true},"changed_path_count":{"type":"integer","minimum":0,"nullable":true},"affected_components":{"type":"array","items":{"type":"string"}},"suite_ids":{"type":"array","items":{"type":"string"}},"workflows":{"type":"array","items":{"type":"object","required":["path","selected","scheduled"],"properties":{"path":{"type":"string"},"selected":{"type":"boolean"},"scheduled":{"type":"boolean"}}}}}},"speculation":{"type":"object","nullable":true,"required":["kind","target_sha","base_ref","base_sha","candidate_ref","candidate_sha","prefix_fingerprint","build_duration_ms","ahead_count","cleanup_status"],"properties":{"kind":{"type":"string","enum":["exact_target","predicted_trunk"]},"target_sha":{"type":"string"},"base_ref":{"type":"string","nullable":true},"base_sha":{"type":"string"},"candidate_ref":{"type":"string"},"candidate_sha":{"type":"string"},"prefix_fingerprint":{"type":"string"},"build_duration_ms":{"type":"integer","minimum":0,"nullable":true},"ahead_count":{"type":"integer","minimum":0},"cleanup_status":{"type":"string","enum":["pending","cleaned","failed","not_required"]}}},"eta":{"type":"object","required":["status","target","label","detail","in_progress","reason","remaining_ms","remaining_label"],"properties":{"status":{"type":"string","enum":["available","unavailable"]},"target":{"type":"string","enum":["readiness","landing"],"description":"What the estimate is about. Readiness is validation finishing; landing is the merge itself, which is observed rather than predicted."},"label":{"type":"string","description":"The headline for this estimate, e.g. \"Ready now\", \"~28s to ready\", \"Landing now\"."},"detail":{"type":"string","description":"The sentence behind the headline, including the caveat that a readiness estimate is not a landing estimate."},"in_progress":{"type":"boolean","description":"The queue is acting on this entry right now, so the client shows activity rather than a countdown."},"reason":{"type":"string"},"remaining_ms":{"type":"integer","minimum":0,"nullable":true},"remaining_label":{"type":"string","nullable":true}}},"checks_status":{"type":"string","enum":["pending","passing","failing","stale","missing"]},"recovery":{"nullable":true,"type":"object","description":"Present on a stopped entry. Rails owns the wording; the client renders this rather than the raw ejection_reason, and uses checks_target to open the candidate's checks.","required":["kind","summary","next_step","action_required_by","action_kind"],"properties":{"kind":{"type":"string","enum":["checks_failed","landing_conflict","github_state_changed","github_access_problem","queue_policy_changed","merge_outcome_unknown","unknown"]},"summary":{"type":"string"},"next_step":{"type":"string"},"action_required_by":{"type":"string","enum":["author","repo_admin","vex"]},"action_kind":{"type":"string","enum":["open_checks","open_change","open_integration","open_queue"]}}},"ejection_reason":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true},"version":{"type":"integer","minimum":1},"merge_when_ready":{"type":"boolean"},"priority":{"type":"string","enum":["normal","high"]},"recovery_count":{"type":"integer","minimum":0},"processing_checkpoint":{"type":"string","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"started_at_label":{"type":"string","nullable":true},"completed_at":{"type":"string","format":"date-time","nullable":true},"completed_at_label":{"type":"string","nullable":true},"queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"queue_time_label":{"type":"string","nullable":true},"ci_time_ms":{"type":"integer","minimum":0},"ci_time_label":{"type":"string"},"outcome":{"type":"string","nullable":true,"enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"outcome_label":{"type":"string","nullable":true,"description":"The same wording the analytics breakdown gives this outcome, so one entry and the legend cannot disagree."},"capabilities":{"type":"object","required":["can_cancel","can_promote","can_retry","can_merge"],"properties":{"can_cancel":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_validate_full":{"type":"boolean"},"can_emergency_land":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"members":{"type":"array","items":{"type":"object","required":["id","position","state"],"properties":{"id":{"type":"string"},"position":{"type":"integer","minimum":1},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"change_key":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"github_pr_number":{"type":"integer","nullable":true},"state":{"type":"string"},"head_sha":{"type":"string","nullable":true},"checks_status":{"type":"string","nullable":true},"github_merge_commit_sha":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true}}}},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}}},"entry_count_label":{"type":"string"},"terminal_history":{"type":"object","required":["page","limit","count","count_label","last","previous","next"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1},"count":{"type":"integer","minimum":0},"count_label":{"type":"string"},"last":{"type":"integer","minimum":1},"previous":{"type":"integer","minimum":1,"nullable":true},"next":{"type":"integer","minimum":1,"nullable":true}}},"recent_events":{"type":"array","description":"Newest-first durable queue audit events, limited to 50 records.","maxItems":50,"items":{"type":"object","required":["id","action","entry_id","entry_state","entry_version","created_at"],"properties":{"id":{"type":"string"},"action":{"type":"string"},"entry_id":{"type":"string","nullable":true},"entry_state":{"type":"string","nullable":true},"entry_version":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true}}}},"last_ticked_at":{"type":"string","format":"date-time","nullable":true},"last_error":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"policy":{"type":"object","required":["repository_id","merge_github_repository_connection_id","github_connections","merge_authority","merge_authority_version","merge_policy_version","queue_validation_mode","queue_concurrency","repository_queue_concurrency","github_merge_gate","auto_land_enabled","github_primary_eligible","switch_blockers"],"properties":{"repository_id":{"type":"string"},"merge_github_repository_connection_id":{"type":"string","nullable":true},"github_connections":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"queue_validation_mode":{"type":"string","enum":["top_only","per_pr"]},"queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"repository_queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"queue_concurrency_label":{"type":"string"},"github_merge_gate":{"type":"string","enum":["branch_protection","vex_checks"]},"auto_land_enabled":{"type":"boolean"},"github_primary_eligible":{"type":"boolean"},"switch_blockers":{"type":"array","items":{"type":"string"}}}},"analytics":{"type":"object","description":"Queue performance for the reporting window. Present on queue reads only — mutation responses omit it rather than pay for a full window scan.","required":["window_days","starts_at","ends_at","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","queue_time_change_percent","average_ci_time_ms","average_ci_time_label","ci_time_change_percent","average_outside_ci_time_ms","average_outside_ci_time_label","peak_queue_time_ms","peak_queue_time_label","outcomes","daily"],"properties":{"health":{"type":"object","required":["source","starts_at","ends_at","observed_count","success_rate","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable","failures","daily"],"properties":{"source":{"type":"string","enum":["tinybird","outbox"]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"observed_count":{"type":"integer"},"success_rate":{"type":"number","nullable":true},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0},"failures":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer"}}}},"daily":{"type":"array","items":{"type":"object","required":["date","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable"],"properties":{"date":{"type":"string","format":"date"},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0}}}}}},"window_days":{"type":"integer","enum":[7,14,30]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"queue_time_change_percent":{"type":"integer","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"ci_time_change_percent":{"type":"integer","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true,"description":"Queue time not accounted for by CI — waiting behind earlier entries, plus the landing itself."},"average_outside_ci_time_label":{"type":"string","nullable":true},"peak_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"peak_queue_time_label":{"type":"string","nullable":true},"outcomes":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string","enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"label":{"type":"string"},"count":{"type":"integer","minimum":0}}}},"daily":{"type":"array","items":{"type":"object","required":["date","label","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","average_ci_time_ms","average_ci_time_label","average_outside_ci_time_ms","average_outside_ci_time_label"],"properties":{"date":{"type":"string","format":"date"},"label":{"type":"string"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_outside_ci_time_label":{"type":"string","nullable":true}}}}}},"target_branches":{"type":"array","items":{"type":"string"},"description":"Bookmark names for the target picker. Present only on the queue-page read (`GET /vcs/merge_queues`); mutation snapshots omit it. Empty while jj-backend is degraded."}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"The actor is not allowed to perform this queue mutation"},"404":{"description":"Not found"},"422":{"description":"The requested state transition is invalid"},"502":{"description":"Bad gateway"},"409":{"description":"The queue entry version changed"},"503":{"description":"Merge queue rollout flag is disabled"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["expected_version","concurrency"],"properties":{"expected_version":{"type":"integer"},"concurrency":{"type":"integer","minimum":1,"maximum":20}}}}}},"security":[{"bearerAuth":[]}],"summary":"Set native merge queue candidate concurrency"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/merge_queues/{target}/entries":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_merge_queues_target_entries","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"target","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Queue snapshot after idempotent enqueue","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["queue","policy"],"properties":{"queue":{"type":"object","required":["id","target_branch","state","state_label","state_version","merge_authority","merge_authority_version","merge_policy_version","validation_mode","concurrency","skip_ci_enabled","entries","active_entry_count","entry_count_label","terminal_history","recent_events","capabilities"],"properties":{"id":{"type":"string","nullable":true},"target_branch":{"type":"string"},"state":{"type":"string","enum":["active","paused"]},"state_label":{"type":"string"},"state_version":{"type":"integer","minimum":1},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"validation_mode":{"type":"string","enum":["top_only","per_pr"]},"concurrency":{"type":"integer","minimum":1,"maximum":20},"skip_ci_enabled":{"type":"boolean"},"active_entry_count":{"type":"integer","minimum":0},"capabilities":{"type":"object","required":["can_enqueue","can_pause","can_resume","can_promote","can_retry","can_merge"],"properties":{"can_enqueue":{"type":"boolean"},"can_pause":{"type":"boolean"},"can_resume":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"entries":{"type":"array","items":{"type":"object","required":["id","kind","state","state_label","phase","position","queue_position","title","author","enqueued_by","stack","checks_target","speculation","eta","checks_status","recovery","version","merge_when_ready","recovery_count","processing_checkpoint","started_at","completed_at","queue_time_ms","queue_time_label","ci_time_ms","ci_time_label","outcome","outcome_label","capabilities","members"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["change","github_pr"]},"state":{"type":"string","enum":["queued","validating","ready","merging","merged","ejected","cancelled","needs_attention"]},"state_label":{"type":"string","description":"What this state is called in the product. Landing is the product word, so the client renders this rather than title-casing the machine state."},"phase":{"type":"string","enum":["active","terminal"],"description":"Server-owned grouping of the entry state machine. Active entries belong in the live queue view; terminal entries belong in outcome history."},"position":{"type":"integer","minimum":1},"queue_position":{"type":"integer","minimum":1,"nullable":true},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"author":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"enqueued_by":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"stack":{"type":"object","nullable":true,"required":["code","name","reference","member_count"],"properties":{"code":{"type":"string"},"name":{"type":"string","nullable":true},"reference":{"type":"string"},"member_count":{"type":"integer","minimum":0}}},"github_pr_number":{"type":"integer","nullable":true},"selected_count":{"type":"integer","nullable":true},"selected_count_label":{"type":"string","nullable":true},"change_generation":{"type":"integer","nullable":true},"candidate_ref":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"checks_target":{"type":"object","nullable":true,"required":["kind","value"],"properties":{"kind":{"type":"string","enum":["commit"]},"value":{"type":"string"}}},"batch":{"type":"object","nullable":true,"description":"Latest durable execution batch for this entry. Current identifies shared candidate validation; older released attempts remain diagnostic history.","required":["id","current","state","status_label","reason","candidate_sha","scopes"],"properties":{"id":{"type":"string"},"current":{"type":"boolean"},"state":{"type":"string"},"status_label":{"type":"string"},"reason":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"scopes":{"type":"array","maxItems":4,"items":{"type":"object","required":["entry_id","changes"],"properties":{"entry_id":{"type":"string"},"changes":{"type":"array","maxItems":12,"items":{"type":"object","required":["id","number","reference","title"],"properties":{"id":{"type":"string"},"number":{"type":"integer"},"reference":{"type":"string"},"title":{"type":"string"}}}}}}}}},"full_ci_requested":{"type":"boolean"},"ci_skipped":{"type":"boolean"},"ci_impact":{"type":"object","nullable":true,"description":"Persisted candidate CI selection, not a claim that checks passed. Null when no impact receipt exists.","required":["status","summary","mode","reason","base_sha","candidate_sha","digest","changed_path_count","workflows","affected_components","suite_ids"],"properties":{"status":{"type":"string","enum":["current","stale"]},"summary":{"type":"string"},"mode":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"base_sha":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"digest":{"type":"string","nullable":true},"changed_path_count":{"type":"integer","minimum":0,"nullable":true},"affected_components":{"type":"array","items":{"type":"string"}},"suite_ids":{"type":"array","items":{"type":"string"}},"workflows":{"type":"array","items":{"type":"object","required":["path","selected","scheduled"],"properties":{"path":{"type":"string"},"selected":{"type":"boolean"},"scheduled":{"type":"boolean"}}}}}},"speculation":{"type":"object","nullable":true,"required":["kind","target_sha","base_ref","base_sha","candidate_ref","candidate_sha","prefix_fingerprint","build_duration_ms","ahead_count","cleanup_status"],"properties":{"kind":{"type":"string","enum":["exact_target","predicted_trunk"]},"target_sha":{"type":"string"},"base_ref":{"type":"string","nullable":true},"base_sha":{"type":"string"},"candidate_ref":{"type":"string"},"candidate_sha":{"type":"string"},"prefix_fingerprint":{"type":"string"},"build_duration_ms":{"type":"integer","minimum":0,"nullable":true},"ahead_count":{"type":"integer","minimum":0},"cleanup_status":{"type":"string","enum":["pending","cleaned","failed","not_required"]}}},"eta":{"type":"object","required":["status","target","label","detail","in_progress","reason","remaining_ms","remaining_label"],"properties":{"status":{"type":"string","enum":["available","unavailable"]},"target":{"type":"string","enum":["readiness","landing"],"description":"What the estimate is about. Readiness is validation finishing; landing is the merge itself, which is observed rather than predicted."},"label":{"type":"string","description":"The headline for this estimate, e.g. \"Ready now\", \"~28s to ready\", \"Landing now\"."},"detail":{"type":"string","description":"The sentence behind the headline, including the caveat that a readiness estimate is not a landing estimate."},"in_progress":{"type":"boolean","description":"The queue is acting on this entry right now, so the client shows activity rather than a countdown."},"reason":{"type":"string"},"remaining_ms":{"type":"integer","minimum":0,"nullable":true},"remaining_label":{"type":"string","nullable":true}}},"checks_status":{"type":"string","enum":["pending","passing","failing","stale","missing"]},"recovery":{"nullable":true,"type":"object","description":"Present on a stopped entry. Rails owns the wording; the client renders this rather than the raw ejection_reason, and uses checks_target to open the candidate's checks.","required":["kind","summary","next_step","action_required_by","action_kind"],"properties":{"kind":{"type":"string","enum":["checks_failed","landing_conflict","github_state_changed","github_access_problem","queue_policy_changed","merge_outcome_unknown","unknown"]},"summary":{"type":"string"},"next_step":{"type":"string"},"action_required_by":{"type":"string","enum":["author","repo_admin","vex"]},"action_kind":{"type":"string","enum":["open_checks","open_change","open_integration","open_queue"]}}},"ejection_reason":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true},"version":{"type":"integer","minimum":1},"merge_when_ready":{"type":"boolean"},"priority":{"type":"string","enum":["normal","high"]},"recovery_count":{"type":"integer","minimum":0},"processing_checkpoint":{"type":"string","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"started_at_label":{"type":"string","nullable":true},"completed_at":{"type":"string","format":"date-time","nullable":true},"completed_at_label":{"type":"string","nullable":true},"queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"queue_time_label":{"type":"string","nullable":true},"ci_time_ms":{"type":"integer","minimum":0},"ci_time_label":{"type":"string"},"outcome":{"type":"string","nullable":true,"enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"outcome_label":{"type":"string","nullable":true,"description":"The same wording the analytics breakdown gives this outcome, so one entry and the legend cannot disagree."},"capabilities":{"type":"object","required":["can_cancel","can_promote","can_retry","can_merge"],"properties":{"can_cancel":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_validate_full":{"type":"boolean"},"can_emergency_land":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"members":{"type":"array","items":{"type":"object","required":["id","position","state"],"properties":{"id":{"type":"string"},"position":{"type":"integer","minimum":1},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"change_key":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"github_pr_number":{"type":"integer","nullable":true},"state":{"type":"string"},"head_sha":{"type":"string","nullable":true},"checks_status":{"type":"string","nullable":true},"github_merge_commit_sha":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true}}}},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}}},"entry_count_label":{"type":"string"},"terminal_history":{"type":"object","required":["page","limit","count","count_label","last","previous","next"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1},"count":{"type":"integer","minimum":0},"count_label":{"type":"string"},"last":{"type":"integer","minimum":1},"previous":{"type":"integer","minimum":1,"nullable":true},"next":{"type":"integer","minimum":1,"nullable":true}}},"recent_events":{"type":"array","description":"Newest-first durable queue audit events, limited to 50 records.","maxItems":50,"items":{"type":"object","required":["id","action","entry_id","entry_state","entry_version","created_at"],"properties":{"id":{"type":"string"},"action":{"type":"string"},"entry_id":{"type":"string","nullable":true},"entry_state":{"type":"string","nullable":true},"entry_version":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true}}}},"last_ticked_at":{"type":"string","format":"date-time","nullable":true},"last_error":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"policy":{"type":"object","required":["repository_id","merge_github_repository_connection_id","github_connections","merge_authority","merge_authority_version","merge_policy_version","queue_validation_mode","queue_concurrency","repository_queue_concurrency","github_merge_gate","auto_land_enabled","github_primary_eligible","switch_blockers"],"properties":{"repository_id":{"type":"string"},"merge_github_repository_connection_id":{"type":"string","nullable":true},"github_connections":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"queue_validation_mode":{"type":"string","enum":["top_only","per_pr"]},"queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"repository_queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"queue_concurrency_label":{"type":"string"},"github_merge_gate":{"type":"string","enum":["branch_protection","vex_checks"]},"auto_land_enabled":{"type":"boolean"},"github_primary_eligible":{"type":"boolean"},"switch_blockers":{"type":"array","items":{"type":"string"}}}},"analytics":{"type":"object","description":"Queue performance for the reporting window. Present on queue reads only — mutation responses omit it rather than pay for a full window scan.","required":["window_days","starts_at","ends_at","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","queue_time_change_percent","average_ci_time_ms","average_ci_time_label","ci_time_change_percent","average_outside_ci_time_ms","average_outside_ci_time_label","peak_queue_time_ms","peak_queue_time_label","outcomes","daily"],"properties":{"health":{"type":"object","required":["source","starts_at","ends_at","observed_count","success_rate","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable","failures","daily"],"properties":{"source":{"type":"string","enum":["tinybird","outbox"]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"observed_count":{"type":"integer"},"success_rate":{"type":"number","nullable":true},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0},"failures":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer"}}}},"daily":{"type":"array","items":{"type":"object","required":["date","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable"],"properties":{"date":{"type":"string","format":"date"},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0}}}}}},"window_days":{"type":"integer","enum":[7,14,30]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"queue_time_change_percent":{"type":"integer","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"ci_time_change_percent":{"type":"integer","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true,"description":"Queue time not accounted for by CI — waiting behind earlier entries, plus the landing itself."},"average_outside_ci_time_label":{"type":"string","nullable":true},"peak_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"peak_queue_time_label":{"type":"string","nullable":true},"outcomes":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string","enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"label":{"type":"string"},"count":{"type":"integer","minimum":0}}}},"daily":{"type":"array","items":{"type":"object","required":["date","label","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","average_ci_time_ms","average_ci_time_label","average_outside_ci_time_ms","average_outside_ci_time_label"],"properties":{"date":{"type":"string","format":"date"},"label":{"type":"string"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_outside_ci_time_label":{"type":"string","nullable":true}}}}}},"target_branches":{"type":"array","items":{"type":"string"},"description":"Bookmark names for the target picker. Present only on the queue-page read (`GET /vcs/merge_queues`); mutation snapshots omit it. Empty while jj-backend is degraded."}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"The entry is not eligible for this queue"},"502":{"description":"Bad gateway"},"201":{"description":"Queue snapshot after enqueue","content":{"application/json":{"schema":{"type":"object","required":["queue","policy"],"properties":{"queue":{"type":"object","required":["id","target_branch","state","state_label","state_version","merge_authority","merge_authority_version","merge_policy_version","validation_mode","concurrency","skip_ci_enabled","entries","active_entry_count","entry_count_label","terminal_history","recent_events","capabilities"],"properties":{"id":{"type":"string","nullable":true},"target_branch":{"type":"string"},"state":{"type":"string","enum":["active","paused"]},"state_label":{"type":"string"},"state_version":{"type":"integer","minimum":1},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"validation_mode":{"type":"string","enum":["top_only","per_pr"]},"concurrency":{"type":"integer","minimum":1,"maximum":20},"skip_ci_enabled":{"type":"boolean"},"active_entry_count":{"type":"integer","minimum":0},"capabilities":{"type":"object","required":["can_enqueue","can_pause","can_resume","can_promote","can_retry","can_merge"],"properties":{"can_enqueue":{"type":"boolean"},"can_pause":{"type":"boolean"},"can_resume":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"entries":{"type":"array","items":{"type":"object","required":["id","kind","state","state_label","phase","position","queue_position","title","author","enqueued_by","stack","checks_target","speculation","eta","checks_status","recovery","version","merge_when_ready","recovery_count","processing_checkpoint","started_at","completed_at","queue_time_ms","queue_time_label","ci_time_ms","ci_time_label","outcome","outcome_label","capabilities","members"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["change","github_pr"]},"state":{"type":"string","enum":["queued","validating","ready","merging","merged","ejected","cancelled","needs_attention"]},"state_label":{"type":"string","description":"What this state is called in the product. Landing is the product word, so the client renders this rather than title-casing the machine state."},"phase":{"type":"string","enum":["active","terminal"],"description":"Server-owned grouping of the entry state machine. Active entries belong in the live queue view; terminal entries belong in outcome history."},"position":{"type":"integer","minimum":1},"queue_position":{"type":"integer","minimum":1,"nullable":true},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"author":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"enqueued_by":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"stack":{"type":"object","nullable":true,"required":["code","name","reference","member_count"],"properties":{"code":{"type":"string"},"name":{"type":"string","nullable":true},"reference":{"type":"string"},"member_count":{"type":"integer","minimum":0}}},"github_pr_number":{"type":"integer","nullable":true},"selected_count":{"type":"integer","nullable":true},"selected_count_label":{"type":"string","nullable":true},"change_generation":{"type":"integer","nullable":true},"candidate_ref":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"checks_target":{"type":"object","nullable":true,"required":["kind","value"],"properties":{"kind":{"type":"string","enum":["commit"]},"value":{"type":"string"}}},"batch":{"type":"object","nullable":true,"description":"Latest durable execution batch for this entry. Current identifies shared candidate validation; older released attempts remain diagnostic history.","required":["id","current","state","status_label","reason","candidate_sha","scopes"],"properties":{"id":{"type":"string"},"current":{"type":"boolean"},"state":{"type":"string"},"status_label":{"type":"string"},"reason":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"scopes":{"type":"array","maxItems":4,"items":{"type":"object","required":["entry_id","changes"],"properties":{"entry_id":{"type":"string"},"changes":{"type":"array","maxItems":12,"items":{"type":"object","required":["id","number","reference","title"],"properties":{"id":{"type":"string"},"number":{"type":"integer"},"reference":{"type":"string"},"title":{"type":"string"}}}}}}}}},"full_ci_requested":{"type":"boolean"},"ci_skipped":{"type":"boolean"},"ci_impact":{"type":"object","nullable":true,"description":"Persisted candidate CI selection, not a claim that checks passed. Null when no impact receipt exists.","required":["status","summary","mode","reason","base_sha","candidate_sha","digest","changed_path_count","workflows","affected_components","suite_ids"],"properties":{"status":{"type":"string","enum":["current","stale"]},"summary":{"type":"string"},"mode":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"base_sha":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"digest":{"type":"string","nullable":true},"changed_path_count":{"type":"integer","minimum":0,"nullable":true},"affected_components":{"type":"array","items":{"type":"string"}},"suite_ids":{"type":"array","items":{"type":"string"}},"workflows":{"type":"array","items":{"type":"object","required":["path","selected","scheduled"],"properties":{"path":{"type":"string"},"selected":{"type":"boolean"},"scheduled":{"type":"boolean"}}}}}},"speculation":{"type":"object","nullable":true,"required":["kind","target_sha","base_ref","base_sha","candidate_ref","candidate_sha","prefix_fingerprint","build_duration_ms","ahead_count","cleanup_status"],"properties":{"kind":{"type":"string","enum":["exact_target","predicted_trunk"]},"target_sha":{"type":"string"},"base_ref":{"type":"string","nullable":true},"base_sha":{"type":"string"},"candidate_ref":{"type":"string"},"candidate_sha":{"type":"string"},"prefix_fingerprint":{"type":"string"},"build_duration_ms":{"type":"integer","minimum":0,"nullable":true},"ahead_count":{"type":"integer","minimum":0},"cleanup_status":{"type":"string","enum":["pending","cleaned","failed","not_required"]}}},"eta":{"type":"object","required":["status","target","label","detail","in_progress","reason","remaining_ms","remaining_label"],"properties":{"status":{"type":"string","enum":["available","unavailable"]},"target":{"type":"string","enum":["readiness","landing"],"description":"What the estimate is about. Readiness is validation finishing; landing is the merge itself, which is observed rather than predicted."},"label":{"type":"string","description":"The headline for this estimate, e.g. \"Ready now\", \"~28s to ready\", \"Landing now\"."},"detail":{"type":"string","description":"The sentence behind the headline, including the caveat that a readiness estimate is not a landing estimate."},"in_progress":{"type":"boolean","description":"The queue is acting on this entry right now, so the client shows activity rather than a countdown."},"reason":{"type":"string"},"remaining_ms":{"type":"integer","minimum":0,"nullable":true},"remaining_label":{"type":"string","nullable":true}}},"checks_status":{"type":"string","enum":["pending","passing","failing","stale","missing"]},"recovery":{"nullable":true,"type":"object","description":"Present on a stopped entry. Rails owns the wording; the client renders this rather than the raw ejection_reason, and uses checks_target to open the candidate's checks.","required":["kind","summary","next_step","action_required_by","action_kind"],"properties":{"kind":{"type":"string","enum":["checks_failed","landing_conflict","github_state_changed","github_access_problem","queue_policy_changed","merge_outcome_unknown","unknown"]},"summary":{"type":"string"},"next_step":{"type":"string"},"action_required_by":{"type":"string","enum":["author","repo_admin","vex"]},"action_kind":{"type":"string","enum":["open_checks","open_change","open_integration","open_queue"]}}},"ejection_reason":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true},"version":{"type":"integer","minimum":1},"merge_when_ready":{"type":"boolean"},"priority":{"type":"string","enum":["normal","high"]},"recovery_count":{"type":"integer","minimum":0},"processing_checkpoint":{"type":"string","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"started_at_label":{"type":"string","nullable":true},"completed_at":{"type":"string","format":"date-time","nullable":true},"completed_at_label":{"type":"string","nullable":true},"queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"queue_time_label":{"type":"string","nullable":true},"ci_time_ms":{"type":"integer","minimum":0},"ci_time_label":{"type":"string"},"outcome":{"type":"string","nullable":true,"enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"outcome_label":{"type":"string","nullable":true,"description":"The same wording the analytics breakdown gives this outcome, so one entry and the legend cannot disagree."},"capabilities":{"type":"object","required":["can_cancel","can_promote","can_retry","can_merge"],"properties":{"can_cancel":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_validate_full":{"type":"boolean"},"can_emergency_land":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"members":{"type":"array","items":{"type":"object","required":["id","position","state"],"properties":{"id":{"type":"string"},"position":{"type":"integer","minimum":1},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"change_key":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"github_pr_number":{"type":"integer","nullable":true},"state":{"type":"string"},"head_sha":{"type":"string","nullable":true},"checks_status":{"type":"string","nullable":true},"github_merge_commit_sha":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true}}}},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}}},"entry_count_label":{"type":"string"},"terminal_history":{"type":"object","required":["page","limit","count","count_label","last","previous","next"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1},"count":{"type":"integer","minimum":0},"count_label":{"type":"string"},"last":{"type":"integer","minimum":1},"previous":{"type":"integer","minimum":1,"nullable":true},"next":{"type":"integer","minimum":1,"nullable":true}}},"recent_events":{"type":"array","description":"Newest-first durable queue audit events, limited to 50 records.","maxItems":50,"items":{"type":"object","required":["id","action","entry_id","entry_state","entry_version","created_at"],"properties":{"id":{"type":"string"},"action":{"type":"string"},"entry_id":{"type":"string","nullable":true},"entry_state":{"type":"string","nullable":true},"entry_version":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true}}}},"last_ticked_at":{"type":"string","format":"date-time","nullable":true},"last_error":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"policy":{"type":"object","required":["repository_id","merge_github_repository_connection_id","github_connections","merge_authority","merge_authority_version","merge_policy_version","queue_validation_mode","queue_concurrency","repository_queue_concurrency","github_merge_gate","auto_land_enabled","github_primary_eligible","switch_blockers"],"properties":{"repository_id":{"type":"string"},"merge_github_repository_connection_id":{"type":"string","nullable":true},"github_connections":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"queue_validation_mode":{"type":"string","enum":["top_only","per_pr"]},"queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"repository_queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"queue_concurrency_label":{"type":"string"},"github_merge_gate":{"type":"string","enum":["branch_protection","vex_checks"]},"auto_land_enabled":{"type":"boolean"},"github_primary_eligible":{"type":"boolean"},"switch_blockers":{"type":"array","items":{"type":"string"}}}},"analytics":{"type":"object","description":"Queue performance for the reporting window. Present on queue reads only — mutation responses omit it rather than pay for a full window scan.","required":["window_days","starts_at","ends_at","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","queue_time_change_percent","average_ci_time_ms","average_ci_time_label","ci_time_change_percent","average_outside_ci_time_ms","average_outside_ci_time_label","peak_queue_time_ms","peak_queue_time_label","outcomes","daily"],"properties":{"health":{"type":"object","required":["source","starts_at","ends_at","observed_count","success_rate","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable","failures","daily"],"properties":{"source":{"type":"string","enum":["tinybird","outbox"]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"observed_count":{"type":"integer"},"success_rate":{"type":"number","nullable":true},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0},"failures":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer"}}}},"daily":{"type":"array","items":{"type":"object","required":["date","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable"],"properties":{"date":{"type":"string","format":"date"},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0}}}}}},"window_days":{"type":"integer","enum":[7,14,30]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"queue_time_change_percent":{"type":"integer","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"ci_time_change_percent":{"type":"integer","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true,"description":"Queue time not accounted for by CI — waiting behind earlier entries, plus the landing itself."},"average_outside_ci_time_label":{"type":"string","nullable":true},"peak_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"peak_queue_time_label":{"type":"string","nullable":true},"outcomes":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string","enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"label":{"type":"string"},"count":{"type":"integer","minimum":0}}}},"daily":{"type":"array","items":{"type":"object","required":["date","label","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","average_ci_time_ms","average_ci_time_label","average_outside_ci_time_ms","average_outside_ci_time_label"],"properties":{"date":{"type":"string","format":"date"},"label":{"type":"string"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_outside_ci_time_label":{"type":"string","nullable":true}}}}}},"target_branches":{"type":"array","items":{"type":"string"},"description":"Bookmark names for the target picker. Present only on the queue-page read (`GET /vcs/merge_queues`); mutation snapshots omit it. Empty while jj-backend is degraded."}}}}}},"409":{"description":"The queue or authority version changed"},"503":{"description":"Merge queue rollout flag is disabled"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["kind","idempotency_key","expected_version"],"properties":{"kind":{"type":"string","enum":["change","github_pr"]},"change_id":{"type":"string","nullable":true},"github_pr_number":{"type":"integer","minimum":1,"nullable":true},"idempotency_key":{"type":"string"},"expected_version":{"type":"integer","minimum":1},"expected_target_commit_id":{"type":"string","nullable":true},"expected_target_version":{"type":"integer","nullable":true},"when_ready":{"type":"boolean","nullable":true},"priority":{"type":"string","enum":["normal","high"],"default":"normal"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Enqueue a Vex Change or plain GitHub pull request","description":"Change enqueue is atomic over its submitted-together set. Plain GitHub pull requests are accepted only under GitHub-primary authority."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/merge_queues/{target}/entries/{id}":{"delete":{"operationId":"delete_api_v1_organizations_org_slug_repos_repo_slug_vcs_merge_queues_target_entries_id_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"target","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated queue snapshot","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["queue","policy"],"properties":{"queue":{"type":"object","required":["id","target_branch","state","state_label","state_version","merge_authority","merge_authority_version","merge_policy_version","validation_mode","concurrency","skip_ci_enabled","entries","active_entry_count","entry_count_label","terminal_history","recent_events","capabilities"],"properties":{"id":{"type":"string","nullable":true},"target_branch":{"type":"string"},"state":{"type":"string","enum":["active","paused"]},"state_label":{"type":"string"},"state_version":{"type":"integer","minimum":1},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"validation_mode":{"type":"string","enum":["top_only","per_pr"]},"concurrency":{"type":"integer","minimum":1,"maximum":20},"skip_ci_enabled":{"type":"boolean"},"active_entry_count":{"type":"integer","minimum":0},"capabilities":{"type":"object","required":["can_enqueue","can_pause","can_resume","can_promote","can_retry","can_merge"],"properties":{"can_enqueue":{"type":"boolean"},"can_pause":{"type":"boolean"},"can_resume":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"entries":{"type":"array","items":{"type":"object","required":["id","kind","state","state_label","phase","position","queue_position","title","author","enqueued_by","stack","checks_target","speculation","eta","checks_status","recovery","version","merge_when_ready","recovery_count","processing_checkpoint","started_at","completed_at","queue_time_ms","queue_time_label","ci_time_ms","ci_time_label","outcome","outcome_label","capabilities","members"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["change","github_pr"]},"state":{"type":"string","enum":["queued","validating","ready","merging","merged","ejected","cancelled","needs_attention"]},"state_label":{"type":"string","description":"What this state is called in the product. Landing is the product word, so the client renders this rather than title-casing the machine state."},"phase":{"type":"string","enum":["active","terminal"],"description":"Server-owned grouping of the entry state machine. Active entries belong in the live queue view; terminal entries belong in outcome history."},"position":{"type":"integer","minimum":1},"queue_position":{"type":"integer","minimum":1,"nullable":true},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"author":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"enqueued_by":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"stack":{"type":"object","nullable":true,"required":["code","name","reference","member_count"],"properties":{"code":{"type":"string"},"name":{"type":"string","nullable":true},"reference":{"type":"string"},"member_count":{"type":"integer","minimum":0}}},"github_pr_number":{"type":"integer","nullable":true},"selected_count":{"type":"integer","nullable":true},"selected_count_label":{"type":"string","nullable":true},"change_generation":{"type":"integer","nullable":true},"candidate_ref":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"checks_target":{"type":"object","nullable":true,"required":["kind","value"],"properties":{"kind":{"type":"string","enum":["commit"]},"value":{"type":"string"}}},"batch":{"type":"object","nullable":true,"description":"Latest durable execution batch for this entry. Current identifies shared candidate validation; older released attempts remain diagnostic history.","required":["id","current","state","status_label","reason","candidate_sha","scopes"],"properties":{"id":{"type":"string"},"current":{"type":"boolean"},"state":{"type":"string"},"status_label":{"type":"string"},"reason":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"scopes":{"type":"array","maxItems":4,"items":{"type":"object","required":["entry_id","changes"],"properties":{"entry_id":{"type":"string"},"changes":{"type":"array","maxItems":12,"items":{"type":"object","required":["id","number","reference","title"],"properties":{"id":{"type":"string"},"number":{"type":"integer"},"reference":{"type":"string"},"title":{"type":"string"}}}}}}}}},"full_ci_requested":{"type":"boolean"},"ci_skipped":{"type":"boolean"},"ci_impact":{"type":"object","nullable":true,"description":"Persisted candidate CI selection, not a claim that checks passed. Null when no impact receipt exists.","required":["status","summary","mode","reason","base_sha","candidate_sha","digest","changed_path_count","workflows","affected_components","suite_ids"],"properties":{"status":{"type":"string","enum":["current","stale"]},"summary":{"type":"string"},"mode":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"base_sha":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"digest":{"type":"string","nullable":true},"changed_path_count":{"type":"integer","minimum":0,"nullable":true},"affected_components":{"type":"array","items":{"type":"string"}},"suite_ids":{"type":"array","items":{"type":"string"}},"workflows":{"type":"array","items":{"type":"object","required":["path","selected","scheduled"],"properties":{"path":{"type":"string"},"selected":{"type":"boolean"},"scheduled":{"type":"boolean"}}}}}},"speculation":{"type":"object","nullable":true,"required":["kind","target_sha","base_ref","base_sha","candidate_ref","candidate_sha","prefix_fingerprint","build_duration_ms","ahead_count","cleanup_status"],"properties":{"kind":{"type":"string","enum":["exact_target","predicted_trunk"]},"target_sha":{"type":"string"},"base_ref":{"type":"string","nullable":true},"base_sha":{"type":"string"},"candidate_ref":{"type":"string"},"candidate_sha":{"type":"string"},"prefix_fingerprint":{"type":"string"},"build_duration_ms":{"type":"integer","minimum":0,"nullable":true},"ahead_count":{"type":"integer","minimum":0},"cleanup_status":{"type":"string","enum":["pending","cleaned","failed","not_required"]}}},"eta":{"type":"object","required":["status","target","label","detail","in_progress","reason","remaining_ms","remaining_label"],"properties":{"status":{"type":"string","enum":["available","unavailable"]},"target":{"type":"string","enum":["readiness","landing"],"description":"What the estimate is about. Readiness is validation finishing; landing is the merge itself, which is observed rather than predicted."},"label":{"type":"string","description":"The headline for this estimate, e.g. \"Ready now\", \"~28s to ready\", \"Landing now\"."},"detail":{"type":"string","description":"The sentence behind the headline, including the caveat that a readiness estimate is not a landing estimate."},"in_progress":{"type":"boolean","description":"The queue is acting on this entry right now, so the client shows activity rather than a countdown."},"reason":{"type":"string"},"remaining_ms":{"type":"integer","minimum":0,"nullable":true},"remaining_label":{"type":"string","nullable":true}}},"checks_status":{"type":"string","enum":["pending","passing","failing","stale","missing"]},"recovery":{"nullable":true,"type":"object","description":"Present on a stopped entry. Rails owns the wording; the client renders this rather than the raw ejection_reason, and uses checks_target to open the candidate's checks.","required":["kind","summary","next_step","action_required_by","action_kind"],"properties":{"kind":{"type":"string","enum":["checks_failed","landing_conflict","github_state_changed","github_access_problem","queue_policy_changed","merge_outcome_unknown","unknown"]},"summary":{"type":"string"},"next_step":{"type":"string"},"action_required_by":{"type":"string","enum":["author","repo_admin","vex"]},"action_kind":{"type":"string","enum":["open_checks","open_change","open_integration","open_queue"]}}},"ejection_reason":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true},"version":{"type":"integer","minimum":1},"merge_when_ready":{"type":"boolean"},"priority":{"type":"string","enum":["normal","high"]},"recovery_count":{"type":"integer","minimum":0},"processing_checkpoint":{"type":"string","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"started_at_label":{"type":"string","nullable":true},"completed_at":{"type":"string","format":"date-time","nullable":true},"completed_at_label":{"type":"string","nullable":true},"queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"queue_time_label":{"type":"string","nullable":true},"ci_time_ms":{"type":"integer","minimum":0},"ci_time_label":{"type":"string"},"outcome":{"type":"string","nullable":true,"enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"outcome_label":{"type":"string","nullable":true,"description":"The same wording the analytics breakdown gives this outcome, so one entry and the legend cannot disagree."},"capabilities":{"type":"object","required":["can_cancel","can_promote","can_retry","can_merge"],"properties":{"can_cancel":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_validate_full":{"type":"boolean"},"can_emergency_land":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"members":{"type":"array","items":{"type":"object","required":["id","position","state"],"properties":{"id":{"type":"string"},"position":{"type":"integer","minimum":1},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"change_key":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"github_pr_number":{"type":"integer","nullable":true},"state":{"type":"string"},"head_sha":{"type":"string","nullable":true},"checks_status":{"type":"string","nullable":true},"github_merge_commit_sha":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true}}}},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}}},"entry_count_label":{"type":"string"},"terminal_history":{"type":"object","required":["page","limit","count","count_label","last","previous","next"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1},"count":{"type":"integer","minimum":0},"count_label":{"type":"string"},"last":{"type":"integer","minimum":1},"previous":{"type":"integer","minimum":1,"nullable":true},"next":{"type":"integer","minimum":1,"nullable":true}}},"recent_events":{"type":"array","description":"Newest-first durable queue audit events, limited to 50 records.","maxItems":50,"items":{"type":"object","required":["id","action","entry_id","entry_state","entry_version","created_at"],"properties":{"id":{"type":"string"},"action":{"type":"string"},"entry_id":{"type":"string","nullable":true},"entry_state":{"type":"string","nullable":true},"entry_version":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true}}}},"last_ticked_at":{"type":"string","format":"date-time","nullable":true},"last_error":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"policy":{"type":"object","required":["repository_id","merge_github_repository_connection_id","github_connections","merge_authority","merge_authority_version","merge_policy_version","queue_validation_mode","queue_concurrency","repository_queue_concurrency","github_merge_gate","auto_land_enabled","github_primary_eligible","switch_blockers"],"properties":{"repository_id":{"type":"string"},"merge_github_repository_connection_id":{"type":"string","nullable":true},"github_connections":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"queue_validation_mode":{"type":"string","enum":["top_only","per_pr"]},"queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"repository_queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"queue_concurrency_label":{"type":"string"},"github_merge_gate":{"type":"string","enum":["branch_protection","vex_checks"]},"auto_land_enabled":{"type":"boolean"},"github_primary_eligible":{"type":"boolean"},"switch_blockers":{"type":"array","items":{"type":"string"}}}},"analytics":{"type":"object","description":"Queue performance for the reporting window. Present on queue reads only — mutation responses omit it rather than pay for a full window scan.","required":["window_days","starts_at","ends_at","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","queue_time_change_percent","average_ci_time_ms","average_ci_time_label","ci_time_change_percent","average_outside_ci_time_ms","average_outside_ci_time_label","peak_queue_time_ms","peak_queue_time_label","outcomes","daily"],"properties":{"health":{"type":"object","required":["source","starts_at","ends_at","observed_count","success_rate","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable","failures","daily"],"properties":{"source":{"type":"string","enum":["tinybird","outbox"]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"observed_count":{"type":"integer"},"success_rate":{"type":"number","nullable":true},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0},"failures":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer"}}}},"daily":{"type":"array","items":{"type":"object","required":["date","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable"],"properties":{"date":{"type":"string","format":"date"},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0}}}}}},"window_days":{"type":"integer","enum":[7,14,30]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"queue_time_change_percent":{"type":"integer","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"ci_time_change_percent":{"type":"integer","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true,"description":"Queue time not accounted for by CI — waiting behind earlier entries, plus the landing itself."},"average_outside_ci_time_label":{"type":"string","nullable":true},"peak_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"peak_queue_time_label":{"type":"string","nullable":true},"outcomes":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string","enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"label":{"type":"string"},"count":{"type":"integer","minimum":0}}}},"daily":{"type":"array","items":{"type":"object","required":["date","label","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","average_ci_time_ms","average_ci_time_label","average_outside_ci_time_ms","average_outside_ci_time_label"],"properties":{"date":{"type":"string","format":"date"},"label":{"type":"string"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_outside_ci_time_label":{"type":"string","nullable":true}}}}}},"target_branches":{"type":"array","items":{"type":"string"},"description":"Bookmark names for the target picker. Present only on the queue-page read (`GET /vcs/merge_queues`); mutation snapshots omit it. Empty while jj-backend is degraded."}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"The actor is not allowed to perform this queue mutation"},"404":{"description":"Not found"},"422":{"description":"The requested state transition is invalid"},"502":{"description":"Bad gateway"},"409":{"description":"The queue entry version changed"},"503":{"description":"Merge queue rollout flag is disabled"}},"security":[{"bearerAuth":[]}],"summary":"Cancel an active merge-queue entry","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["expected_version"],"properties":{"expected_version":{"type":"integer","minimum":1}}}}}}}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/merge_queues/{target}/entries/{id}/merge":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_merge_queues_target_entries_id_merge","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"target","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated queue snapshot","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["queue","policy"],"properties":{"queue":{"type":"object","required":["id","target_branch","state","state_label","state_version","merge_authority","merge_authority_version","merge_policy_version","validation_mode","concurrency","skip_ci_enabled","entries","active_entry_count","entry_count_label","terminal_history","recent_events","capabilities"],"properties":{"id":{"type":"string","nullable":true},"target_branch":{"type":"string"},"state":{"type":"string","enum":["active","paused"]},"state_label":{"type":"string"},"state_version":{"type":"integer","minimum":1},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"validation_mode":{"type":"string","enum":["top_only","per_pr"]},"concurrency":{"type":"integer","minimum":1,"maximum":20},"skip_ci_enabled":{"type":"boolean"},"active_entry_count":{"type":"integer","minimum":0},"capabilities":{"type":"object","required":["can_enqueue","can_pause","can_resume","can_promote","can_retry","can_merge"],"properties":{"can_enqueue":{"type":"boolean"},"can_pause":{"type":"boolean"},"can_resume":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"entries":{"type":"array","items":{"type":"object","required":["id","kind","state","state_label","phase","position","queue_position","title","author","enqueued_by","stack","checks_target","speculation","eta","checks_status","recovery","version","merge_when_ready","recovery_count","processing_checkpoint","started_at","completed_at","queue_time_ms","queue_time_label","ci_time_ms","ci_time_label","outcome","outcome_label","capabilities","members"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["change","github_pr"]},"state":{"type":"string","enum":["queued","validating","ready","merging","merged","ejected","cancelled","needs_attention"]},"state_label":{"type":"string","description":"What this state is called in the product. Landing is the product word, so the client renders this rather than title-casing the machine state."},"phase":{"type":"string","enum":["active","terminal"],"description":"Server-owned grouping of the entry state machine. Active entries belong in the live queue view; terminal entries belong in outcome history."},"position":{"type":"integer","minimum":1},"queue_position":{"type":"integer","minimum":1,"nullable":true},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"author":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"enqueued_by":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"stack":{"type":"object","nullable":true,"required":["code","name","reference","member_count"],"properties":{"code":{"type":"string"},"name":{"type":"string","nullable":true},"reference":{"type":"string"},"member_count":{"type":"integer","minimum":0}}},"github_pr_number":{"type":"integer","nullable":true},"selected_count":{"type":"integer","nullable":true},"selected_count_label":{"type":"string","nullable":true},"change_generation":{"type":"integer","nullable":true},"candidate_ref":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"checks_target":{"type":"object","nullable":true,"required":["kind","value"],"properties":{"kind":{"type":"string","enum":["commit"]},"value":{"type":"string"}}},"batch":{"type":"object","nullable":true,"description":"Latest durable execution batch for this entry. Current identifies shared candidate validation; older released attempts remain diagnostic history.","required":["id","current","state","status_label","reason","candidate_sha","scopes"],"properties":{"id":{"type":"string"},"current":{"type":"boolean"},"state":{"type":"string"},"status_label":{"type":"string"},"reason":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"scopes":{"type":"array","maxItems":4,"items":{"type":"object","required":["entry_id","changes"],"properties":{"entry_id":{"type":"string"},"changes":{"type":"array","maxItems":12,"items":{"type":"object","required":["id","number","reference","title"],"properties":{"id":{"type":"string"},"number":{"type":"integer"},"reference":{"type":"string"},"title":{"type":"string"}}}}}}}}},"full_ci_requested":{"type":"boolean"},"ci_skipped":{"type":"boolean"},"ci_impact":{"type":"object","nullable":true,"description":"Persisted candidate CI selection, not a claim that checks passed. Null when no impact receipt exists.","required":["status","summary","mode","reason","base_sha","candidate_sha","digest","changed_path_count","workflows","affected_components","suite_ids"],"properties":{"status":{"type":"string","enum":["current","stale"]},"summary":{"type":"string"},"mode":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"base_sha":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"digest":{"type":"string","nullable":true},"changed_path_count":{"type":"integer","minimum":0,"nullable":true},"affected_components":{"type":"array","items":{"type":"string"}},"suite_ids":{"type":"array","items":{"type":"string"}},"workflows":{"type":"array","items":{"type":"object","required":["path","selected","scheduled"],"properties":{"path":{"type":"string"},"selected":{"type":"boolean"},"scheduled":{"type":"boolean"}}}}}},"speculation":{"type":"object","nullable":true,"required":["kind","target_sha","base_ref","base_sha","candidate_ref","candidate_sha","prefix_fingerprint","build_duration_ms","ahead_count","cleanup_status"],"properties":{"kind":{"type":"string","enum":["exact_target","predicted_trunk"]},"target_sha":{"type":"string"},"base_ref":{"type":"string","nullable":true},"base_sha":{"type":"string"},"candidate_ref":{"type":"string"},"candidate_sha":{"type":"string"},"prefix_fingerprint":{"type":"string"},"build_duration_ms":{"type":"integer","minimum":0,"nullable":true},"ahead_count":{"type":"integer","minimum":0},"cleanup_status":{"type":"string","enum":["pending","cleaned","failed","not_required"]}}},"eta":{"type":"object","required":["status","target","label","detail","in_progress","reason","remaining_ms","remaining_label"],"properties":{"status":{"type":"string","enum":["available","unavailable"]},"target":{"type":"string","enum":["readiness","landing"],"description":"What the estimate is about. Readiness is validation finishing; landing is the merge itself, which is observed rather than predicted."},"label":{"type":"string","description":"The headline for this estimate, e.g. \"Ready now\", \"~28s to ready\", \"Landing now\"."},"detail":{"type":"string","description":"The sentence behind the headline, including the caveat that a readiness estimate is not a landing estimate."},"in_progress":{"type":"boolean","description":"The queue is acting on this entry right now, so the client shows activity rather than a countdown."},"reason":{"type":"string"},"remaining_ms":{"type":"integer","minimum":0,"nullable":true},"remaining_label":{"type":"string","nullable":true}}},"checks_status":{"type":"string","enum":["pending","passing","failing","stale","missing"]},"recovery":{"nullable":true,"type":"object","description":"Present on a stopped entry. Rails owns the wording; the client renders this rather than the raw ejection_reason, and uses checks_target to open the candidate's checks.","required":["kind","summary","next_step","action_required_by","action_kind"],"properties":{"kind":{"type":"string","enum":["checks_failed","landing_conflict","github_state_changed","github_access_problem","queue_policy_changed","merge_outcome_unknown","unknown"]},"summary":{"type":"string"},"next_step":{"type":"string"},"action_required_by":{"type":"string","enum":["author","repo_admin","vex"]},"action_kind":{"type":"string","enum":["open_checks","open_change","open_integration","open_queue"]}}},"ejection_reason":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true},"version":{"type":"integer","minimum":1},"merge_when_ready":{"type":"boolean"},"priority":{"type":"string","enum":["normal","high"]},"recovery_count":{"type":"integer","minimum":0},"processing_checkpoint":{"type":"string","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"started_at_label":{"type":"string","nullable":true},"completed_at":{"type":"string","format":"date-time","nullable":true},"completed_at_label":{"type":"string","nullable":true},"queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"queue_time_label":{"type":"string","nullable":true},"ci_time_ms":{"type":"integer","minimum":0},"ci_time_label":{"type":"string"},"outcome":{"type":"string","nullable":true,"enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"outcome_label":{"type":"string","nullable":true,"description":"The same wording the analytics breakdown gives this outcome, so one entry and the legend cannot disagree."},"capabilities":{"type":"object","required":["can_cancel","can_promote","can_retry","can_merge"],"properties":{"can_cancel":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_validate_full":{"type":"boolean"},"can_emergency_land":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"members":{"type":"array","items":{"type":"object","required":["id","position","state"],"properties":{"id":{"type":"string"},"position":{"type":"integer","minimum":1},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"change_key":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"github_pr_number":{"type":"integer","nullable":true},"state":{"type":"string"},"head_sha":{"type":"string","nullable":true},"checks_status":{"type":"string","nullable":true},"github_merge_commit_sha":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true}}}},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}}},"entry_count_label":{"type":"string"},"terminal_history":{"type":"object","required":["page","limit","count","count_label","last","previous","next"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1},"count":{"type":"integer","minimum":0},"count_label":{"type":"string"},"last":{"type":"integer","minimum":1},"previous":{"type":"integer","minimum":1,"nullable":true},"next":{"type":"integer","minimum":1,"nullable":true}}},"recent_events":{"type":"array","description":"Newest-first durable queue audit events, limited to 50 records.","maxItems":50,"items":{"type":"object","required":["id","action","entry_id","entry_state","entry_version","created_at"],"properties":{"id":{"type":"string"},"action":{"type":"string"},"entry_id":{"type":"string","nullable":true},"entry_state":{"type":"string","nullable":true},"entry_version":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true}}}},"last_ticked_at":{"type":"string","format":"date-time","nullable":true},"last_error":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"policy":{"type":"object","required":["repository_id","merge_github_repository_connection_id","github_connections","merge_authority","merge_authority_version","merge_policy_version","queue_validation_mode","queue_concurrency","repository_queue_concurrency","github_merge_gate","auto_land_enabled","github_primary_eligible","switch_blockers"],"properties":{"repository_id":{"type":"string"},"merge_github_repository_connection_id":{"type":"string","nullable":true},"github_connections":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"queue_validation_mode":{"type":"string","enum":["top_only","per_pr"]},"queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"repository_queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"queue_concurrency_label":{"type":"string"},"github_merge_gate":{"type":"string","enum":["branch_protection","vex_checks"]},"auto_land_enabled":{"type":"boolean"},"github_primary_eligible":{"type":"boolean"},"switch_blockers":{"type":"array","items":{"type":"string"}}}},"analytics":{"type":"object","description":"Queue performance for the reporting window. Present on queue reads only — mutation responses omit it rather than pay for a full window scan.","required":["window_days","starts_at","ends_at","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","queue_time_change_percent","average_ci_time_ms","average_ci_time_label","ci_time_change_percent","average_outside_ci_time_ms","average_outside_ci_time_label","peak_queue_time_ms","peak_queue_time_label","outcomes","daily"],"properties":{"health":{"type":"object","required":["source","starts_at","ends_at","observed_count","success_rate","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable","failures","daily"],"properties":{"source":{"type":"string","enum":["tinybird","outbox"]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"observed_count":{"type":"integer"},"success_rate":{"type":"number","nullable":true},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0},"failures":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer"}}}},"daily":{"type":"array","items":{"type":"object","required":["date","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable"],"properties":{"date":{"type":"string","format":"date"},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0}}}}}},"window_days":{"type":"integer","enum":[7,14,30]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"queue_time_change_percent":{"type":"integer","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"ci_time_change_percent":{"type":"integer","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true,"description":"Queue time not accounted for by CI — waiting behind earlier entries, plus the landing itself."},"average_outside_ci_time_label":{"type":"string","nullable":true},"peak_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"peak_queue_time_label":{"type":"string","nullable":true},"outcomes":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string","enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"label":{"type":"string"},"count":{"type":"integer","minimum":0}}}},"daily":{"type":"array","items":{"type":"object","required":["date","label","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","average_ci_time_ms","average_ci_time_label","average_outside_ci_time_ms","average_outside_ci_time_label"],"properties":{"date":{"type":"string","format":"date"},"label":{"type":"string"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_outside_ci_time_label":{"type":"string","nullable":true}}}}}},"target_branches":{"type":"array","items":{"type":"string"},"description":"Bookmark names for the target picker. Present only on the queue-page read (`GET /vcs/merge_queues`); mutation snapshots omit it. Empty while jj-backend is degraded."}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"The actor is not allowed to perform this queue mutation"},"404":{"description":"Not found"},"422":{"description":"The requested state transition is invalid"},"502":{"description":"Bad gateway"},"409":{"description":"The queue entry version changed"},"503":{"description":"Merge queue rollout flag is disabled"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["expected_version"],"properties":{"expected_version":{"type":"integer","minimum":1}}}}}},"security":[{"bearerAuth":[]}],"summary":"Merge the ready entry at the front of the queue"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/merge_queues/{target}/entries/{id}/promote":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_merge_queues_target_entries_id_promote","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"target","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated queue snapshot","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["queue","policy"],"properties":{"queue":{"type":"object","required":["id","target_branch","state","state_label","state_version","merge_authority","merge_authority_version","merge_policy_version","validation_mode","concurrency","skip_ci_enabled","entries","active_entry_count","entry_count_label","terminal_history","recent_events","capabilities"],"properties":{"id":{"type":"string","nullable":true},"target_branch":{"type":"string"},"state":{"type":"string","enum":["active","paused"]},"state_label":{"type":"string"},"state_version":{"type":"integer","minimum":1},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"validation_mode":{"type":"string","enum":["top_only","per_pr"]},"concurrency":{"type":"integer","minimum":1,"maximum":20},"skip_ci_enabled":{"type":"boolean"},"active_entry_count":{"type":"integer","minimum":0},"capabilities":{"type":"object","required":["can_enqueue","can_pause","can_resume","can_promote","can_retry","can_merge"],"properties":{"can_enqueue":{"type":"boolean"},"can_pause":{"type":"boolean"},"can_resume":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"entries":{"type":"array","items":{"type":"object","required":["id","kind","state","state_label","phase","position","queue_position","title","author","enqueued_by","stack","checks_target","speculation","eta","checks_status","recovery","version","merge_when_ready","recovery_count","processing_checkpoint","started_at","completed_at","queue_time_ms","queue_time_label","ci_time_ms","ci_time_label","outcome","outcome_label","capabilities","members"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["change","github_pr"]},"state":{"type":"string","enum":["queued","validating","ready","merging","merged","ejected","cancelled","needs_attention"]},"state_label":{"type":"string","description":"What this state is called in the product. Landing is the product word, so the client renders this rather than title-casing the machine state."},"phase":{"type":"string","enum":["active","terminal"],"description":"Server-owned grouping of the entry state machine. Active entries belong in the live queue view; terminal entries belong in outcome history."},"position":{"type":"integer","minimum":1},"queue_position":{"type":"integer","minimum":1,"nullable":true},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"author":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"enqueued_by":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"stack":{"type":"object","nullable":true,"required":["code","name","reference","member_count"],"properties":{"code":{"type":"string"},"name":{"type":"string","nullable":true},"reference":{"type":"string"},"member_count":{"type":"integer","minimum":0}}},"github_pr_number":{"type":"integer","nullable":true},"selected_count":{"type":"integer","nullable":true},"selected_count_label":{"type":"string","nullable":true},"change_generation":{"type":"integer","nullable":true},"candidate_ref":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"checks_target":{"type":"object","nullable":true,"required":["kind","value"],"properties":{"kind":{"type":"string","enum":["commit"]},"value":{"type":"string"}}},"batch":{"type":"object","nullable":true,"description":"Latest durable execution batch for this entry. Current identifies shared candidate validation; older released attempts remain diagnostic history.","required":["id","current","state","status_label","reason","candidate_sha","scopes"],"properties":{"id":{"type":"string"},"current":{"type":"boolean"},"state":{"type":"string"},"status_label":{"type":"string"},"reason":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"scopes":{"type":"array","maxItems":4,"items":{"type":"object","required":["entry_id","changes"],"properties":{"entry_id":{"type":"string"},"changes":{"type":"array","maxItems":12,"items":{"type":"object","required":["id","number","reference","title"],"properties":{"id":{"type":"string"},"number":{"type":"integer"},"reference":{"type":"string"},"title":{"type":"string"}}}}}}}}},"full_ci_requested":{"type":"boolean"},"ci_skipped":{"type":"boolean"},"ci_impact":{"type":"object","nullable":true,"description":"Persisted candidate CI selection, not a claim that checks passed. Null when no impact receipt exists.","required":["status","summary","mode","reason","base_sha","candidate_sha","digest","changed_path_count","workflows","affected_components","suite_ids"],"properties":{"status":{"type":"string","enum":["current","stale"]},"summary":{"type":"string"},"mode":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"base_sha":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"digest":{"type":"string","nullable":true},"changed_path_count":{"type":"integer","minimum":0,"nullable":true},"affected_components":{"type":"array","items":{"type":"string"}},"suite_ids":{"type":"array","items":{"type":"string"}},"workflows":{"type":"array","items":{"type":"object","required":["path","selected","scheduled"],"properties":{"path":{"type":"string"},"selected":{"type":"boolean"},"scheduled":{"type":"boolean"}}}}}},"speculation":{"type":"object","nullable":true,"required":["kind","target_sha","base_ref","base_sha","candidate_ref","candidate_sha","prefix_fingerprint","build_duration_ms","ahead_count","cleanup_status"],"properties":{"kind":{"type":"string","enum":["exact_target","predicted_trunk"]},"target_sha":{"type":"string"},"base_ref":{"type":"string","nullable":true},"base_sha":{"type":"string"},"candidate_ref":{"type":"string"},"candidate_sha":{"type":"string"},"prefix_fingerprint":{"type":"string"},"build_duration_ms":{"type":"integer","minimum":0,"nullable":true},"ahead_count":{"type":"integer","minimum":0},"cleanup_status":{"type":"string","enum":["pending","cleaned","failed","not_required"]}}},"eta":{"type":"object","required":["status","target","label","detail","in_progress","reason","remaining_ms","remaining_label"],"properties":{"status":{"type":"string","enum":["available","unavailable"]},"target":{"type":"string","enum":["readiness","landing"],"description":"What the estimate is about. Readiness is validation finishing; landing is the merge itself, which is observed rather than predicted."},"label":{"type":"string","description":"The headline for this estimate, e.g. \"Ready now\", \"~28s to ready\", \"Landing now\"."},"detail":{"type":"string","description":"The sentence behind the headline, including the caveat that a readiness estimate is not a landing estimate."},"in_progress":{"type":"boolean","description":"The queue is acting on this entry right now, so the client shows activity rather than a countdown."},"reason":{"type":"string"},"remaining_ms":{"type":"integer","minimum":0,"nullable":true},"remaining_label":{"type":"string","nullable":true}}},"checks_status":{"type":"string","enum":["pending","passing","failing","stale","missing"]},"recovery":{"nullable":true,"type":"object","description":"Present on a stopped entry. Rails owns the wording; the client renders this rather than the raw ejection_reason, and uses checks_target to open the candidate's checks.","required":["kind","summary","next_step","action_required_by","action_kind"],"properties":{"kind":{"type":"string","enum":["checks_failed","landing_conflict","github_state_changed","github_access_problem","queue_policy_changed","merge_outcome_unknown","unknown"]},"summary":{"type":"string"},"next_step":{"type":"string"},"action_required_by":{"type":"string","enum":["author","repo_admin","vex"]},"action_kind":{"type":"string","enum":["open_checks","open_change","open_integration","open_queue"]}}},"ejection_reason":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true},"version":{"type":"integer","minimum":1},"merge_when_ready":{"type":"boolean"},"priority":{"type":"string","enum":["normal","high"]},"recovery_count":{"type":"integer","minimum":0},"processing_checkpoint":{"type":"string","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"started_at_label":{"type":"string","nullable":true},"completed_at":{"type":"string","format":"date-time","nullable":true},"completed_at_label":{"type":"string","nullable":true},"queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"queue_time_label":{"type":"string","nullable":true},"ci_time_ms":{"type":"integer","minimum":0},"ci_time_label":{"type":"string"},"outcome":{"type":"string","nullable":true,"enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"outcome_label":{"type":"string","nullable":true,"description":"The same wording the analytics breakdown gives this outcome, so one entry and the legend cannot disagree."},"capabilities":{"type":"object","required":["can_cancel","can_promote","can_retry","can_merge"],"properties":{"can_cancel":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_validate_full":{"type":"boolean"},"can_emergency_land":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"members":{"type":"array","items":{"type":"object","required":["id","position","state"],"properties":{"id":{"type":"string"},"position":{"type":"integer","minimum":1},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"change_key":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"github_pr_number":{"type":"integer","nullable":true},"state":{"type":"string"},"head_sha":{"type":"string","nullable":true},"checks_status":{"type":"string","nullable":true},"github_merge_commit_sha":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true}}}},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}}},"entry_count_label":{"type":"string"},"terminal_history":{"type":"object","required":["page","limit","count","count_label","last","previous","next"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1},"count":{"type":"integer","minimum":0},"count_label":{"type":"string"},"last":{"type":"integer","minimum":1},"previous":{"type":"integer","minimum":1,"nullable":true},"next":{"type":"integer","minimum":1,"nullable":true}}},"recent_events":{"type":"array","description":"Newest-first durable queue audit events, limited to 50 records.","maxItems":50,"items":{"type":"object","required":["id","action","entry_id","entry_state","entry_version","created_at"],"properties":{"id":{"type":"string"},"action":{"type":"string"},"entry_id":{"type":"string","nullable":true},"entry_state":{"type":"string","nullable":true},"entry_version":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true}}}},"last_ticked_at":{"type":"string","format":"date-time","nullable":true},"last_error":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"policy":{"type":"object","required":["repository_id","merge_github_repository_connection_id","github_connections","merge_authority","merge_authority_version","merge_policy_version","queue_validation_mode","queue_concurrency","repository_queue_concurrency","github_merge_gate","auto_land_enabled","github_primary_eligible","switch_blockers"],"properties":{"repository_id":{"type":"string"},"merge_github_repository_connection_id":{"type":"string","nullable":true},"github_connections":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"queue_validation_mode":{"type":"string","enum":["top_only","per_pr"]},"queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"repository_queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"queue_concurrency_label":{"type":"string"},"github_merge_gate":{"type":"string","enum":["branch_protection","vex_checks"]},"auto_land_enabled":{"type":"boolean"},"github_primary_eligible":{"type":"boolean"},"switch_blockers":{"type":"array","items":{"type":"string"}}}},"analytics":{"type":"object","description":"Queue performance for the reporting window. Present on queue reads only — mutation responses omit it rather than pay for a full window scan.","required":["window_days","starts_at","ends_at","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","queue_time_change_percent","average_ci_time_ms","average_ci_time_label","ci_time_change_percent","average_outside_ci_time_ms","average_outside_ci_time_label","peak_queue_time_ms","peak_queue_time_label","outcomes","daily"],"properties":{"health":{"type":"object","required":["source","starts_at","ends_at","observed_count","success_rate","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable","failures","daily"],"properties":{"source":{"type":"string","enum":["tinybird","outbox"]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"observed_count":{"type":"integer"},"success_rate":{"type":"number","nullable":true},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0},"failures":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer"}}}},"daily":{"type":"array","items":{"type":"object","required":["date","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable"],"properties":{"date":{"type":"string","format":"date"},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0}}}}}},"window_days":{"type":"integer","enum":[7,14,30]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"queue_time_change_percent":{"type":"integer","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"ci_time_change_percent":{"type":"integer","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true,"description":"Queue time not accounted for by CI — waiting behind earlier entries, plus the landing itself."},"average_outside_ci_time_label":{"type":"string","nullable":true},"peak_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"peak_queue_time_label":{"type":"string","nullable":true},"outcomes":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string","enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"label":{"type":"string"},"count":{"type":"integer","minimum":0}}}},"daily":{"type":"array","items":{"type":"object","required":["date","label","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","average_ci_time_ms","average_ci_time_label","average_outside_ci_time_ms","average_outside_ci_time_label"],"properties":{"date":{"type":"string","format":"date"},"label":{"type":"string"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_outside_ci_time_label":{"type":"string","nullable":true}}}}}},"target_branches":{"type":"array","items":{"type":"string"},"description":"Bookmark names for the target picker. Present only on the queue-page read (`GET /vcs/merge_queues`); mutation snapshots omit it. Empty while jj-backend is degraded."}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"The actor is not allowed to perform this queue mutation"},"404":{"description":"Not found"},"422":{"description":"The requested state transition is invalid"},"502":{"description":"Bad gateway"},"409":{"description":"The queue entry version changed"},"503":{"description":"Merge queue rollout flag is disabled"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["expected_version"],"properties":{"expected_version":{"type":"integer","minimum":1}}}}}},"security":[{"bearerAuth":[]}],"summary":"Promote an active entry to the front of the queue"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/merge_queues/{target}/entries/{id}/retry":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_merge_queues_target_entries_id_retry","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"target","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated queue snapshot","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["queue","policy"],"properties":{"queue":{"type":"object","required":["id","target_branch","state","state_label","state_version","merge_authority","merge_authority_version","merge_policy_version","validation_mode","concurrency","skip_ci_enabled","entries","active_entry_count","entry_count_label","terminal_history","recent_events","capabilities"],"properties":{"id":{"type":"string","nullable":true},"target_branch":{"type":"string"},"state":{"type":"string","enum":["active","paused"]},"state_label":{"type":"string"},"state_version":{"type":"integer","minimum":1},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"validation_mode":{"type":"string","enum":["top_only","per_pr"]},"concurrency":{"type":"integer","minimum":1,"maximum":20},"skip_ci_enabled":{"type":"boolean"},"active_entry_count":{"type":"integer","minimum":0},"capabilities":{"type":"object","required":["can_enqueue","can_pause","can_resume","can_promote","can_retry","can_merge"],"properties":{"can_enqueue":{"type":"boolean"},"can_pause":{"type":"boolean"},"can_resume":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"entries":{"type":"array","items":{"type":"object","required":["id","kind","state","state_label","phase","position","queue_position","title","author","enqueued_by","stack","checks_target","speculation","eta","checks_status","recovery","version","merge_when_ready","recovery_count","processing_checkpoint","started_at","completed_at","queue_time_ms","queue_time_label","ci_time_ms","ci_time_label","outcome","outcome_label","capabilities","members"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["change","github_pr"]},"state":{"type":"string","enum":["queued","validating","ready","merging","merged","ejected","cancelled","needs_attention"]},"state_label":{"type":"string","description":"What this state is called in the product. Landing is the product word, so the client renders this rather than title-casing the machine state."},"phase":{"type":"string","enum":["active","terminal"],"description":"Server-owned grouping of the entry state machine. Active entries belong in the live queue view; terminal entries belong in outcome history."},"position":{"type":"integer","minimum":1},"queue_position":{"type":"integer","minimum":1,"nullable":true},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"author":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"enqueued_by":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"stack":{"type":"object","nullable":true,"required":["code","name","reference","member_count"],"properties":{"code":{"type":"string"},"name":{"type":"string","nullable":true},"reference":{"type":"string"},"member_count":{"type":"integer","minimum":0}}},"github_pr_number":{"type":"integer","nullable":true},"selected_count":{"type":"integer","nullable":true},"selected_count_label":{"type":"string","nullable":true},"change_generation":{"type":"integer","nullable":true},"candidate_ref":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"checks_target":{"type":"object","nullable":true,"required":["kind","value"],"properties":{"kind":{"type":"string","enum":["commit"]},"value":{"type":"string"}}},"batch":{"type":"object","nullable":true,"description":"Latest durable execution batch for this entry. Current identifies shared candidate validation; older released attempts remain diagnostic history.","required":["id","current","state","status_label","reason","candidate_sha","scopes"],"properties":{"id":{"type":"string"},"current":{"type":"boolean"},"state":{"type":"string"},"status_label":{"type":"string"},"reason":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"scopes":{"type":"array","maxItems":4,"items":{"type":"object","required":["entry_id","changes"],"properties":{"entry_id":{"type":"string"},"changes":{"type":"array","maxItems":12,"items":{"type":"object","required":["id","number","reference","title"],"properties":{"id":{"type":"string"},"number":{"type":"integer"},"reference":{"type":"string"},"title":{"type":"string"}}}}}}}}},"full_ci_requested":{"type":"boolean"},"ci_skipped":{"type":"boolean"},"ci_impact":{"type":"object","nullable":true,"description":"Persisted candidate CI selection, not a claim that checks passed. Null when no impact receipt exists.","required":["status","summary","mode","reason","base_sha","candidate_sha","digest","changed_path_count","workflows","affected_components","suite_ids"],"properties":{"status":{"type":"string","enum":["current","stale"]},"summary":{"type":"string"},"mode":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"base_sha":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"digest":{"type":"string","nullable":true},"changed_path_count":{"type":"integer","minimum":0,"nullable":true},"affected_components":{"type":"array","items":{"type":"string"}},"suite_ids":{"type":"array","items":{"type":"string"}},"workflows":{"type":"array","items":{"type":"object","required":["path","selected","scheduled"],"properties":{"path":{"type":"string"},"selected":{"type":"boolean"},"scheduled":{"type":"boolean"}}}}}},"speculation":{"type":"object","nullable":true,"required":["kind","target_sha","base_ref","base_sha","candidate_ref","candidate_sha","prefix_fingerprint","build_duration_ms","ahead_count","cleanup_status"],"properties":{"kind":{"type":"string","enum":["exact_target","predicted_trunk"]},"target_sha":{"type":"string"},"base_ref":{"type":"string","nullable":true},"base_sha":{"type":"string"},"candidate_ref":{"type":"string"},"candidate_sha":{"type":"string"},"prefix_fingerprint":{"type":"string"},"build_duration_ms":{"type":"integer","minimum":0,"nullable":true},"ahead_count":{"type":"integer","minimum":0},"cleanup_status":{"type":"string","enum":["pending","cleaned","failed","not_required"]}}},"eta":{"type":"object","required":["status","target","label","detail","in_progress","reason","remaining_ms","remaining_label"],"properties":{"status":{"type":"string","enum":["available","unavailable"]},"target":{"type":"string","enum":["readiness","landing"],"description":"What the estimate is about. Readiness is validation finishing; landing is the merge itself, which is observed rather than predicted."},"label":{"type":"string","description":"The headline for this estimate, e.g. \"Ready now\", \"~28s to ready\", \"Landing now\"."},"detail":{"type":"string","description":"The sentence behind the headline, including the caveat that a readiness estimate is not a landing estimate."},"in_progress":{"type":"boolean","description":"The queue is acting on this entry right now, so the client shows activity rather than a countdown."},"reason":{"type":"string"},"remaining_ms":{"type":"integer","minimum":0,"nullable":true},"remaining_label":{"type":"string","nullable":true}}},"checks_status":{"type":"string","enum":["pending","passing","failing","stale","missing"]},"recovery":{"nullable":true,"type":"object","description":"Present on a stopped entry. Rails owns the wording; the client renders this rather than the raw ejection_reason, and uses checks_target to open the candidate's checks.","required":["kind","summary","next_step","action_required_by","action_kind"],"properties":{"kind":{"type":"string","enum":["checks_failed","landing_conflict","github_state_changed","github_access_problem","queue_policy_changed","merge_outcome_unknown","unknown"]},"summary":{"type":"string"},"next_step":{"type":"string"},"action_required_by":{"type":"string","enum":["author","repo_admin","vex"]},"action_kind":{"type":"string","enum":["open_checks","open_change","open_integration","open_queue"]}}},"ejection_reason":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true},"version":{"type":"integer","minimum":1},"merge_when_ready":{"type":"boolean"},"priority":{"type":"string","enum":["normal","high"]},"recovery_count":{"type":"integer","minimum":0},"processing_checkpoint":{"type":"string","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"started_at_label":{"type":"string","nullable":true},"completed_at":{"type":"string","format":"date-time","nullable":true},"completed_at_label":{"type":"string","nullable":true},"queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"queue_time_label":{"type":"string","nullable":true},"ci_time_ms":{"type":"integer","minimum":0},"ci_time_label":{"type":"string"},"outcome":{"type":"string","nullable":true,"enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"outcome_label":{"type":"string","nullable":true,"description":"The same wording the analytics breakdown gives this outcome, so one entry and the legend cannot disagree."},"capabilities":{"type":"object","required":["can_cancel","can_promote","can_retry","can_merge"],"properties":{"can_cancel":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_validate_full":{"type":"boolean"},"can_emergency_land":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"members":{"type":"array","items":{"type":"object","required":["id","position","state"],"properties":{"id":{"type":"string"},"position":{"type":"integer","minimum":1},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"change_key":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"github_pr_number":{"type":"integer","nullable":true},"state":{"type":"string"},"head_sha":{"type":"string","nullable":true},"checks_status":{"type":"string","nullable":true},"github_merge_commit_sha":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true}}}},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}}},"entry_count_label":{"type":"string"},"terminal_history":{"type":"object","required":["page","limit","count","count_label","last","previous","next"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1},"count":{"type":"integer","minimum":0},"count_label":{"type":"string"},"last":{"type":"integer","minimum":1},"previous":{"type":"integer","minimum":1,"nullable":true},"next":{"type":"integer","minimum":1,"nullable":true}}},"recent_events":{"type":"array","description":"Newest-first durable queue audit events, limited to 50 records.","maxItems":50,"items":{"type":"object","required":["id","action","entry_id","entry_state","entry_version","created_at"],"properties":{"id":{"type":"string"},"action":{"type":"string"},"entry_id":{"type":"string","nullable":true},"entry_state":{"type":"string","nullable":true},"entry_version":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true}}}},"last_ticked_at":{"type":"string","format":"date-time","nullable":true},"last_error":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"policy":{"type":"object","required":["repository_id","merge_github_repository_connection_id","github_connections","merge_authority","merge_authority_version","merge_policy_version","queue_validation_mode","queue_concurrency","repository_queue_concurrency","github_merge_gate","auto_land_enabled","github_primary_eligible","switch_blockers"],"properties":{"repository_id":{"type":"string"},"merge_github_repository_connection_id":{"type":"string","nullable":true},"github_connections":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"queue_validation_mode":{"type":"string","enum":["top_only","per_pr"]},"queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"repository_queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"queue_concurrency_label":{"type":"string"},"github_merge_gate":{"type":"string","enum":["branch_protection","vex_checks"]},"auto_land_enabled":{"type":"boolean"},"github_primary_eligible":{"type":"boolean"},"switch_blockers":{"type":"array","items":{"type":"string"}}}},"analytics":{"type":"object","description":"Queue performance for the reporting window. Present on queue reads only — mutation responses omit it rather than pay for a full window scan.","required":["window_days","starts_at","ends_at","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","queue_time_change_percent","average_ci_time_ms","average_ci_time_label","ci_time_change_percent","average_outside_ci_time_ms","average_outside_ci_time_label","peak_queue_time_ms","peak_queue_time_label","outcomes","daily"],"properties":{"health":{"type":"object","required":["source","starts_at","ends_at","observed_count","success_rate","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable","failures","daily"],"properties":{"source":{"type":"string","enum":["tinybird","outbox"]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"observed_count":{"type":"integer"},"success_rate":{"type":"number","nullable":true},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0},"failures":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer"}}}},"daily":{"type":"array","items":{"type":"object","required":["date","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable"],"properties":{"date":{"type":"string","format":"date"},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0}}}}}},"window_days":{"type":"integer","enum":[7,14,30]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"queue_time_change_percent":{"type":"integer","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"ci_time_change_percent":{"type":"integer","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true,"description":"Queue time not accounted for by CI — waiting behind earlier entries, plus the landing itself."},"average_outside_ci_time_label":{"type":"string","nullable":true},"peak_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"peak_queue_time_label":{"type":"string","nullable":true},"outcomes":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string","enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"label":{"type":"string"},"count":{"type":"integer","minimum":0}}}},"daily":{"type":"array","items":{"type":"object","required":["date","label","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","average_ci_time_ms","average_ci_time_label","average_outside_ci_time_ms","average_outside_ci_time_label"],"properties":{"date":{"type":"string","format":"date"},"label":{"type":"string"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_outside_ci_time_label":{"type":"string","nullable":true}}}}}},"target_branches":{"type":"array","items":{"type":"string"},"description":"Bookmark names for the target picker. Present only on the queue-page read (`GET /vcs/merge_queues`); mutation snapshots omit it. Empty while jj-backend is degraded."}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"The actor is not allowed to perform this queue mutation"},"404":{"description":"Not found"},"422":{"description":"The requested state transition is invalid"},"502":{"description":"Bad gateway"},"409":{"description":"The queue entry version changed"},"503":{"description":"Merge queue rollout flag is disabled"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["expected_version"],"properties":{"expected_version":{"type":"integer","minimum":1}}}}}},"security":[{"bearerAuth":[]}],"summary":"Retry an ejected or needs-attention entry"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/merge_queues/{target}/entries/{id}/skip_ci":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_merge_queues_target_entries_id_skip_ci","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"target","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated queue snapshot","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["queue","policy"],"properties":{"queue":{"type":"object","required":["id","target_branch","state","state_label","state_version","merge_authority","merge_authority_version","merge_policy_version","validation_mode","concurrency","skip_ci_enabled","entries","active_entry_count","entry_count_label","terminal_history","recent_events","capabilities"],"properties":{"id":{"type":"string","nullable":true},"target_branch":{"type":"string"},"state":{"type":"string","enum":["active","paused"]},"state_label":{"type":"string"},"state_version":{"type":"integer","minimum":1},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"validation_mode":{"type":"string","enum":["top_only","per_pr"]},"concurrency":{"type":"integer","minimum":1,"maximum":20},"skip_ci_enabled":{"type":"boolean"},"active_entry_count":{"type":"integer","minimum":0},"capabilities":{"type":"object","required":["can_enqueue","can_pause","can_resume","can_promote","can_retry","can_merge"],"properties":{"can_enqueue":{"type":"boolean"},"can_pause":{"type":"boolean"},"can_resume":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"entries":{"type":"array","items":{"type":"object","required":["id","kind","state","state_label","phase","position","queue_position","title","author","enqueued_by","stack","checks_target","speculation","eta","checks_status","recovery","version","merge_when_ready","recovery_count","processing_checkpoint","started_at","completed_at","queue_time_ms","queue_time_label","ci_time_ms","ci_time_label","outcome","outcome_label","capabilities","members"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["change","github_pr"]},"state":{"type":"string","enum":["queued","validating","ready","merging","merged","ejected","cancelled","needs_attention"]},"state_label":{"type":"string","description":"What this state is called in the product. Landing is the product word, so the client renders this rather than title-casing the machine state."},"phase":{"type":"string","enum":["active","terminal"],"description":"Server-owned grouping of the entry state machine. Active entries belong in the live queue view; terminal entries belong in outcome history."},"position":{"type":"integer","minimum":1},"queue_position":{"type":"integer","minimum":1,"nullable":true},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"author":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"enqueued_by":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"stack":{"type":"object","nullable":true,"required":["code","name","reference","member_count"],"properties":{"code":{"type":"string"},"name":{"type":"string","nullable":true},"reference":{"type":"string"},"member_count":{"type":"integer","minimum":0}}},"github_pr_number":{"type":"integer","nullable":true},"selected_count":{"type":"integer","nullable":true},"selected_count_label":{"type":"string","nullable":true},"change_generation":{"type":"integer","nullable":true},"candidate_ref":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"checks_target":{"type":"object","nullable":true,"required":["kind","value"],"properties":{"kind":{"type":"string","enum":["commit"]},"value":{"type":"string"}}},"batch":{"type":"object","nullable":true,"description":"Latest durable execution batch for this entry. Current identifies shared candidate validation; older released attempts remain diagnostic history.","required":["id","current","state","status_label","reason","candidate_sha","scopes"],"properties":{"id":{"type":"string"},"current":{"type":"boolean"},"state":{"type":"string"},"status_label":{"type":"string"},"reason":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"scopes":{"type":"array","maxItems":4,"items":{"type":"object","required":["entry_id","changes"],"properties":{"entry_id":{"type":"string"},"changes":{"type":"array","maxItems":12,"items":{"type":"object","required":["id","number","reference","title"],"properties":{"id":{"type":"string"},"number":{"type":"integer"},"reference":{"type":"string"},"title":{"type":"string"}}}}}}}}},"full_ci_requested":{"type":"boolean"},"ci_skipped":{"type":"boolean"},"ci_impact":{"type":"object","nullable":true,"description":"Persisted candidate CI selection, not a claim that checks passed. Null when no impact receipt exists.","required":["status","summary","mode","reason","base_sha","candidate_sha","digest","changed_path_count","workflows","affected_components","suite_ids"],"properties":{"status":{"type":"string","enum":["current","stale"]},"summary":{"type":"string"},"mode":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"base_sha":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"digest":{"type":"string","nullable":true},"changed_path_count":{"type":"integer","minimum":0,"nullable":true},"affected_components":{"type":"array","items":{"type":"string"}},"suite_ids":{"type":"array","items":{"type":"string"}},"workflows":{"type":"array","items":{"type":"object","required":["path","selected","scheduled"],"properties":{"path":{"type":"string"},"selected":{"type":"boolean"},"scheduled":{"type":"boolean"}}}}}},"speculation":{"type":"object","nullable":true,"required":["kind","target_sha","base_ref","base_sha","candidate_ref","candidate_sha","prefix_fingerprint","build_duration_ms","ahead_count","cleanup_status"],"properties":{"kind":{"type":"string","enum":["exact_target","predicted_trunk"]},"target_sha":{"type":"string"},"base_ref":{"type":"string","nullable":true},"base_sha":{"type":"string"},"candidate_ref":{"type":"string"},"candidate_sha":{"type":"string"},"prefix_fingerprint":{"type":"string"},"build_duration_ms":{"type":"integer","minimum":0,"nullable":true},"ahead_count":{"type":"integer","minimum":0},"cleanup_status":{"type":"string","enum":["pending","cleaned","failed","not_required"]}}},"eta":{"type":"object","required":["status","target","label","detail","in_progress","reason","remaining_ms","remaining_label"],"properties":{"status":{"type":"string","enum":["available","unavailable"]},"target":{"type":"string","enum":["readiness","landing"],"description":"What the estimate is about. Readiness is validation finishing; landing is the merge itself, which is observed rather than predicted."},"label":{"type":"string","description":"The headline for this estimate, e.g. \"Ready now\", \"~28s to ready\", \"Landing now\"."},"detail":{"type":"string","description":"The sentence behind the headline, including the caveat that a readiness estimate is not a landing estimate."},"in_progress":{"type":"boolean","description":"The queue is acting on this entry right now, so the client shows activity rather than a countdown."},"reason":{"type":"string"},"remaining_ms":{"type":"integer","minimum":0,"nullable":true},"remaining_label":{"type":"string","nullable":true}}},"checks_status":{"type":"string","enum":["pending","passing","failing","stale","missing"]},"recovery":{"nullable":true,"type":"object","description":"Present on a stopped entry. Rails owns the wording; the client renders this rather than the raw ejection_reason, and uses checks_target to open the candidate's checks.","required":["kind","summary","next_step","action_required_by","action_kind"],"properties":{"kind":{"type":"string","enum":["checks_failed","landing_conflict","github_state_changed","github_access_problem","queue_policy_changed","merge_outcome_unknown","unknown"]},"summary":{"type":"string"},"next_step":{"type":"string"},"action_required_by":{"type":"string","enum":["author","repo_admin","vex"]},"action_kind":{"type":"string","enum":["open_checks","open_change","open_integration","open_queue"]}}},"ejection_reason":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true},"version":{"type":"integer","minimum":1},"merge_when_ready":{"type":"boolean"},"priority":{"type":"string","enum":["normal","high"]},"recovery_count":{"type":"integer","minimum":0},"processing_checkpoint":{"type":"string","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"started_at_label":{"type":"string","nullable":true},"completed_at":{"type":"string","format":"date-time","nullable":true},"completed_at_label":{"type":"string","nullable":true},"queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"queue_time_label":{"type":"string","nullable":true},"ci_time_ms":{"type":"integer","minimum":0},"ci_time_label":{"type":"string"},"outcome":{"type":"string","nullable":true,"enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"outcome_label":{"type":"string","nullable":true,"description":"The same wording the analytics breakdown gives this outcome, so one entry and the legend cannot disagree."},"capabilities":{"type":"object","required":["can_cancel","can_promote","can_retry","can_merge"],"properties":{"can_cancel":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_validate_full":{"type":"boolean"},"can_emergency_land":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"members":{"type":"array","items":{"type":"object","required":["id","position","state"],"properties":{"id":{"type":"string"},"position":{"type":"integer","minimum":1},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"change_key":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"github_pr_number":{"type":"integer","nullable":true},"state":{"type":"string"},"head_sha":{"type":"string","nullable":true},"checks_status":{"type":"string","nullable":true},"github_merge_commit_sha":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true}}}},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}}},"entry_count_label":{"type":"string"},"terminal_history":{"type":"object","required":["page","limit","count","count_label","last","previous","next"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1},"count":{"type":"integer","minimum":0},"count_label":{"type":"string"},"last":{"type":"integer","minimum":1},"previous":{"type":"integer","minimum":1,"nullable":true},"next":{"type":"integer","minimum":1,"nullable":true}}},"recent_events":{"type":"array","description":"Newest-first durable queue audit events, limited to 50 records.","maxItems":50,"items":{"type":"object","required":["id","action","entry_id","entry_state","entry_version","created_at"],"properties":{"id":{"type":"string"},"action":{"type":"string"},"entry_id":{"type":"string","nullable":true},"entry_state":{"type":"string","nullable":true},"entry_version":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true}}}},"last_ticked_at":{"type":"string","format":"date-time","nullable":true},"last_error":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"policy":{"type":"object","required":["repository_id","merge_github_repository_connection_id","github_connections","merge_authority","merge_authority_version","merge_policy_version","queue_validation_mode","queue_concurrency","repository_queue_concurrency","github_merge_gate","auto_land_enabled","github_primary_eligible","switch_blockers"],"properties":{"repository_id":{"type":"string"},"merge_github_repository_connection_id":{"type":"string","nullable":true},"github_connections":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"queue_validation_mode":{"type":"string","enum":["top_only","per_pr"]},"queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"repository_queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"queue_concurrency_label":{"type":"string"},"github_merge_gate":{"type":"string","enum":["branch_protection","vex_checks"]},"auto_land_enabled":{"type":"boolean"},"github_primary_eligible":{"type":"boolean"},"switch_blockers":{"type":"array","items":{"type":"string"}}}},"analytics":{"type":"object","description":"Queue performance for the reporting window. Present on queue reads only — mutation responses omit it rather than pay for a full window scan.","required":["window_days","starts_at","ends_at","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","queue_time_change_percent","average_ci_time_ms","average_ci_time_label","ci_time_change_percent","average_outside_ci_time_ms","average_outside_ci_time_label","peak_queue_time_ms","peak_queue_time_label","outcomes","daily"],"properties":{"health":{"type":"object","required":["source","starts_at","ends_at","observed_count","success_rate","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable","failures","daily"],"properties":{"source":{"type":"string","enum":["tinybird","outbox"]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"observed_count":{"type":"integer"},"success_rate":{"type":"number","nullable":true},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0},"failures":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer"}}}},"daily":{"type":"array","items":{"type":"object","required":["date","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable"],"properties":{"date":{"type":"string","format":"date"},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0}}}}}},"window_days":{"type":"integer","enum":[7,14,30]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"queue_time_change_percent":{"type":"integer","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"ci_time_change_percent":{"type":"integer","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true,"description":"Queue time not accounted for by CI — waiting behind earlier entries, plus the landing itself."},"average_outside_ci_time_label":{"type":"string","nullable":true},"peak_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"peak_queue_time_label":{"type":"string","nullable":true},"outcomes":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string","enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"label":{"type":"string"},"count":{"type":"integer","minimum":0}}}},"daily":{"type":"array","items":{"type":"object","required":["date","label","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","average_ci_time_ms","average_ci_time_label","average_outside_ci_time_ms","average_outside_ci_time_label"],"properties":{"date":{"type":"string","format":"date"},"label":{"type":"string"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_outside_ci_time_label":{"type":"string","nullable":true}}}}}},"target_branches":{"type":"array","items":{"type":"string"},"description":"Bookmark names for the target picker. Present only on the queue-page read (`GET /vcs/merge_queues`); mutation snapshots omit it. Empty while jj-backend is degraded."}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"The actor is not allowed to perform this queue mutation"},"404":{"description":"Not found"},"422":{"description":"The requested state transition is invalid"},"502":{"description":"Bad gateway"},"409":{"description":"The queue entry version changed"},"503":{"description":"Merge queue rollout flag is disabled"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["expected_version"],"properties":{"expected_version":{"type":"integer","minimum":1}}}}}},"security":[{"bearerAuth":[]}],"summary":"Waive CI for one queued native entry","description":"Administrators only. Requires the queue Skip CI setting and bookmark protection bypass permission. Keeps queue order and review requirements. The waiver is audited and invalidated if its scope or authorization changes."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/merge_queues/{target}/entries/{id}/validate_full":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_merge_queues_target_entries_id_validate_full","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"target","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated queue snapshot","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["queue","policy"],"properties":{"queue":{"type":"object","required":["id","target_branch","state","state_label","state_version","merge_authority","merge_authority_version","merge_policy_version","validation_mode","concurrency","skip_ci_enabled","entries","active_entry_count","entry_count_label","terminal_history","recent_events","capabilities"],"properties":{"id":{"type":"string","nullable":true},"target_branch":{"type":"string"},"state":{"type":"string","enum":["active","paused"]},"state_label":{"type":"string"},"state_version":{"type":"integer","minimum":1},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"validation_mode":{"type":"string","enum":["top_only","per_pr"]},"concurrency":{"type":"integer","minimum":1,"maximum":20},"skip_ci_enabled":{"type":"boolean"},"active_entry_count":{"type":"integer","minimum":0},"capabilities":{"type":"object","required":["can_enqueue","can_pause","can_resume","can_promote","can_retry","can_merge"],"properties":{"can_enqueue":{"type":"boolean"},"can_pause":{"type":"boolean"},"can_resume":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"entries":{"type":"array","items":{"type":"object","required":["id","kind","state","state_label","phase","position","queue_position","title","author","enqueued_by","stack","checks_target","speculation","eta","checks_status","recovery","version","merge_when_ready","recovery_count","processing_checkpoint","started_at","completed_at","queue_time_ms","queue_time_label","ci_time_ms","ci_time_label","outcome","outcome_label","capabilities","members"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["change","github_pr"]},"state":{"type":"string","enum":["queued","validating","ready","merging","merged","ejected","cancelled","needs_attention"]},"state_label":{"type":"string","description":"What this state is called in the product. Landing is the product word, so the client renders this rather than title-casing the machine state."},"phase":{"type":"string","enum":["active","terminal"],"description":"Server-owned grouping of the entry state machine. Active entries belong in the live queue view; terminal entries belong in outcome history."},"position":{"type":"integer","minimum":1},"queue_position":{"type":"integer","minimum":1,"nullable":true},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"author":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"enqueued_by":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"stack":{"type":"object","nullable":true,"required":["code","name","reference","member_count"],"properties":{"code":{"type":"string"},"name":{"type":"string","nullable":true},"reference":{"type":"string"},"member_count":{"type":"integer","minimum":0}}},"github_pr_number":{"type":"integer","nullable":true},"selected_count":{"type":"integer","nullable":true},"selected_count_label":{"type":"string","nullable":true},"change_generation":{"type":"integer","nullable":true},"candidate_ref":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"checks_target":{"type":"object","nullable":true,"required":["kind","value"],"properties":{"kind":{"type":"string","enum":["commit"]},"value":{"type":"string"}}},"batch":{"type":"object","nullable":true,"description":"Latest durable execution batch for this entry. Current identifies shared candidate validation; older released attempts remain diagnostic history.","required":["id","current","state","status_label","reason","candidate_sha","scopes"],"properties":{"id":{"type":"string"},"current":{"type":"boolean"},"state":{"type":"string"},"status_label":{"type":"string"},"reason":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"scopes":{"type":"array","maxItems":4,"items":{"type":"object","required":["entry_id","changes"],"properties":{"entry_id":{"type":"string"},"changes":{"type":"array","maxItems":12,"items":{"type":"object","required":["id","number","reference","title"],"properties":{"id":{"type":"string"},"number":{"type":"integer"},"reference":{"type":"string"},"title":{"type":"string"}}}}}}}}},"full_ci_requested":{"type":"boolean"},"ci_skipped":{"type":"boolean"},"ci_impact":{"type":"object","nullable":true,"description":"Persisted candidate CI selection, not a claim that checks passed. Null when no impact receipt exists.","required":["status","summary","mode","reason","base_sha","candidate_sha","digest","changed_path_count","workflows","affected_components","suite_ids"],"properties":{"status":{"type":"string","enum":["current","stale"]},"summary":{"type":"string"},"mode":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"base_sha":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"digest":{"type":"string","nullable":true},"changed_path_count":{"type":"integer","minimum":0,"nullable":true},"affected_components":{"type":"array","items":{"type":"string"}},"suite_ids":{"type":"array","items":{"type":"string"}},"workflows":{"type":"array","items":{"type":"object","required":["path","selected","scheduled"],"properties":{"path":{"type":"string"},"selected":{"type":"boolean"},"scheduled":{"type":"boolean"}}}}}},"speculation":{"type":"object","nullable":true,"required":["kind","target_sha","base_ref","base_sha","candidate_ref","candidate_sha","prefix_fingerprint","build_duration_ms","ahead_count","cleanup_status"],"properties":{"kind":{"type":"string","enum":["exact_target","predicted_trunk"]},"target_sha":{"type":"string"},"base_ref":{"type":"string","nullable":true},"base_sha":{"type":"string"},"candidate_ref":{"type":"string"},"candidate_sha":{"type":"string"},"prefix_fingerprint":{"type":"string"},"build_duration_ms":{"type":"integer","minimum":0,"nullable":true},"ahead_count":{"type":"integer","minimum":0},"cleanup_status":{"type":"string","enum":["pending","cleaned","failed","not_required"]}}},"eta":{"type":"object","required":["status","target","label","detail","in_progress","reason","remaining_ms","remaining_label"],"properties":{"status":{"type":"string","enum":["available","unavailable"]},"target":{"type":"string","enum":["readiness","landing"],"description":"What the estimate is about. Readiness is validation finishing; landing is the merge itself, which is observed rather than predicted."},"label":{"type":"string","description":"The headline for this estimate, e.g. \"Ready now\", \"~28s to ready\", \"Landing now\"."},"detail":{"type":"string","description":"The sentence behind the headline, including the caveat that a readiness estimate is not a landing estimate."},"in_progress":{"type":"boolean","description":"The queue is acting on this entry right now, so the client shows activity rather than a countdown."},"reason":{"type":"string"},"remaining_ms":{"type":"integer","minimum":0,"nullable":true},"remaining_label":{"type":"string","nullable":true}}},"checks_status":{"type":"string","enum":["pending","passing","failing","stale","missing"]},"recovery":{"nullable":true,"type":"object","description":"Present on a stopped entry. Rails owns the wording; the client renders this rather than the raw ejection_reason, and uses checks_target to open the candidate's checks.","required":["kind","summary","next_step","action_required_by","action_kind"],"properties":{"kind":{"type":"string","enum":["checks_failed","landing_conflict","github_state_changed","github_access_problem","queue_policy_changed","merge_outcome_unknown","unknown"]},"summary":{"type":"string"},"next_step":{"type":"string"},"action_required_by":{"type":"string","enum":["author","repo_admin","vex"]},"action_kind":{"type":"string","enum":["open_checks","open_change","open_integration","open_queue"]}}},"ejection_reason":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true},"version":{"type":"integer","minimum":1},"merge_when_ready":{"type":"boolean"},"priority":{"type":"string","enum":["normal","high"]},"recovery_count":{"type":"integer","minimum":0},"processing_checkpoint":{"type":"string","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"started_at_label":{"type":"string","nullable":true},"completed_at":{"type":"string","format":"date-time","nullable":true},"completed_at_label":{"type":"string","nullable":true},"queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"queue_time_label":{"type":"string","nullable":true},"ci_time_ms":{"type":"integer","minimum":0},"ci_time_label":{"type":"string"},"outcome":{"type":"string","nullable":true,"enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"outcome_label":{"type":"string","nullable":true,"description":"The same wording the analytics breakdown gives this outcome, so one entry and the legend cannot disagree."},"capabilities":{"type":"object","required":["can_cancel","can_promote","can_retry","can_merge"],"properties":{"can_cancel":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_validate_full":{"type":"boolean"},"can_emergency_land":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"members":{"type":"array","items":{"type":"object","required":["id","position","state"],"properties":{"id":{"type":"string"},"position":{"type":"integer","minimum":1},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"change_key":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"github_pr_number":{"type":"integer","nullable":true},"state":{"type":"string"},"head_sha":{"type":"string","nullable":true},"checks_status":{"type":"string","nullable":true},"github_merge_commit_sha":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true}}}},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}}},"entry_count_label":{"type":"string"},"terminal_history":{"type":"object","required":["page","limit","count","count_label","last","previous","next"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1},"count":{"type":"integer","minimum":0},"count_label":{"type":"string"},"last":{"type":"integer","minimum":1},"previous":{"type":"integer","minimum":1,"nullable":true},"next":{"type":"integer","minimum":1,"nullable":true}}},"recent_events":{"type":"array","description":"Newest-first durable queue audit events, limited to 50 records.","maxItems":50,"items":{"type":"object","required":["id","action","entry_id","entry_state","entry_version","created_at"],"properties":{"id":{"type":"string"},"action":{"type":"string"},"entry_id":{"type":"string","nullable":true},"entry_state":{"type":"string","nullable":true},"entry_version":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true}}}},"last_ticked_at":{"type":"string","format":"date-time","nullable":true},"last_error":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"policy":{"type":"object","required":["repository_id","merge_github_repository_connection_id","github_connections","merge_authority","merge_authority_version","merge_policy_version","queue_validation_mode","queue_concurrency","repository_queue_concurrency","github_merge_gate","auto_land_enabled","github_primary_eligible","switch_blockers"],"properties":{"repository_id":{"type":"string"},"merge_github_repository_connection_id":{"type":"string","nullable":true},"github_connections":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"queue_validation_mode":{"type":"string","enum":["top_only","per_pr"]},"queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"repository_queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"queue_concurrency_label":{"type":"string"},"github_merge_gate":{"type":"string","enum":["branch_protection","vex_checks"]},"auto_land_enabled":{"type":"boolean"},"github_primary_eligible":{"type":"boolean"},"switch_blockers":{"type":"array","items":{"type":"string"}}}},"analytics":{"type":"object","description":"Queue performance for the reporting window. Present on queue reads only — mutation responses omit it rather than pay for a full window scan.","required":["window_days","starts_at","ends_at","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","queue_time_change_percent","average_ci_time_ms","average_ci_time_label","ci_time_change_percent","average_outside_ci_time_ms","average_outside_ci_time_label","peak_queue_time_ms","peak_queue_time_label","outcomes","daily"],"properties":{"health":{"type":"object","required":["source","starts_at","ends_at","observed_count","success_rate","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable","failures","daily"],"properties":{"source":{"type":"string","enum":["tinybird","outbox"]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"observed_count":{"type":"integer"},"success_rate":{"type":"number","nullable":true},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0},"failures":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer"}}}},"daily":{"type":"array","items":{"type":"object","required":["date","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable"],"properties":{"date":{"type":"string","format":"date"},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0}}}}}},"window_days":{"type":"integer","enum":[7,14,30]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"queue_time_change_percent":{"type":"integer","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"ci_time_change_percent":{"type":"integer","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true,"description":"Queue time not accounted for by CI — waiting behind earlier entries, plus the landing itself."},"average_outside_ci_time_label":{"type":"string","nullable":true},"peak_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"peak_queue_time_label":{"type":"string","nullable":true},"outcomes":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string","enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"label":{"type":"string"},"count":{"type":"integer","minimum":0}}}},"daily":{"type":"array","items":{"type":"object","required":["date","label","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","average_ci_time_ms","average_ci_time_label","average_outside_ci_time_ms","average_outside_ci_time_label"],"properties":{"date":{"type":"string","format":"date"},"label":{"type":"string"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_outside_ci_time_label":{"type":"string","nullable":true}}}}}},"target_branches":{"type":"array","items":{"type":"string"},"description":"Bookmark names for the target picker. Present only on the queue-page read (`GET /vcs/merge_queues`); mutation snapshots omit it. Empty while jj-backend is degraded."}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"The actor is not allowed to perform this queue mutation"},"404":{"description":"Not found"},"422":{"description":"The requested state transition is invalid"},"502":{"description":"Bad gateway"},"409":{"description":"The queue entry version changed"},"503":{"description":"Merge queue rollout flag is disabled"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["expected_version"],"properties":{"expected_version":{"type":"integer","minimum":1}}}}}},"security":[{"bearerAuth":[]}],"summary":"Request fresh full CI for an active native top-only entry","description":"Administrators only. Preserves order and approvals, invalidates previous candidate validation and dependent followers, and binds full workflow execution to a fresh request identity. Rejects entries already publishing or terminal. Applies through subsequent candidate rebuilds of this entry."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/merge_queues/{target}/pause":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_merge_queues_target_pause","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"target","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated queue snapshot","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["queue","policy"],"properties":{"queue":{"type":"object","required":["id","target_branch","state","state_label","state_version","merge_authority","merge_authority_version","merge_policy_version","validation_mode","concurrency","skip_ci_enabled","entries","active_entry_count","entry_count_label","terminal_history","recent_events","capabilities"],"properties":{"id":{"type":"string","nullable":true},"target_branch":{"type":"string"},"state":{"type":"string","enum":["active","paused"]},"state_label":{"type":"string"},"state_version":{"type":"integer","minimum":1},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"validation_mode":{"type":"string","enum":["top_only","per_pr"]},"concurrency":{"type":"integer","minimum":1,"maximum":20},"skip_ci_enabled":{"type":"boolean"},"active_entry_count":{"type":"integer","minimum":0},"capabilities":{"type":"object","required":["can_enqueue","can_pause","can_resume","can_promote","can_retry","can_merge"],"properties":{"can_enqueue":{"type":"boolean"},"can_pause":{"type":"boolean"},"can_resume":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"entries":{"type":"array","items":{"type":"object","required":["id","kind","state","state_label","phase","position","queue_position","title","author","enqueued_by","stack","checks_target","speculation","eta","checks_status","recovery","version","merge_when_ready","recovery_count","processing_checkpoint","started_at","completed_at","queue_time_ms","queue_time_label","ci_time_ms","ci_time_label","outcome","outcome_label","capabilities","members"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["change","github_pr"]},"state":{"type":"string","enum":["queued","validating","ready","merging","merged","ejected","cancelled","needs_attention"]},"state_label":{"type":"string","description":"What this state is called in the product. Landing is the product word, so the client renders this rather than title-casing the machine state."},"phase":{"type":"string","enum":["active","terminal"],"description":"Server-owned grouping of the entry state machine. Active entries belong in the live queue view; terminal entries belong in outcome history."},"position":{"type":"integer","minimum":1},"queue_position":{"type":"integer","minimum":1,"nullable":true},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"author":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"enqueued_by":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"stack":{"type":"object","nullable":true,"required":["code","name","reference","member_count"],"properties":{"code":{"type":"string"},"name":{"type":"string","nullable":true},"reference":{"type":"string"},"member_count":{"type":"integer","minimum":0}}},"github_pr_number":{"type":"integer","nullable":true},"selected_count":{"type":"integer","nullable":true},"selected_count_label":{"type":"string","nullable":true},"change_generation":{"type":"integer","nullable":true},"candidate_ref":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"checks_target":{"type":"object","nullable":true,"required":["kind","value"],"properties":{"kind":{"type":"string","enum":["commit"]},"value":{"type":"string"}}},"batch":{"type":"object","nullable":true,"description":"Latest durable execution batch for this entry. Current identifies shared candidate validation; older released attempts remain diagnostic history.","required":["id","current","state","status_label","reason","candidate_sha","scopes"],"properties":{"id":{"type":"string"},"current":{"type":"boolean"},"state":{"type":"string"},"status_label":{"type":"string"},"reason":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"scopes":{"type":"array","maxItems":4,"items":{"type":"object","required":["entry_id","changes"],"properties":{"entry_id":{"type":"string"},"changes":{"type":"array","maxItems":12,"items":{"type":"object","required":["id","number","reference","title"],"properties":{"id":{"type":"string"},"number":{"type":"integer"},"reference":{"type":"string"},"title":{"type":"string"}}}}}}}}},"full_ci_requested":{"type":"boolean"},"ci_skipped":{"type":"boolean"},"ci_impact":{"type":"object","nullable":true,"description":"Persisted candidate CI selection, not a claim that checks passed. Null when no impact receipt exists.","required":["status","summary","mode","reason","base_sha","candidate_sha","digest","changed_path_count","workflows","affected_components","suite_ids"],"properties":{"status":{"type":"string","enum":["current","stale"]},"summary":{"type":"string"},"mode":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"base_sha":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"digest":{"type":"string","nullable":true},"changed_path_count":{"type":"integer","minimum":0,"nullable":true},"affected_components":{"type":"array","items":{"type":"string"}},"suite_ids":{"type":"array","items":{"type":"string"}},"workflows":{"type":"array","items":{"type":"object","required":["path","selected","scheduled"],"properties":{"path":{"type":"string"},"selected":{"type":"boolean"},"scheduled":{"type":"boolean"}}}}}},"speculation":{"type":"object","nullable":true,"required":["kind","target_sha","base_ref","base_sha","candidate_ref","candidate_sha","prefix_fingerprint","build_duration_ms","ahead_count","cleanup_status"],"properties":{"kind":{"type":"string","enum":["exact_target","predicted_trunk"]},"target_sha":{"type":"string"},"base_ref":{"type":"string","nullable":true},"base_sha":{"type":"string"},"candidate_ref":{"type":"string"},"candidate_sha":{"type":"string"},"prefix_fingerprint":{"type":"string"},"build_duration_ms":{"type":"integer","minimum":0,"nullable":true},"ahead_count":{"type":"integer","minimum":0},"cleanup_status":{"type":"string","enum":["pending","cleaned","failed","not_required"]}}},"eta":{"type":"object","required":["status","target","label","detail","in_progress","reason","remaining_ms","remaining_label"],"properties":{"status":{"type":"string","enum":["available","unavailable"]},"target":{"type":"string","enum":["readiness","landing"],"description":"What the estimate is about. Readiness is validation finishing; landing is the merge itself, which is observed rather than predicted."},"label":{"type":"string","description":"The headline for this estimate, e.g. \"Ready now\", \"~28s to ready\", \"Landing now\"."},"detail":{"type":"string","description":"The sentence behind the headline, including the caveat that a readiness estimate is not a landing estimate."},"in_progress":{"type":"boolean","description":"The queue is acting on this entry right now, so the client shows activity rather than a countdown."},"reason":{"type":"string"},"remaining_ms":{"type":"integer","minimum":0,"nullable":true},"remaining_label":{"type":"string","nullable":true}}},"checks_status":{"type":"string","enum":["pending","passing","failing","stale","missing"]},"recovery":{"nullable":true,"type":"object","description":"Present on a stopped entry. Rails owns the wording; the client renders this rather than the raw ejection_reason, and uses checks_target to open the candidate's checks.","required":["kind","summary","next_step","action_required_by","action_kind"],"properties":{"kind":{"type":"string","enum":["checks_failed","landing_conflict","github_state_changed","github_access_problem","queue_policy_changed","merge_outcome_unknown","unknown"]},"summary":{"type":"string"},"next_step":{"type":"string"},"action_required_by":{"type":"string","enum":["author","repo_admin","vex"]},"action_kind":{"type":"string","enum":["open_checks","open_change","open_integration","open_queue"]}}},"ejection_reason":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true},"version":{"type":"integer","minimum":1},"merge_when_ready":{"type":"boolean"},"priority":{"type":"string","enum":["normal","high"]},"recovery_count":{"type":"integer","minimum":0},"processing_checkpoint":{"type":"string","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"started_at_label":{"type":"string","nullable":true},"completed_at":{"type":"string","format":"date-time","nullable":true},"completed_at_label":{"type":"string","nullable":true},"queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"queue_time_label":{"type":"string","nullable":true},"ci_time_ms":{"type":"integer","minimum":0},"ci_time_label":{"type":"string"},"outcome":{"type":"string","nullable":true,"enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"outcome_label":{"type":"string","nullable":true,"description":"The same wording the analytics breakdown gives this outcome, so one entry and the legend cannot disagree."},"capabilities":{"type":"object","required":["can_cancel","can_promote","can_retry","can_merge"],"properties":{"can_cancel":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_validate_full":{"type":"boolean"},"can_emergency_land":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"members":{"type":"array","items":{"type":"object","required":["id","position","state"],"properties":{"id":{"type":"string"},"position":{"type":"integer","minimum":1},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"change_key":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"github_pr_number":{"type":"integer","nullable":true},"state":{"type":"string"},"head_sha":{"type":"string","nullable":true},"checks_status":{"type":"string","nullable":true},"github_merge_commit_sha":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true}}}},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}}},"entry_count_label":{"type":"string"},"terminal_history":{"type":"object","required":["page","limit","count","count_label","last","previous","next"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1},"count":{"type":"integer","minimum":0},"count_label":{"type":"string"},"last":{"type":"integer","minimum":1},"previous":{"type":"integer","minimum":1,"nullable":true},"next":{"type":"integer","minimum":1,"nullable":true}}},"recent_events":{"type":"array","description":"Newest-first durable queue audit events, limited to 50 records.","maxItems":50,"items":{"type":"object","required":["id","action","entry_id","entry_state","entry_version","created_at"],"properties":{"id":{"type":"string"},"action":{"type":"string"},"entry_id":{"type":"string","nullable":true},"entry_state":{"type":"string","nullable":true},"entry_version":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true}}}},"last_ticked_at":{"type":"string","format":"date-time","nullable":true},"last_error":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"policy":{"type":"object","required":["repository_id","merge_github_repository_connection_id","github_connections","merge_authority","merge_authority_version","merge_policy_version","queue_validation_mode","queue_concurrency","repository_queue_concurrency","github_merge_gate","auto_land_enabled","github_primary_eligible","switch_blockers"],"properties":{"repository_id":{"type":"string"},"merge_github_repository_connection_id":{"type":"string","nullable":true},"github_connections":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"queue_validation_mode":{"type":"string","enum":["top_only","per_pr"]},"queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"repository_queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"queue_concurrency_label":{"type":"string"},"github_merge_gate":{"type":"string","enum":["branch_protection","vex_checks"]},"auto_land_enabled":{"type":"boolean"},"github_primary_eligible":{"type":"boolean"},"switch_blockers":{"type":"array","items":{"type":"string"}}}},"analytics":{"type":"object","description":"Queue performance for the reporting window. Present on queue reads only — mutation responses omit it rather than pay for a full window scan.","required":["window_days","starts_at","ends_at","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","queue_time_change_percent","average_ci_time_ms","average_ci_time_label","ci_time_change_percent","average_outside_ci_time_ms","average_outside_ci_time_label","peak_queue_time_ms","peak_queue_time_label","outcomes","daily"],"properties":{"health":{"type":"object","required":["source","starts_at","ends_at","observed_count","success_rate","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable","failures","daily"],"properties":{"source":{"type":"string","enum":["tinybird","outbox"]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"observed_count":{"type":"integer"},"success_rate":{"type":"number","nullable":true},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0},"failures":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer"}}}},"daily":{"type":"array","items":{"type":"object","required":["date","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable"],"properties":{"date":{"type":"string","format":"date"},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0}}}}}},"window_days":{"type":"integer","enum":[7,14,30]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"queue_time_change_percent":{"type":"integer","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"ci_time_change_percent":{"type":"integer","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true,"description":"Queue time not accounted for by CI — waiting behind earlier entries, plus the landing itself."},"average_outside_ci_time_label":{"type":"string","nullable":true},"peak_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"peak_queue_time_label":{"type":"string","nullable":true},"outcomes":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string","enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"label":{"type":"string"},"count":{"type":"integer","minimum":0}}}},"daily":{"type":"array","items":{"type":"object","required":["date","label","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","average_ci_time_ms","average_ci_time_label","average_outside_ci_time_ms","average_outside_ci_time_label"],"properties":{"date":{"type":"string","format":"date"},"label":{"type":"string"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_outside_ci_time_label":{"type":"string","nullable":true}}}}}},"target_branches":{"type":"array","items":{"type":"string"},"description":"Bookmark names for the target picker. Present only on the queue-page read (`GET /vcs/merge_queues`); mutation snapshots omit it. Empty while jj-backend is degraded."}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"The actor is not allowed to perform this queue mutation"},"404":{"description":"Not found"},"422":{"description":"The requested state transition is invalid"},"502":{"description":"Bad gateway"},"409":{"description":"The queue entry version changed"},"503":{"description":"Merge queue rollout flag is disabled"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["expected_version"],"properties":{"expected_version":{"type":"integer","minimum":1}}}}}},"security":[{"bearerAuth":[]}],"summary":"Pause queue validation and merging without discarding entries"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/merge_queues/{target}/resume":{"post":{"operationId":"post_api_v1_organizations_org_slug_repos_repo_slug_vcs_merge_queues_target_resume","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"target","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated queue snapshot","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["queue","policy"],"properties":{"queue":{"type":"object","required":["id","target_branch","state","state_label","state_version","merge_authority","merge_authority_version","merge_policy_version","validation_mode","concurrency","skip_ci_enabled","entries","active_entry_count","entry_count_label","terminal_history","recent_events","capabilities"],"properties":{"id":{"type":"string","nullable":true},"target_branch":{"type":"string"},"state":{"type":"string","enum":["active","paused"]},"state_label":{"type":"string"},"state_version":{"type":"integer","minimum":1},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"validation_mode":{"type":"string","enum":["top_only","per_pr"]},"concurrency":{"type":"integer","minimum":1,"maximum":20},"skip_ci_enabled":{"type":"boolean"},"active_entry_count":{"type":"integer","minimum":0},"capabilities":{"type":"object","required":["can_enqueue","can_pause","can_resume","can_promote","can_retry","can_merge"],"properties":{"can_enqueue":{"type":"boolean"},"can_pause":{"type":"boolean"},"can_resume":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"entries":{"type":"array","items":{"type":"object","required":["id","kind","state","state_label","phase","position","queue_position","title","author","enqueued_by","stack","checks_target","speculation","eta","checks_status","recovery","version","merge_when_ready","recovery_count","processing_checkpoint","started_at","completed_at","queue_time_ms","queue_time_label","ci_time_ms","ci_time_label","outcome","outcome_label","capabilities","members"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["change","github_pr"]},"state":{"type":"string","enum":["queued","validating","ready","merging","merged","ejected","cancelled","needs_attention"]},"state_label":{"type":"string","description":"What this state is called in the product. Landing is the product word, so the client renders this rather than title-casing the machine state."},"phase":{"type":"string","enum":["active","terminal"],"description":"Server-owned grouping of the entry state machine. Active entries belong in the live queue view; terminal entries belong in outcome history."},"position":{"type":"integer","minimum":1},"queue_position":{"type":"integer","minimum":1,"nullable":true},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"author":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"enqueued_by":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"stack":{"type":"object","nullable":true,"required":["code","name","reference","member_count"],"properties":{"code":{"type":"string"},"name":{"type":"string","nullable":true},"reference":{"type":"string"},"member_count":{"type":"integer","minimum":0}}},"github_pr_number":{"type":"integer","nullable":true},"selected_count":{"type":"integer","nullable":true},"selected_count_label":{"type":"string","nullable":true},"change_generation":{"type":"integer","nullable":true},"candidate_ref":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"checks_target":{"type":"object","nullable":true,"required":["kind","value"],"properties":{"kind":{"type":"string","enum":["commit"]},"value":{"type":"string"}}},"batch":{"type":"object","nullable":true,"description":"Latest durable execution batch for this entry. Current identifies shared candidate validation; older released attempts remain diagnostic history.","required":["id","current","state","status_label","reason","candidate_sha","scopes"],"properties":{"id":{"type":"string"},"current":{"type":"boolean"},"state":{"type":"string"},"status_label":{"type":"string"},"reason":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"scopes":{"type":"array","maxItems":4,"items":{"type":"object","required":["entry_id","changes"],"properties":{"entry_id":{"type":"string"},"changes":{"type":"array","maxItems":12,"items":{"type":"object","required":["id","number","reference","title"],"properties":{"id":{"type":"string"},"number":{"type":"integer"},"reference":{"type":"string"},"title":{"type":"string"}}}}}}}}},"full_ci_requested":{"type":"boolean"},"ci_skipped":{"type":"boolean"},"ci_impact":{"type":"object","nullable":true,"description":"Persisted candidate CI selection, not a claim that checks passed. Null when no impact receipt exists.","required":["status","summary","mode","reason","base_sha","candidate_sha","digest","changed_path_count","workflows","affected_components","suite_ids"],"properties":{"status":{"type":"string","enum":["current","stale"]},"summary":{"type":"string"},"mode":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"base_sha":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"digest":{"type":"string","nullable":true},"changed_path_count":{"type":"integer","minimum":0,"nullable":true},"affected_components":{"type":"array","items":{"type":"string"}},"suite_ids":{"type":"array","items":{"type":"string"}},"workflows":{"type":"array","items":{"type":"object","required":["path","selected","scheduled"],"properties":{"path":{"type":"string"},"selected":{"type":"boolean"},"scheduled":{"type":"boolean"}}}}}},"speculation":{"type":"object","nullable":true,"required":["kind","target_sha","base_ref","base_sha","candidate_ref","candidate_sha","prefix_fingerprint","build_duration_ms","ahead_count","cleanup_status"],"properties":{"kind":{"type":"string","enum":["exact_target","predicted_trunk"]},"target_sha":{"type":"string"},"base_ref":{"type":"string","nullable":true},"base_sha":{"type":"string"},"candidate_ref":{"type":"string"},"candidate_sha":{"type":"string"},"prefix_fingerprint":{"type":"string"},"build_duration_ms":{"type":"integer","minimum":0,"nullable":true},"ahead_count":{"type":"integer","minimum":0},"cleanup_status":{"type":"string","enum":["pending","cleaned","failed","not_required"]}}},"eta":{"type":"object","required":["status","target","label","detail","in_progress","reason","remaining_ms","remaining_label"],"properties":{"status":{"type":"string","enum":["available","unavailable"]},"target":{"type":"string","enum":["readiness","landing"],"description":"What the estimate is about. Readiness is validation finishing; landing is the merge itself, which is observed rather than predicted."},"label":{"type":"string","description":"The headline for this estimate, e.g. \"Ready now\", \"~28s to ready\", \"Landing now\"."},"detail":{"type":"string","description":"The sentence behind the headline, including the caveat that a readiness estimate is not a landing estimate."},"in_progress":{"type":"boolean","description":"The queue is acting on this entry right now, so the client shows activity rather than a countdown."},"reason":{"type":"string"},"remaining_ms":{"type":"integer","minimum":0,"nullable":true},"remaining_label":{"type":"string","nullable":true}}},"checks_status":{"type":"string","enum":["pending","passing","failing","stale","missing"]},"recovery":{"nullable":true,"type":"object","description":"Present on a stopped entry. Rails owns the wording; the client renders this rather than the raw ejection_reason, and uses checks_target to open the candidate's checks.","required":["kind","summary","next_step","action_required_by","action_kind"],"properties":{"kind":{"type":"string","enum":["checks_failed","landing_conflict","github_state_changed","github_access_problem","queue_policy_changed","merge_outcome_unknown","unknown"]},"summary":{"type":"string"},"next_step":{"type":"string"},"action_required_by":{"type":"string","enum":["author","repo_admin","vex"]},"action_kind":{"type":"string","enum":["open_checks","open_change","open_integration","open_queue"]}}},"ejection_reason":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true},"version":{"type":"integer","minimum":1},"merge_when_ready":{"type":"boolean"},"priority":{"type":"string","enum":["normal","high"]},"recovery_count":{"type":"integer","minimum":0},"processing_checkpoint":{"type":"string","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"started_at_label":{"type":"string","nullable":true},"completed_at":{"type":"string","format":"date-time","nullable":true},"completed_at_label":{"type":"string","nullable":true},"queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"queue_time_label":{"type":"string","nullable":true},"ci_time_ms":{"type":"integer","minimum":0},"ci_time_label":{"type":"string"},"outcome":{"type":"string","nullable":true,"enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"outcome_label":{"type":"string","nullable":true,"description":"The same wording the analytics breakdown gives this outcome, so one entry and the legend cannot disagree."},"capabilities":{"type":"object","required":["can_cancel","can_promote","can_retry","can_merge"],"properties":{"can_cancel":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_validate_full":{"type":"boolean"},"can_emergency_land":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"members":{"type":"array","items":{"type":"object","required":["id","position","state"],"properties":{"id":{"type":"string"},"position":{"type":"integer","minimum":1},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"change_key":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"github_pr_number":{"type":"integer","nullable":true},"state":{"type":"string"},"head_sha":{"type":"string","nullable":true},"checks_status":{"type":"string","nullable":true},"github_merge_commit_sha":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true}}}},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}}},"entry_count_label":{"type":"string"},"terminal_history":{"type":"object","required":["page","limit","count","count_label","last","previous","next"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1},"count":{"type":"integer","minimum":0},"count_label":{"type":"string"},"last":{"type":"integer","minimum":1},"previous":{"type":"integer","minimum":1,"nullable":true},"next":{"type":"integer","minimum":1,"nullable":true}}},"recent_events":{"type":"array","description":"Newest-first durable queue audit events, limited to 50 records.","maxItems":50,"items":{"type":"object","required":["id","action","entry_id","entry_state","entry_version","created_at"],"properties":{"id":{"type":"string"},"action":{"type":"string"},"entry_id":{"type":"string","nullable":true},"entry_state":{"type":"string","nullable":true},"entry_version":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true}}}},"last_ticked_at":{"type":"string","format":"date-time","nullable":true},"last_error":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"policy":{"type":"object","required":["repository_id","merge_github_repository_connection_id","github_connections","merge_authority","merge_authority_version","merge_policy_version","queue_validation_mode","queue_concurrency","repository_queue_concurrency","github_merge_gate","auto_land_enabled","github_primary_eligible","switch_blockers"],"properties":{"repository_id":{"type":"string"},"merge_github_repository_connection_id":{"type":"string","nullable":true},"github_connections":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"queue_validation_mode":{"type":"string","enum":["top_only","per_pr"]},"queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"repository_queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"queue_concurrency_label":{"type":"string"},"github_merge_gate":{"type":"string","enum":["branch_protection","vex_checks"]},"auto_land_enabled":{"type":"boolean"},"github_primary_eligible":{"type":"boolean"},"switch_blockers":{"type":"array","items":{"type":"string"}}}},"analytics":{"type":"object","description":"Queue performance for the reporting window. Present on queue reads only — mutation responses omit it rather than pay for a full window scan.","required":["window_days","starts_at","ends_at","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","queue_time_change_percent","average_ci_time_ms","average_ci_time_label","ci_time_change_percent","average_outside_ci_time_ms","average_outside_ci_time_label","peak_queue_time_ms","peak_queue_time_label","outcomes","daily"],"properties":{"health":{"type":"object","required":["source","starts_at","ends_at","observed_count","success_rate","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable","failures","daily"],"properties":{"source":{"type":"string","enum":["tinybird","outbox"]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"observed_count":{"type":"integer"},"success_rate":{"type":"number","nullable":true},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0},"failures":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer"}}}},"daily":{"type":"array","items":{"type":"object","required":["date","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable"],"properties":{"date":{"type":"string","format":"date"},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0}}}}}},"window_days":{"type":"integer","enum":[7,14,30]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"queue_time_change_percent":{"type":"integer","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"ci_time_change_percent":{"type":"integer","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true,"description":"Queue time not accounted for by CI — waiting behind earlier entries, plus the landing itself."},"average_outside_ci_time_label":{"type":"string","nullable":true},"peak_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"peak_queue_time_label":{"type":"string","nullable":true},"outcomes":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string","enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"label":{"type":"string"},"count":{"type":"integer","minimum":0}}}},"daily":{"type":"array","items":{"type":"object","required":["date","label","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","average_ci_time_ms","average_ci_time_label","average_outside_ci_time_ms","average_outside_ci_time_label"],"properties":{"date":{"type":"string","format":"date"},"label":{"type":"string"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_outside_ci_time_label":{"type":"string","nullable":true}}}}}},"target_branches":{"type":"array","items":{"type":"string"},"description":"Bookmark names for the target picker. Present only on the queue-page read (`GET /vcs/merge_queues`); mutation snapshots omit it. Empty while jj-backend is degraded."}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"The actor is not allowed to perform this queue mutation"},"404":{"description":"Not found"},"422":{"description":"The requested state transition is invalid"},"502":{"description":"Bad gateway"},"409":{"description":"The queue entry version changed"},"503":{"description":"Merge queue rollout flag is disabled"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["expected_version"],"properties":{"expected_version":{"type":"integer","minimum":1}}}}}},"security":[{"bearerAuth":[]}],"summary":"Resume a paused merge queue"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/merge_queues/{target}/skip_ci":{"patch":{"operationId":"patch_api_v1_organizations_org_slug_repos_repo_slug_vcs_merge_queues_target_skip_ci","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"target","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated queue snapshot","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["queue","policy"],"properties":{"queue":{"type":"object","required":["id","target_branch","state","state_label","state_version","merge_authority","merge_authority_version","merge_policy_version","validation_mode","concurrency","skip_ci_enabled","entries","active_entry_count","entry_count_label","terminal_history","recent_events","capabilities"],"properties":{"id":{"type":"string","nullable":true},"target_branch":{"type":"string"},"state":{"type":"string","enum":["active","paused"]},"state_label":{"type":"string"},"state_version":{"type":"integer","minimum":1},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"validation_mode":{"type":"string","enum":["top_only","per_pr"]},"concurrency":{"type":"integer","minimum":1,"maximum":20},"skip_ci_enabled":{"type":"boolean"},"active_entry_count":{"type":"integer","minimum":0},"capabilities":{"type":"object","required":["can_enqueue","can_pause","can_resume","can_promote","can_retry","can_merge"],"properties":{"can_enqueue":{"type":"boolean"},"can_pause":{"type":"boolean"},"can_resume":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"entries":{"type":"array","items":{"type":"object","required":["id","kind","state","state_label","phase","position","queue_position","title","author","enqueued_by","stack","checks_target","speculation","eta","checks_status","recovery","version","merge_when_ready","recovery_count","processing_checkpoint","started_at","completed_at","queue_time_ms","queue_time_label","ci_time_ms","ci_time_label","outcome","outcome_label","capabilities","members"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["change","github_pr"]},"state":{"type":"string","enum":["queued","validating","ready","merging","merged","ejected","cancelled","needs_attention"]},"state_label":{"type":"string","description":"What this state is called in the product. Landing is the product word, so the client renders this rather than title-casing the machine state."},"phase":{"type":"string","enum":["active","terminal"],"description":"Server-owned grouping of the entry state machine. Active entries belong in the live queue view; terminal entries belong in outcome history."},"position":{"type":"integer","minimum":1},"queue_position":{"type":"integer","minimum":1,"nullable":true},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"author":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"enqueued_by":{"type":"object","nullable":true,"required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"stack":{"type":"object","nullable":true,"required":["code","name","reference","member_count"],"properties":{"code":{"type":"string"},"name":{"type":"string","nullable":true},"reference":{"type":"string"},"member_count":{"type":"integer","minimum":0}}},"github_pr_number":{"type":"integer","nullable":true},"selected_count":{"type":"integer","nullable":true},"selected_count_label":{"type":"string","nullable":true},"change_generation":{"type":"integer","nullable":true},"candidate_ref":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"checks_target":{"type":"object","nullable":true,"required":["kind","value"],"properties":{"kind":{"type":"string","enum":["commit"]},"value":{"type":"string"}}},"batch":{"type":"object","nullable":true,"description":"Latest durable execution batch for this entry. Current identifies shared candidate validation; older released attempts remain diagnostic history.","required":["id","current","state","status_label","reason","candidate_sha","scopes"],"properties":{"id":{"type":"string"},"current":{"type":"boolean"},"state":{"type":"string"},"status_label":{"type":"string"},"reason":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"scopes":{"type":"array","maxItems":4,"items":{"type":"object","required":["entry_id","changes"],"properties":{"entry_id":{"type":"string"},"changes":{"type":"array","maxItems":12,"items":{"type":"object","required":["id","number","reference","title"],"properties":{"id":{"type":"string"},"number":{"type":"integer"},"reference":{"type":"string"},"title":{"type":"string"}}}}}}}}},"full_ci_requested":{"type":"boolean"},"ci_skipped":{"type":"boolean"},"ci_impact":{"type":"object","nullable":true,"description":"Persisted candidate CI selection, not a claim that checks passed. Null when no impact receipt exists.","required":["status","summary","mode","reason","base_sha","candidate_sha","digest","changed_path_count","workflows","affected_components","suite_ids"],"properties":{"status":{"type":"string","enum":["current","stale"]},"summary":{"type":"string"},"mode":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"base_sha":{"type":"string","nullable":true},"candidate_sha":{"type":"string","nullable":true},"digest":{"type":"string","nullable":true},"changed_path_count":{"type":"integer","minimum":0,"nullable":true},"affected_components":{"type":"array","items":{"type":"string"}},"suite_ids":{"type":"array","items":{"type":"string"}},"workflows":{"type":"array","items":{"type":"object","required":["path","selected","scheduled"],"properties":{"path":{"type":"string"},"selected":{"type":"boolean"},"scheduled":{"type":"boolean"}}}}}},"speculation":{"type":"object","nullable":true,"required":["kind","target_sha","base_ref","base_sha","candidate_ref","candidate_sha","prefix_fingerprint","build_duration_ms","ahead_count","cleanup_status"],"properties":{"kind":{"type":"string","enum":["exact_target","predicted_trunk"]},"target_sha":{"type":"string"},"base_ref":{"type":"string","nullable":true},"base_sha":{"type":"string"},"candidate_ref":{"type":"string"},"candidate_sha":{"type":"string"},"prefix_fingerprint":{"type":"string"},"build_duration_ms":{"type":"integer","minimum":0,"nullable":true},"ahead_count":{"type":"integer","minimum":0},"cleanup_status":{"type":"string","enum":["pending","cleaned","failed","not_required"]}}},"eta":{"type":"object","required":["status","target","label","detail","in_progress","reason","remaining_ms","remaining_label"],"properties":{"status":{"type":"string","enum":["available","unavailable"]},"target":{"type":"string","enum":["readiness","landing"],"description":"What the estimate is about. Readiness is validation finishing; landing is the merge itself, which is observed rather than predicted."},"label":{"type":"string","description":"The headline for this estimate, e.g. \"Ready now\", \"~28s to ready\", \"Landing now\"."},"detail":{"type":"string","description":"The sentence behind the headline, including the caveat that a readiness estimate is not a landing estimate."},"in_progress":{"type":"boolean","description":"The queue is acting on this entry right now, so the client shows activity rather than a countdown."},"reason":{"type":"string"},"remaining_ms":{"type":"integer","minimum":0,"nullable":true},"remaining_label":{"type":"string","nullable":true}}},"checks_status":{"type":"string","enum":["pending","passing","failing","stale","missing"]},"recovery":{"nullable":true,"type":"object","description":"Present on a stopped entry. Rails owns the wording; the client renders this rather than the raw ejection_reason, and uses checks_target to open the candidate's checks.","required":["kind","summary","next_step","action_required_by","action_kind"],"properties":{"kind":{"type":"string","enum":["checks_failed","landing_conflict","github_state_changed","github_access_problem","queue_policy_changed","merge_outcome_unknown","unknown"]},"summary":{"type":"string"},"next_step":{"type":"string"},"action_required_by":{"type":"string","enum":["author","repo_admin","vex"]},"action_kind":{"type":"string","enum":["open_checks","open_change","open_integration","open_queue"]}}},"ejection_reason":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true},"version":{"type":"integer","minimum":1},"merge_when_ready":{"type":"boolean"},"priority":{"type":"string","enum":["normal","high"]},"recovery_count":{"type":"integer","minimum":0},"processing_checkpoint":{"type":"string","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"started_at_label":{"type":"string","nullable":true},"completed_at":{"type":"string","format":"date-time","nullable":true},"completed_at_label":{"type":"string","nullable":true},"queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"queue_time_label":{"type":"string","nullable":true},"ci_time_ms":{"type":"integer","minimum":0},"ci_time_label":{"type":"string"},"outcome":{"type":"string","nullable":true,"enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"outcome_label":{"type":"string","nullable":true,"description":"The same wording the analytics breakdown gives this outcome, so one entry and the legend cannot disagree."},"capabilities":{"type":"object","required":["can_cancel","can_promote","can_retry","can_merge"],"properties":{"can_cancel":{"type":"boolean"},"can_promote":{"type":"boolean"},"can_retry":{"type":"boolean"},"can_validate_full":{"type":"boolean"},"can_emergency_land":{"type":"boolean"},"can_merge":{"type":"boolean"}}},"members":{"type":"array","items":{"type":"object","required":["id","position","state"],"properties":{"id":{"type":"string"},"position":{"type":"integer","minimum":1},"change_id":{"type":"string","nullable":true},"change_number":{"type":"integer","nullable":true},"change_reference":{"type":"string","nullable":true},"change_key":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"github_pr_number":{"type":"integer","nullable":true},"state":{"type":"string"},"head_sha":{"type":"string","nullable":true},"checks_status":{"type":"string","nullable":true},"github_merge_commit_sha":{"type":"string","nullable":true},"error_message":{"type":"string","nullable":true}}}},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}}},"entry_count_label":{"type":"string"},"terminal_history":{"type":"object","required":["page","limit","count","count_label","last","previous","next"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1},"count":{"type":"integer","minimum":0},"count_label":{"type":"string"},"last":{"type":"integer","minimum":1},"previous":{"type":"integer","minimum":1,"nullable":true},"next":{"type":"integer","minimum":1,"nullable":true}}},"recent_events":{"type":"array","description":"Newest-first durable queue audit events, limited to 50 records.","maxItems":50,"items":{"type":"object","required":["id","action","entry_id","entry_state","entry_version","created_at"],"properties":{"id":{"type":"string"},"action":{"type":"string"},"entry_id":{"type":"string","nullable":true},"entry_state":{"type":"string","nullable":true},"entry_version":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true}}}},"last_ticked_at":{"type":"string","format":"date-time","nullable":true},"last_error":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"policy":{"type":"object","required":["repository_id","merge_github_repository_connection_id","github_connections","merge_authority","merge_authority_version","merge_policy_version","queue_validation_mode","queue_concurrency","repository_queue_concurrency","github_merge_gate","auto_land_enabled","github_primary_eligible","switch_blockers"],"properties":{"repository_id":{"type":"string"},"merge_github_repository_connection_id":{"type":"string","nullable":true},"github_connections":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"merge_authority":{"type":"string","enum":["vex_primary","github_primary"]},"merge_authority_version":{"type":"integer","minimum":1},"merge_policy_version":{"type":"integer","minimum":1},"queue_validation_mode":{"type":"string","enum":["top_only","per_pr"]},"queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"repository_queue_concurrency":{"type":"integer","minimum":1,"maximum":20},"queue_concurrency_label":{"type":"string"},"github_merge_gate":{"type":"string","enum":["branch_protection","vex_checks"]},"auto_land_enabled":{"type":"boolean"},"github_primary_eligible":{"type":"boolean"},"switch_blockers":{"type":"array","items":{"type":"string"}}}},"analytics":{"type":"object","description":"Queue performance for the reporting window. Present on queue reads only — mutation responses omit it rather than pay for a full window scan.","required":["window_days","starts_at","ends_at","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","queue_time_change_percent","average_ci_time_ms","average_ci_time_label","ci_time_change_percent","average_outside_ci_time_ms","average_outside_ci_time_label","peak_queue_time_ms","peak_queue_time_label","outcomes","daily"],"properties":{"health":{"type":"object","required":["source","starts_at","ends_at","observed_count","success_rate","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable","failures","daily"],"properties":{"source":{"type":"string","enum":["tinybird","outbox"]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"observed_count":{"type":"integer"},"success_rate":{"type":"number","nullable":true},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0},"failures":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer"}}}},"daily":{"type":"array","items":{"type":"object","required":["date","landed","ejected","cancelled","needs_attention","error","retried","rebuilt","recovered","magic_merged","conflict","recoverable"],"properties":{"date":{"type":"string","format":"date"},"landed":{"type":"integer","minimum":0},"ejected":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"needs_attention":{"type":"integer","minimum":0},"error":{"type":"integer","minimum":0},"retried":{"type":"integer","minimum":0},"rebuilt":{"type":"integer","minimum":0},"recovered":{"type":"integer","minimum":0},"magic_merged":{"type":"integer","minimum":0},"conflict":{"type":"integer","minimum":0},"recoverable":{"type":"integer","minimum":0}}}}}},"window_days":{"type":"integer","enum":[7,14,30]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"queue_time_change_percent":{"type":"integer","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"ci_time_change_percent":{"type":"integer","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true,"description":"Queue time not accounted for by CI — waiting behind earlier entries, plus the landing itself."},"average_outside_ci_time_label":{"type":"string","nullable":true},"peak_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"peak_queue_time_label":{"type":"string","nullable":true},"outcomes":{"type":"array","items":{"type":"object","required":["key","label","count"],"properties":{"key":{"type":"string","enum":["merged","ci_failed","conflict","cancelled","other_failure"]},"label":{"type":"string"},"count":{"type":"integer","minimum":0}}}},"daily":{"type":"array","items":{"type":"object","required":["date","label","completed_count","merged_count","average_queue_time_ms","average_queue_time_label","average_ci_time_ms","average_ci_time_label","average_outside_ci_time_ms","average_outside_ci_time_label"],"properties":{"date":{"type":"string","format":"date"},"label":{"type":"string"},"completed_count":{"type":"integer","minimum":0},"merged_count":{"type":"integer","minimum":0},"average_queue_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_queue_time_label":{"type":"string","nullable":true},"average_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_ci_time_label":{"type":"string","nullable":true},"average_outside_ci_time_ms":{"type":"integer","minimum":0,"nullable":true},"average_outside_ci_time_label":{"type":"string","nullable":true}}}}}},"target_branches":{"type":"array","items":{"type":"string"},"description":"Bookmark names for the target picker. Present only on the queue-page read (`GET /vcs/merge_queues`); mutation snapshots omit it. Empty while jj-backend is degraded."}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"The actor is not allowed to perform this queue mutation"},"404":{"description":"Not found"},"422":{"description":"The requested state transition is invalid"},"502":{"description":"Bad gateway"},"409":{"description":"The queue entry version changed"},"503":{"description":"Merge queue rollout flag is disabled"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["expected_version","enabled"],"properties":{"expected_version":{"type":"integer","minimum":1},"enabled":{"type":"boolean"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Enable or disable per-entry CI waivers for this queue","description":"Administrators only. Disabling prevents new waivers; already approved entries retain their audited waiver."}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/stacks":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_vcs_stacks","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Active stacks with their member changes ordered from tip to root","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["stacks"],"properties":{"stacks":{"type":"array","items":{"$ref":"#/components/schemas/VcsStack"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List active graph-derived stacks in one repository"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/stacks/{code}":{"get":{"operationId":"get_api_v1_organizations_org_slug_repos_repo_slug_vcs_stacks_code_","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"code","in":"path","required":true,"schema":{"type":"string"}},{"name":"code","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9]{4}$"}}],"responses":{"200":{"description":"Active stack with member changes ordered from tip to root","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["stack"],"properties":{"stack":{"$ref":"#/components/schemas/VcsStack"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read an active graph-derived stack by durable code"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/stacks/{code}/name":{"patch":{"operationId":"patch_api_v1_organizations_org_slug_repos_repo_slug_vcs_stacks_code_name","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"code","in":"path","required":true,"schema":{"type":"string"}},{"name":"code","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9]{4}$"}}],"responses":{"200":{"description":"The renamed active stack","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["stack"],"properties":{"stack":{"$ref":"#/components/schemas/VcsStack"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Change submission was invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VcsChangeError"}}}},"502":{"description":"Bad gateway"},"409":{"description":"The alias collides with a bookmark, another stack, or a concurrent alias update","content":{"application/json":{"schema":{"type":"object","required":["error","code"],"properties":{"error":{"type":"string"},"code":{"type":"string","enum":["bookmark_taken","stack_name_taken","concurrent_update","stack_archived"]}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["name"],"properties":{"name":{"type":"string","nullable":true}}}}}},"security":[{"bearerAuth":[]}],"summary":"Set or clear a stack's human bookmark alias"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/tree":{"get":{"operationId":"api_v1_org_repo_vcs_tree","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"ref","in":"query","required":true,"schema":{"type":"string"}},{"name":"path","in":"query","schema":{"type":"string","default":""}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Tree entries at path (with per-entry last commit and README)"}},"/api/v1/organizations/{org_slug}/repos/{repo_slug}/vcs/trunk_tip":{"get":{"operationId":"api_v1_org_repo_vcs_trunk_tip","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Trunk tip summary","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VcsTrunkTipResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Latest trunk commit, loaded independently of the browse tree/branches so the browse header strip can stream in without blocking the rest of the page.\n"}},"/api/v1/organizations/{org_slug}/transcripts/search":{"post":{"operationId":"api_v1_transcripts_search","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"in":"path","name":"org_slug","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Bounded ranked session window and indexing coverage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/TranscriptSearchResult"}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Missing or inaccessible scope"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"400":{"description":"Invalid request"},"409":{"description":"Stale cursor"},"429":{"description":"Search quota exceeded"},"503":{"description":"Dependency unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/TranscriptSearchRequest"}}}},"security":[{"bearerAuth":[]}],"summary":"Search retained user and assistant transcript messages"}},"/api/v1/organizations/{org_slug}/workspace_activity/notifications/{id}/dismissal":{"patch":{"operationId":"patch_api_v1_organizations_org_slug_workspace_activity_notifications_id_dismissal","tags":["organizations"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The updated Workspace Activity page after the dismissal","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/WorkspaceActivityPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_apps":{"get":{"operationId":"api_v1_organization_agent_apps","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Team apps","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OrganizationAgentApps"}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Organization or feature not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List team apps agents published on Composal Pages"}},"/api/v1/organizations/{organization_id}/agent_apps/{id}":{"get":{"operationId":"api_v1_organization_agent_app","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Team app","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OrganizationAgentApp"}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"App or feature not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Show one team app an agent published on Composal Pages"}},"/api/v1/organizations/{organization_id}/agent_apps/{id}/installs/{agent_id}":{"put":{"operationId":"install_api_v1_organization_agent_app","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Installed","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OrganizationAgentAppInstall"}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"App, agent or feature not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Install a team app on an agent the viewer owns or manages"},"delete":{"operationId":"uninstall_api_v1_organization_agent_app","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Uninstalled","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OrganizationAgentAppInstall"}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"App, agent or feature not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Uninstall a team app from an agent the viewer owns or manages"}},"/api/v1/organizations/{organization_id}/agent_apps/{id}/opened":{"post":{"operationId":"opened_api_v1_organization_agent_app","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"App or feature not found"},"422":{"description":"Invalid surface, view or missing Idempotency-Key"},"502":{"description":"Bad gateway"},"204":{"description":"Opening recorded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["surface","view"],"properties":{"surface":{"type":"string","enum":["web","desktop"]},"view":{"type":"string","enum":["frame","external"],"description":"Beside its agent in Composal, or in the person's own browser"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Record that the viewer opened a team app, without its content"}},"/api/v1/organizations/{organization_id}/agent_connections":{"get":{"operationId":"api_v1_organization_agent_connections","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Connection response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"connections":{"type":"array","items":{"$ref":"#/components/schemas/AgentConnectionRecord"}},"pagination":{"$ref":"#/components/schemas/OrganizationResourcePagination"},"catalog":{"type":"array","items":{"$ref":"#/components/schemas/AgentIntegrationManifest"}},"provider_triggers_enabled":{"type":"boolean"},"can_manage_safety":{"type":"boolean"},"custody_enabled":{"type":"boolean"},"custom_connections":{"type":"array","items":{"$ref":"#/components/schemas/AgentConnectionRecord"}}},"required":["connections","pagination","catalog","provider_triggers_enabled","custody_enabled","custom_connections"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Connection owner access required"},"404":{"description":"Connection or feature not found"},"422":{"description":"Invalid connection input"},"502":{"description":"Bad gateway"},"503":{"description":"Connection provider unavailable"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_agent_connections","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Connection response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"connection":{"$ref":"#/components/schemas/AgentConnectionRecord"}},"required":["connection"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Connection owner access required"},"404":{"description":"Connection or feature not found"},"422":{"description":"Invalid connection input"},"502":{"description":"Bad gateway"},"503":{"description":"Connection provider unavailable"},"201":{"description":"Connection response","content":{"application/json":{"schema":{"type":"object","properties":{"connection":{"$ref":"#/components/schemas/AgentConnectionRecord"}},"required":["connection"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"toolkit":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":100}},"required":["toolkit","name"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_connections/custom_mcp":{"post":{"operationId":"custom_mcp_api_v1_organization_agent_connections","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","maxLength":80}}],"responses":{"200":{"description":"Connection response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"connection":{"$ref":"#/components/schemas/AgentConnectionRecord"}},"required":["connection"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Connection owner access required"},"404":{"description":"Connection or feature not found"},"422":{"description":"Invalid connection input","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}},"field_errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"502":{"description":"Bad gateway"},"503":{"description":"Connection provider unavailable"},"201":{"description":"Connection response","content":{"application/json":{"schema":{"type":"object","properties":{"connection":{"$ref":"#/components/schemas/AgentConnectionRecord"}},"required":["connection"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["name","url","auth_mode"],"properties":{"name":{"type":"string","maxLength":100},"url":{"type":"string","maxLength":2048},"auth_mode":{"type":"string","enum":["NO_AUTH","API_KEY","DCR_OAUTH"]},"discovery_url":{"type":"string","maxLength":2048}}}}}},"security":[{"bearerAuth":[]}],"summary":"Register a user-owned custom MCP connection"}},"/api/v1/organizations/{organization_id}/agent_connections/safety_controls":{"get":{"operationId":"safety_controls_api_v1_organization_agent_connections","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Administrator safety metadata only","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["connections","pagination","custody_enabled"],"properties":{"connections":{"type":"array","items":{"$ref":"#/components/schemas/AgentConnectionRecord"}},"pagination":{"$ref":"#/components/schemas/OrganizationResourcePagination"},"custody_enabled":{"type":"boolean"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_connections/{agent_connection_id}/trigger_subscriptions":{"get":{"operationId":"api_v1_organization_agent_connection_trigger_subscriptions","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent_connection_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Owner subscription response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"subscriptions":{"type":"array","items":{"$ref":"#/components/schemas/AgentTriggerSubscriptionRecord"}},"pagination":{"$ref":"#/components/schemas/OrganizationResourcePagination"},"catalog":{"type":"array","items":{"$ref":"#/components/schemas/AgentTriggerDefinition"}},"connection":{"$ref":"#/components/schemas/AgentConnectionRecord"},"lifecycle_available":{"type":"boolean"},"health":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/AgentTriggerSubscriptionHealth"}}},"required":["subscriptions","pagination","catalog","connection","lifecycle_available","health"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Owner access required"},"404":{"description":"Connection, subscription or feature not found"},"422":{"description":"Invalid subscription input"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_agent_connections_agent_connection_id_trigger_subscriptions","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent_connection_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required"},"403":{"description":"Owner access required"},"404":{"description":"Connection, subscription or feature not found"},"422":{"description":"Invalid subscription input"},"502":{"description":"Bad gateway"},"201":{"description":"Owner subscription response","content":{"application/json":{"schema":{"type":"object","properties":{"subscription":{"$ref":"#/components/schemas/AgentTriggerSubscriptionRecord"}},"required":["subscription"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"trigger_slug":{"type":"string"},"configuration":{"type":"object","additionalProperties":true}},"required":["trigger_slug","configuration"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_connections/{agent_connection_id}/trigger_subscriptions/{id}":{"patch":{"operationId":"api_v1_organization_agent_connection_trigger_subscription","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent_connection_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Owner subscription response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"subscription":{"$ref":"#/components/schemas/AgentTriggerSubscriptionRecord"}},"required":["subscription"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Owner access required"},"404":{"description":"Connection, subscription or feature not found"},"422":{"description":"Invalid subscription input"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"enabled":{"type":"boolean"}},"required":["enabled"]}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_agent_connections_agent_connection_id_trigger_subscriptions_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent_connection_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Owner subscription response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"subscription":{"$ref":"#/components/schemas/AgentTriggerSubscriptionRecord"}},"required":["subscription"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Owner access required"},"404":{"description":"Connection, subscription or feature not found"},"422":{"description":"Invalid subscription input"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"enabled":{"type":"boolean"}},"required":["enabled"]}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_organizations_organization_id_agent_connections_agent_connection_id_trigger_subscriptions_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent_connection_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Owner subscription response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"subscription":{"$ref":"#/components/schemas/AgentTriggerSubscriptionRecord"}},"required":["subscription"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Owner access required"},"404":{"description":"Connection, subscription or feature not found"},"422":{"description":"Invalid subscription input"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_connections/{agent_connection_id}/trigger_subscriptions/{id}/discover":{"post":{"operationId":"discover_api_v1_organization_agent_connection_trigger_subscription","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent_connection_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Owner subscription response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"subscription":{"$ref":"#/components/schemas/AgentTriggerSubscriptionRecord"}},"required":["subscription"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Owner access required"},"404":{"description":"Connection, subscription or feature not found"},"422":{"description":"Invalid subscription input"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_connections/{agent_connection_id}/trigger_subscriptions/{id}/replace":{"post":{"operationId":"replace_api_v1_organization_agent_connection_trigger_subscription","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent_connection_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required"},"403":{"description":"Owner access required"},"404":{"description":"Connection, subscription or feature not found"},"422":{"description":"Invalid subscription input"},"502":{"description":"Bad gateway"},"201":{"description":"Owner subscription response","content":{"application/json":{"schema":{"type":"object","properties":{"subscription":{"$ref":"#/components/schemas/AgentTriggerSubscriptionRecord"}},"required":["subscription"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"trigger_slug":{"type":"string"},"configuration":{"type":"object","additionalProperties":true},"enabled":{"type":"boolean"}},"required":["trigger_slug","configuration","enabled"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_connections/{id}":{"get":{"operationId":"api_v1_organization_agent_connection","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"grants_limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"grants_cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Connection response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"connection":{"$ref":"#/components/schemas/AgentConnectionRecord"},"provider":{"$ref":"#/components/schemas/AgentIntegrationManifest"},"capabilities":{"type":"object","required":["can_rename","can_reconnect","can_disconnect","can_manage_custody","can_manage_subscriptions","can_manage_safety"],"properties":{"can_rename":{"type":"boolean"},"can_reconnect":{"type":"boolean"},"can_disconnect":{"type":"boolean"},"can_manage_custody":{"type":"boolean"},"can_manage_subscriptions":{"type":"boolean"},"can_manage_safety":{"type":"boolean"}}},"activity":{"type":"array","items":{"type":"object","required":["id","tool","action_name","state","created_at","updated_at","run"],"properties":{"id":{"type":"string"},"tool":{"type":"string","nullable":true},"action_name":{"type":"string"},"state":{"type":"string","enum":["pending","succeeded","failed","uncertain"]},"created_at":{"type":"string","nullable":true},"updated_at":{"type":"string","nullable":true},"run":{"type":"object","required":["id","automation_id","automation_slug","automation_name","revision"],"properties":{"id":{"type":"string"},"automation_id":{"type":"string"},"automation_slug":{"type":"string"},"automation_name":{"type":"string"},"revision":{"type":"integer"}},"nullable":true}}}},"pagination":{"$ref":"#/components/schemas/OrganizationResourcePagination"},"grants":{"type":"array","items":{"type":"object","required":["id","status","usable","revision","created_at","revoked_at","can_revoke","automation","actions"],"properties":{"id":{"type":"string"},"status":{"type":"string","enum":["active","revoked"]},"usable":{"type":"boolean"},"revision":{"type":"integer"},"created_at":{"type":"string","nullable":true},"revoked_at":{"type":"string","nullable":true},"can_revoke":{"type":"boolean"},"automation":{"type":"object","required":["id","slug","name"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"nullable":true},"actions":{"type":"array","items":{"type":"object","required":["tool","name","mode"],"properties":{"tool":{"type":"string"},"name":{"type":"string"},"mode":{"type":"string","enum":["approval_required","preauthorized"]}}}}}}},"grants_pagination":{"$ref":"#/components/schemas/OrganizationResourcePagination"}},"required":["connection","provider","capabilities","activity","pagination","grants","grants_pagination"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Connection owner access required"},"404":{"description":"Connection or feature not found"},"422":{"description":"Invalid connection input"},"502":{"description":"Bad gateway"},"503":{"description":"Connection provider unavailable"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_organization_id_agent_connections_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Connection response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"connection":{"$ref":"#/components/schemas/AgentConnectionRecord"}},"required":["connection"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Connection owner access required"},"404":{"description":"Connection or feature not found"},"422":{"description":"Invalid connection input"},"502":{"description":"Bad gateway"},"503":{"description":"Connection provider unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"name":{"type":"string","minLength":1,"maxLength":100}},"required":["name"]}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_agent_connections_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Connection response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"connection":{"$ref":"#/components/schemas/AgentConnectionRecord"}},"required":["connection"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Connection owner access required"},"404":{"description":"Connection or feature not found"},"422":{"description":"Invalid connection input"},"502":{"description":"Bad gateway"},"503":{"description":"Connection provider unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"name":{"type":"string","minLength":1,"maxLength":100}},"required":["name"]}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_organizations_organization_id_agent_connections_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Connection owner access required"},"404":{"description":"Connection or feature not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Deleted"}},"security":[{"bearerAuth":[]}],"summary":"Delete your own app account"}},"/api/v1/organizations/{organization_id}/agent_connections/{id}/adopt_custody":{"post":{"operationId":"adopt_custody_api_v1_organization_agent_connection","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated connection custody metadata","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["connection"],"properties":{"connection":{"$ref":"#/components/schemas/AgentConnectionRecord"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["reason"],"properties":{"reason":{"type":"string","minLength":1,"maxLength":500}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_connections/{id}/authorize":{"post":{"operationId":"authorize_api_v1_organization_agent_connection","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Connection response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"redirect_url":{"type":["string","null"],"format":"uri"},"expires_at":{"type":["string","null"],"format":"date-time"}},"required":["redirect_url","expires_at"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Connection owner access required"},"404":{"description":"Connection or feature not found"},"422":{"description":"Invalid connection input"},"502":{"description":"Bad gateway"},"503":{"description":"Connection provider unavailable"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"callback":{"type":"string","enum":["app"],"description":"Return the browser to a page that finishes the sign-in without a Composal session, for the desktop app."},"enable_for_agent":{"type":"string","description":"An agent the caller can change; Rails switches the account on for it once the sign-in finishes."}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_connections/{id}/complete":{"post":{"operationId":"complete_api_v1_organization_agent_connection","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Connection response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"connection":{"$ref":"#/components/schemas/AgentConnectionRecord"}},"required":["connection"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Connection owner access required"},"404":{"description":"Connection or feature not found"},"422":{"description":"Invalid connection input"},"502":{"description":"Bad gateway"},"503":{"description":"Connection provider unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"state":{"type":"string","minLength":64,"maxLength":64}},"required":["state"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_connections/{id}/custody":{"get":{"operationId":"custody_api_v1_organization_agent_connection","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Custody permissions and audit history","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"connection":{"$ref":"#/components/schemas/AgentConnectionRecord"},"events":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string"},"reason":{"type":"string"},"actor_id":{"type":"string"},"actor_name":{"type":"string"},"from_user_id":{"type":"string"},"from_name":{"type":"string"},"to_user_id":{"type":"string"},"to_name":{"type":"string"},"created_at":{"type":"string"}},"required":["action","reason","actor_id","actor_name","from_user_id","from_name","to_user_id","to_name","created_at"]}},"pagination":{"$ref":"#/components/schemas/OrganizationResourcePagination"},"can_adopt":{"type":"boolean"},"can_reassign":{"type":"boolean"}},"required":["connection","events","pagination","can_adopt","can_reassign"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_connections/{id}/delegate":{"post":{"operationId":"delegate_api_v1_organization_agent_connection","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Owner-managed revision delegation","content":{"application/json":{"schema":{"type":"object","properties":{"delegation":{"$ref":"#/components/schemas/AgentConnectionAccessRecord"}},"required":["delegation"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"grant_id":{"type":"string"},"member_id":{"type":"string"},"roles":{"type":"array","items":{"type":"string","enum":["invoke","approve"]},"minItems":1,"maxItems":2,"uniqueItems":true}},"required":["grant_id","member_id","roles"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_connections/{id}/delegations":{"get":{"operationId":"delegations_api_v1_organization_agent_connection","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Owner-managed revision delegation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"delegations":{"type":"array","items":{"$ref":"#/components/schemas/AgentConnectionAccessRecord"}},"pagination":{"$ref":"#/components/schemas/OrganizationResourcePagination"}},"required":["delegations","pagination"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_connections/{id}/disconnect":{"post":{"operationId":"disconnect_api_v1_organization_agent_connection","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Connection response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"connection":{"$ref":"#/components/schemas/AgentConnectionRecord"}},"required":["connection"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Connection owner access required"},"404":{"description":"Connection or feature not found"},"422":{"description":"Invalid connection input"},"502":{"description":"Bad gateway"},"503":{"description":"Connection provider unavailable"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_connections/{id}/disconnect_impact":{"get":{"operationId":"disconnect_impact_api_v1_organization_agent_connection","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current disconnect impact","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["automations","subscription_count"],"properties":{"automations":{"type":"array","items":{"type":"object","required":["id","name","slug"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}}}},"subscription_count":{"type":"integer","minimum":0}}}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Connection or feature not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_connections/{id}/grants":{"get":{"operationId":"grants_api_v1_organization_agent_connection","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Connection grants","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"grants":{"type":"array","items":{"$ref":"#/components/schemas/AutomationConnectionGrantRecord"}}},"required":["grants"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_connections/{id}/reassign_custody":{"post":{"operationId":"reassign_custody_api_v1_organization_agent_connection","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated connection custody metadata","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["connection"],"properties":{"connection":{"$ref":"#/components/schemas/AgentConnectionRecord"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["reason","member_id"],"properties":{"reason":{"type":"string","minLength":1,"maxLength":500},"member_id":{"type":"string","minLength":1}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_connections/{id}/resources":{"post":{"operationId":"resources_api_v1_organization_agent_connection","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Owned account resource metadata","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["resources","next_cursor"],"properties":{"resources":{"type":"array","maxItems":50,"items":{"type":"object","required":["id","name","kind"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string","enum":["channel","page","message"]}}}},"next_cursor":{"type":["string","null"]}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"query":{"type":"string","maxLength":200},"cursor":{"type":["string","null"],"maxLength":2048}}}}}},"security":[{"bearerAuth":[]}],"summary":"Browse resources in an owned integration account"}},"/api/v1/organizations/{organization_id}/agent_connections/{id}/revoke_delegation":{"post":{"operationId":"revoke_delegation_api_v1_organization_agent_connection","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Owner-managed revision delegation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"delegation":{"$ref":"#/components/schemas/AgentConnectionAccessRecord"}},"required":["delegation"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"delegation_id":{"type":"string"}},"required":["delegation_id"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_connections/{id}/revoke_grant":{"post":{"operationId":"revoke_grant_api_v1_organization_agent_connection","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Connection grants","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"grant":{"$ref":"#/components/schemas/AutomationConnectionGrantRecord"}},"required":["grant"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"grant_id":{"type":"string"}},"required":["grant_id"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_connections/{id}/safety_control":{"post":{"operationId":"safety_control_api_v1_organization_agent_connection","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Administrator safety metadata only","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["connection"],"properties":{"connection":{"$ref":"#/components/schemas/AgentConnectionRecord"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["disabled","reason"],"properties":{"disabled":{"type":"boolean"},"reason":{"type":"string","minLength":1,"maxLength":500}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_connections/{id}/sync":{"post":{"operationId":"sync_api_v1_organization_agent_connection","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Connection response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"connection":{"$ref":"#/components/schemas/AgentConnectionRecord"}},"required":["connection"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Connection owner access required"},"404":{"description":"Connection or feature not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Check whether the owner's browser sign-in finished","description":"The owner's app asks Rails to check the provider; a finished sign-in activates the account and a failed or stale one expires."}},"/api/v1/organizations/{organization_id}/agent_integrations":{"get":{"operationId":"organizationAgentIntegrationsGet","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"q","in":"query","schema":{"type":"string","maxLength":200}},{"name":"toolkit","in":"query","schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"enableable","in":"query","description":"When true, only connected accounts an agent can be given now.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Connection response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OrganizationAgentIntegrations"}}}},"401":{"description":"Authentication required"},"403":{"description":"Connection owner access required"},"404":{"description":"Connection or feature not found"},"422":{"description":"Invalid connection input"},"502":{"description":"Bad gateway"},"503":{"description":"Connection provider unavailable"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"organizationAgentIntegrationsPost","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[a-zA-Z0-9_-]+$"},"description":"Must match the explicit creation_key body field when supplied."}],"responses":{"200":{"description":"Connection response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"connection":{"$ref":"#/components/schemas/OrganizationAgentConnection"}},"required":["connection"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Connection owner access required"},"404":{"description":"Connection or feature not found"},"422":{"description":"Invalid connection input"},"502":{"description":"Bad gateway"},"503":{"description":"Connection provider unavailable"},"201":{"description":"Connection response","content":{"application/json":{"schema":{"type":"object","properties":{"connection":{"$ref":"#/components/schemas/OrganizationAgentConnection"}},"required":["connection"],"additionalProperties":false}}}},"409":{"description":"Creation key belongs to different original input"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"toolkit":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":100},"creation_key":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[a-zA-Z0-9_-]+$","description":"Stable identity for retrying this creation; retain it after an uncertain response."}},"required":["toolkit","name"]}}}},"security":[{"bearerAuth":[]}],"description":"Create an organization account before browser authorization. Include a stable creation_key in the body to make retries return the original account, even after it is renamed or revoked. Reusing that key with different toolkit/name input returns 409. Keys are scoped to organization and initiating user. Idempotency-Key, when supplied, must match creation_key. Older servers reject the explicit creation_key field rather than silently performing an unsafe retry. Omitting creation_key preserves legacy create-per-request behavior."}},"/api/v1/organizations/{organization_id}/agent_integrations/accounts":{"get":{"operationId":"organizationAgentIntegrationAccountsGet","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"q","in":"query","schema":{"type":"string","maxLength":200}},{"name":"toolkit","in":"query","schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"enableable","in":"query","description":"When true, only connected accounts an agent can be given now.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Organization accounts","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OrganizationAgentIntegrationAccounts"}}}},"401":{"description":"Authentication required"},"403":{"description":"Connection owner access required"},"404":{"description":"Connection or feature not found"},"422":{"description":"Invalid connection input"},"502":{"description":"Bad gateway"},"503":{"description":"Connection provider unavailable"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_integrations/catalog":{"get":{"operationId":"organizationAgentIntegrationCatalogGet","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Integration catalog","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OrganizationAgentIntegrationCatalog"}}}},"401":{"description":"Authentication required"},"403":{"description":"Connection owner access required"},"404":{"description":"Connection or feature not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"503":{"description":"Connection provider unavailable"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_integrations/custom_mcp":{"post":{"operationId":"organizationAgentIntegrationCustomMcp","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","maxLength":80}}],"responses":{"200":{"description":"Organization MCP connection created","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"connection":{"$ref":"#/components/schemas/OrganizationAgentConnection"}},"required":["connection"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Organization MCP connection created","content":{"application/json":{"schema":{"type":"object","properties":{"connection":{"$ref":"#/components/schemas/OrganizationAgentConnection"}},"required":["connection"],"additionalProperties":false}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["name","url","auth_mode"],"properties":{"name":{"type":"string","maxLength":100},"url":{"type":"string","maxLength":2048},"auth_mode":{"type":"string","enum":["NO_AUTH","API_KEY","DCR_OAUTH"]},"discovery_url":{"type":"string","maxLength":2048}}}}}},"security":[{"bearerAuth":[]}],"summary":"Register an organization-owned custom MCP connection"}},"/api/v1/organizations/{organization_id}/agent_integrations/github":{"get":{"operationId":"github_api_v1_organization_agent_integrations","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"installation","schema":{"type":"string"}}],"responses":{"200":{"description":"Current GitHub App repository scope without Verify projects or source imports","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentGithubIntegrations"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"GitHub organizations and repositories configured for agents"}},"/api/v1/organizations/{organization_id}/agent_integrations/{id}":{"get":{"operationId":"organizationAgentIntegrationGet","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Connection response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"connection":{"$ref":"#/components/schemas/OrganizationAgentConnectionDetail"}},"required":["connection"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Connection owner access required"},"404":{"description":"Connection or feature not found"},"422":{"description":"Invalid connection input"},"502":{"description":"Bad gateway"},"503":{"description":"Connection provider unavailable"}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"organizationAgentIntegrationsDestroy","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required"},"403":{"description":"Organization admin access required"},"404":{"description":"Account or feature not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Account deleted"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_integrations/{id}/authorize":{"post":{"operationId":"organizationAgentIntegrationsAuthorize","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Connection response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"redirect_url":{"type":["string","null"],"format":"uri"},"expires_at":{"type":["string","null"],"format":"date-time"}},"required":["redirect_url","expires_at"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Connection owner access required"},"404":{"description":"Connection or feature not found"},"422":{"description":"Invalid connection input"},"502":{"description":"Bad gateway"},"503":{"description":"Connection provider unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"return_agent":{"type":"string","description":"The agent whose Integrations started this; the callback page links back to it."},"callback":{"type":"string","enum":["app"],"description":"Return the browser to a page that finishes the sign-in without a Composal session, for the desktop app."},"enable_for_agent":{"type":"string","description":"An agent the caller can change; Rails switches the account on for it once the sign-in finishes."}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_integrations/{id}/complete":{"post":{"operationId":"organizationAgentIntegrationsComplete","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Connection response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"connection":{"$ref":"#/components/schemas/OrganizationAgentConnectionDetail"}},"required":["connection"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Connection owner access required"},"404":{"description":"Connection or feature not found"},"422":{"description":"Invalid connection input"},"502":{"description":"Bad gateway"},"503":{"description":"Connection provider unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"state":{"type":"string","minLength":64,"maxLength":64},"code":{"type":"string","minLength":1,"maxLength":8192,"description":"Required for direct Spacesheep OAuth; omit for Composio connections."}},"required":["state"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_integrations/{id}/disconnect":{"post":{"operationId":"organizationAgentIntegrationsDisconnect","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Connection response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"connection":{"$ref":"#/components/schemas/OrganizationAgentConnection"}},"required":["connection"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Connection owner access required"},"404":{"description":"Connection or feature not found"},"422":{"description":"Invalid connection input"},"502":{"description":"Bad gateway"},"503":{"description":"Connection provider unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_integrations/{id}/sharing":{"post":{"operationId":"organizationAgentIntegrationsSharing","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Connection response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"connection":{"$ref":"#/components/schemas/OrganizationAgentConnection"}},"required":["connection"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Connection owner access required"},"404":{"description":"Connection or feature not found"},"422":{"description":"Invalid connection input"},"502":{"description":"Bad gateway"},"503":{"description":"Connection provider unavailable"},"409":{"description":"Account sharing or authorization changed; refresh and retry"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Legacy organization sharing switch. False pauses all agent access."},"expected_version":{"type":"integer","minimum":0},"expected_generation":{"type":"integer","minimum":0}},"required":["enabled","expected_version"],"additionalProperties":false},{"type":"object","properties":{"audience":{"type":"string","enum":["team","private"]},"expected_version":{"type":"integer","minimum":0},"expected_generation":{"type":"integer","minimum":0,"description":"The account authorization generation read before changing access."}},"required":["audience","expected_version","expected_generation"],"additionalProperties":false}]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_integrations/{id}/sync":{"post":{"operationId":"organizationAgentIntegrationsSync","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Connection response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"connection":{"$ref":"#/components/schemas/OrganizationAgentConnection"}},"required":["connection"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Connection owner or admin access required"},"404":{"description":"Connection or feature not found"},"422":{"description":"Invalid connection input"},"502":{"description":"Bad gateway"},"503":{"description":"Connection provider unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_marketplace":{"get":{"operationId":"agentMarketplaceList","tags":["organizations","Agent Marketplace"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"category","in":"query","required":false,"schema":{"type":"string"}},{"name":"scope","in":"query","required":false,"schema":{"type":"string","enum":["mine","composal"]}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Marketplace listings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentMarketplaceCatalog"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Browse installable agents","description":"Public listings plus the organization's own listings, featured first and then by installs. Without a filter the response holds `featured`, a `composal` section of Composal's own listings, and one section per category; with `q`, `category` or a `scope` it holds one page of `listings` and the `next_page`, if any."},"post":{"operationId":"agentMarketplacePublish","tags":["organizations","Agent Marketplace"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Published listing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentListingDetailResponse"}}}},"403":{"description":"Agents are not enabled, or you cannot change this agent"},"404":{"description":"Listing not found or not visible to this organization"},"409":{"description":"The idempotency key or listing version belongs to another request"},"422":{"description":"Invalid listing contents"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["name","summary","category","bundle"],"properties":{"name":{"type":"string","maxLength":80},"summary":{"type":"string","maxLength":280},"explainer":{"type":"string","maxLength":8000,"description":"Markdown shown as the listing's public write-up."},"category":{"type":"string"},"visibility":{"$ref":"#/components/schemas/AgentListingVisibility"},"source_agent_id":{"type":"string","description":"The V2 agent this listing was published from."},"bundle":{"$ref":"#/components/schemas/AgentListingBundle"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Publish an agent listing"}},"/api/v1/organizations/{organization_id}/agent_marketplace/draft":{"get":{"operationId":"agentMarketplaceDraft","tags":["organizations","Agent Marketplace"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"listing_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Listing draft","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["draft","listing","categories","page_app_choices"],"properties":{"page_app_choices":{"type":"array","items":{"$ref":"#/components/schemas/AgentListingPageAppChoice"}},"listing":{"description":"The listing being edited, or null for a new one.","type":"object","nullable":true,"required":["id","version"],"properties":{"id":{"type":"string"},"version":{"type":"integer"}}},"draft":{"type":"object","required":["name","summary","explainer","category","visibility","bundle"],"properties":{"name":{"type":"string"},"summary":{"type":"string"},"explainer":{"type":"string"},"category":{"type":"string"},"visibility":{"$ref":"#/components/schemas/AgentListingVisibility"},"bundle":{"$ref":"#/components/schemas/AgentListingBundle"}}},"categories":{"type":"array","items":{"type":"string"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"The publish form's starting state","description":"`listing_id` loads a listing to edit, `agent_id` starts from that agent's live instructions and enabled apps, and neither starts a blank listing."}},"/api/v1/organizations/{organization_id}/agent_marketplace/shared/{share_token}":{"get":{"operationId":"agentMarketplaceShared","tags":["organizations","Agent Marketplace"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"share_token","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Listing opened from a share link","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentListingDetailResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_marketplace/shared/{share_token}/install":{"post":{"operationId":"agentMarketplaceInstallShared","tags":["organizations","Agent Marketplace"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"share_token","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"description":"One key per install; retrying it returns the same agent.","schema":{"type":"string"}}],"responses":{"201":{"description":"Installed agent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentListingInstallResponse"}}}},"403":{"description":"Agents are not enabled, or you cannot change this agent"},"404":{"description":"Listing not found or not visible to this organization"},"409":{"description":"The idempotency key or listing version belongs to another request"},"422":{"description":"Invalid listing contents"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"description":"Requires an Idempotency-Key header."}},"/api/v1/organizations/{organization_id}/agent_marketplace/{id}":{"get":{"operationId":"agentMarketplaceShow","tags":["organizations","Agent Marketplace"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Listing","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentListingDetailResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"agentMarketplaceUpdate","tags":["organizations","Agent Marketplace"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Listing","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentListingDetailResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"The listing changed since expected_version; reload and try again"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["expected_version"],"properties":{"expected_version":{"type":"integer"},"name":{"type":"string","maxLength":80},"summary":{"type":"string","maxLength":280},"explainer":{"type":"string","maxLength":8000,"description":"Markdown shown as the listing's public write-up."},"category":{"type":"string"},"visibility":{"$ref":"#/components/schemas/AgentListingVisibility"},"bundle":{"$ref":"#/components/schemas/AgentListingBundle"}}}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_agent_marketplace_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"agentMarketplaceArchive","tags":["organizations","Agent Marketplace"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Listing removed from the marketplace"},"403":{"description":"Agents are not enabled, or you cannot change this agent"},"404":{"description":"Listing not found or not visible to this organization"},"409":{"description":"The idempotency key or listing version belongs to another request"},"422":{"description":"Invalid listing contents"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agent_marketplace/{id}/install":{"post":{"operationId":"agentMarketplaceInstall","tags":["organizations","Agent Marketplace"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"description":"One key per install; retrying it returns the same agent.","schema":{"type":"string"}}],"responses":{"201":{"description":"Installed agent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentListingInstallResponse"}}}},"403":{"description":"Agents are not enabled, or you cannot change this agent"},"404":{"description":"Listing not found or not visible to this organization"},"409":{"description":"The idempotency key or listing version belongs to another request"},"422":{"description":"Invalid listing contents"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Install a listing as a new private V2 agent","description":"Requires an Idempotency-Key header; retrying the same key returns the same agent."}},"/api/v1/organizations/{organization_id}/agent_sites":{"get":{"operationId":"api_v1_organization_agent_sites","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Published sites","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OrganizationAgentSites"}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Organization or feature not found"},"422":{"description":"Invalid cursor"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List published sites of the organization's agents that the viewer may open, newest deploy first"}},"/api/v1/organizations/{organization_id}/agent_sites/{id}":{"get":{"operationId":"api_v1_organization_agent_site","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Published site","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OrganizationAgentSite"}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Site or feature not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Show one published site of the organization's agents that the viewer may open"}},"/api/v1/organizations/{organization_id}/agent_sites/{id}/icon":{"get":{"operationId":"icon_api_v1_organization_agent_site","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"128 pixel WebP icon","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"image/webp":{"schema":{"type":"string","format":"binary"}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Site, icon or feature not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"304":{"description":"Icon unchanged"}},"security":[{"bearerAuth":[]}],"summary":"Download the generated icon of a published site the viewer may open"}},"/api/v1/organizations/{organization_id}/agent_sites/{id}/opened":{"post":{"operationId":"opened_api_v1_organization_agent_site","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Site or feature not found"},"422":{"description":"Invalid surface, view or missing Idempotency-Key"},"502":{"description":"Bad gateway"},"204":{"description":"Opening recorded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["surface","view"],"properties":{"surface":{"type":"string","enum":["web","desktop"]},"view":{"type":"string","enum":["frame","external"],"description":"Beside its agent in Composal, or in the person's own browser"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Record that the viewer opened an agent's site, without its content"}},"/api/v1/organizations/{organization_id}/agent_skills":{"get":{"operationId":"api_v1_organization_agent_skills","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Skill library","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSkillLibrary"}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Organization or feature not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List the organization's skill library and which agents the viewer can see have each skill"},"post":{"operationId":"post_api_v1_organizations_organization_id_agent_skills","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Skills added","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSkillLibrary"}}}},"401":{"description":"Authentication required"},"403":{"description":"Only organization admins can change the library"},"404":{"description":"Organization or feature not found"},"422":{"description":"Invalid source, skill choice, or a skill already in the library"},"502":{"description":"Bad gateway"},"503":{"description":"GitHub or the marketplace is unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"allOf":[{"$ref":"#/components/schemas/AgentSkillSourceInput"},{"type":"object","required":["revision","skills","audience"],"properties":{"revision":{"type":"string","description":"The commit SHA returned by preview"},"skills":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":50},"audience":{"$ref":"#/components/schemas/AgentSkillAudienceInput"}}}]}}}},"security":[{"bearerAuth":[]}],"summary":"Add skills to the library at the revision the admin previewed"}},"/api/v1/organizations/{organization_id}/agent_skills/marketplace":{"get":{"operationId":"marketplace_api_v1_organization_agent_skills","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"source","in":"query","required":true,"schema":{"type":"string","enum":["skills_sh","claude","cursor","codex"]}},{"name":"q","in":"query","schema":{"type":"string"},"description":"Search text for skills.sh, at least two characters; catalogs return every plugin"}],"responses":{"200":{"description":"Matching plugins or skills","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/AgentSkillMarketplaceEntry"}}},"required":["items"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Organization or feature not found"},"422":{"description":"Unknown marketplace"},"502":{"description":"Bad gateway"},"503":{"description":"The marketplace is unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Search skills.sh, or list a Claude, Cursor or Codex plugin catalog"}},"/api/v1/organizations/{organization_id}/agent_skills/preview":{"post":{"operationId":"preview_api_v1_organization_agent_skills","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Skills found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSkillPreview"}}}},"401":{"description":"Authentication required"},"403":{"description":"Only organization admins can change the library"},"404":{"description":"Organization or feature not found"},"422":{"description":"Unsupported source or no skills found"},"502":{"description":"Bad gateway"},"503":{"description":"GitHub or the marketplace is unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSkillSourceInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Read the skills in a source at its current commit before adding them"}},"/api/v1/organizations/{organization_id}/agent_skills/{id}":{"get":{"operationId":"api_v1_organization_agent_skill","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Skill","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSkillDetail"}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Skill or feature not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Show one library skill with its instructions, files and agents"},"delete":{"operationId":"delete_api_v1_organizations_organization_id_agent_skills_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated library","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSkillLibrary"}}}},"401":{"description":"Authentication required"},"403":{"description":"Only organization admins can change the library"},"404":{"description":"Skill or feature not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Remove a skill from the library and turn it off on every agent"}},"/api/v1/organizations/{organization_id}/agent_skills/{id}/audience":{"put":{"operationId":"audience_api_v1_organization_agent_skill","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated skill","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSkillDetail"}}}},"401":{"description":"Authentication required"},"403":{"description":"Only organization admins change what new agents get"},"404":{"description":"Skill, chosen agent or feature not found"},"422":{"description":"Invalid audience"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSkillAudienceInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Choose which agents have a library skill: all agents, or exactly the chosen agents the viewer manages"}},"/api/v1/organizations/{organization_id}/agents":{"get":{"operationId":"api_v1_organization_persistent_agents","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"runtime_version","in":"query","schema":{"type":"string","enum":["v2"]}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":30}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"q","in":"query","schema":{"type":"string","maxLength":128}},{"name":"status","in":"query","description":"Archived agents are excluded by default.","schema":{"type":"string","enum":["all","draft","active","paused","archived"]}}],"responses":{"200":{"description":"Authorized agent roster","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"agents":{"type":"array","items":{"$ref":"#/components/schemas/PersistentAgentSummary"},"maxItems":100},"pagination":{"$ref":"#/components/schemas/PersistentAgentPagination"},"creation_enabled":{"type":"boolean"}},"required":["agents","pagination","creation_enabled"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Current private-agent management authority required"},"404":{"description":"Organization or authorized agent not found"},"422":{"description":"Invalid configuration or operation"},"502":{"description":"Bad gateway"},"409":{"description":"Version or idempotency conflict; reload before starting a new operation"},"503":{"description":"Private Git state unavailable. Retry the same Idempotency-Key and unchanged body."}},"security":[{"bearerAuth":[]}],"summary":"List organization-shared and explicitly authorized persistent agents without fetching Git state or transcripts"},"post":{"operationId":"post_api_v1_organizations_organization_id_agents","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"viewer_time_zone","in":"query","description":"IANA time zone used to choose a region for the agent's new managed sandbox.","schema":{"type":"string","maxLength":64}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Stable unique operation key; reuse only for the identical request, including expected versions.","schema":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Authorized agent with current configuration and version tokens","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentResponse"}}}},"401":{"description":"Authentication required"},"403":{"description":"Current private-agent management authority required"},"404":{"description":"Organization or authorized agent not found"},"422":{"description":"Invalid configuration or operation"},"502":{"description":"Bad gateway"},"201":{"description":"Authorized agent with current configuration and version tokens","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentResponse"}}}},"202":{"description":"Private identity and initialization accepted; setup is pending Git recovery","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentResponse"}}}},"409":{"description":"Version or idempotency conflict; reload before starting a new operation"},"503":{"description":"Private Git state unavailable. Retry the same Idempotency-Key and unchanged body."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentCreate"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/browser_egress/candidates":{"get":{"operationId":"persistentAgentBrowserEgressCandidates","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":30}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Owner-scoped automatic routing candidates; no compute is acquired","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["agents","pagination"],"properties":{"agents":{"type":"array","items":{"type":"object","required":["id"],"properties":{"id":{"type":"string"}}}},"pagination":{"type":"object","required":["limit","next"],"properties":{"limit":{"type":"integer"},"next":{"type":["string","null"]}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Discover the signed-in user’s active V2 agents for automatic desktop routing"}},"/api/v1/organizations/{organization_id}/agents/mission_control/feedback":{"post":{"operationId":"mission_control_feedback_api_v1_organization_persistent_agents","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Organization or readable agent not found"},"422":{"description":"Invalid action"},"502":{"description":"Bad gateway"},"204":{"description":"Recorded, or ignored when disabled or the reply is no longer current"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["agent_id","at","action"],"properties":{"agent_id":{"type":"string"},"at":{"type":"string","format":"date-time","description":"The reply the viewer acted on. Nothing is stored when a newer reply has arrived."},"action":{"type":"string","enum":["opened","skipped"]}}}}}},"security":[{"bearerAuth":[]}],"summary":"Record whether the viewer opened or skipped an agent reply, so later judgments follow their choices"}},"/api/v1/organizations/{organization_id}/agents/mission_control/relevance":{"post":{"operationId":"mission_control_relevance_api_v1_organization_persistent_agents","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Verdicts for readable agents whose latest preview is their own reply. A missing agent was not judged. Disabled organizations get no verdicts.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["enabled","verdicts"],"properties":{"enabled":{"type":"boolean"},"verdicts":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["agent_id","at","needs_you"],"properties":{"agent_id":{"type":"string"},"at":{"type":"string","format":"date-time","description":"When the judged reply arrived; matches the agent's last_reply_at."},"needs_you":{"type":"boolean"}}}}}}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Organization not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"429":{"description":"Too many judgments requested; retry after Retry-After seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["agent_ids"],"properties":{"agent_ids":{"type":"array","minItems":1,"maxItems":200,"items":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Whether each named agent's latest reply needs the viewer, judged against their recent opens and skips"}},"/api/v1/organizations/{organization_id}/agents/page":{"get":{"operationId":"page_api_v1_organization_persistent_agents","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent","in":"query","schema":{"type":"string"}},{"name":"agent_search","in":"query","schema":{"type":"string"}},{"name":"agent_visibility","in":"query","description":"Limit the roster, including its pinned row, without changing the selected agent or inbox.","schema":{"type":"string","enum":["private","organization"]}},{"name":"integration_search","in":"query","schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":30}}],"responses":{"200":{"description":"V2 agent workspace page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentsWorkspacePage"}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Organization or selected authorized agent unavailable"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"503":{"description":"Selected private agent state temporarily unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Authorized V2 agent roster and selected settings for the Agents workspace"}},"/api/v1/organizations/{organization_id}/agents/page/activity":{"post":{"operationId":"page_activity_api_v1_organization_persistent_agents","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Markers keyed by agent ID. A marker changes when the conversation does; null means it has no history yet.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["agents"],"properties":{"agents":{"type":"object","additionalProperties":{"type":["string","null"]}}}}}}},"401":{"description":"Authentication required"},"403":{"description":"Current private-agent management authority required"},"404":{"description":"Organization or authorized agent not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"503":{"description":"Private Git state unavailable. Retry the same Idempotency-Key and unchanged body."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["agent_ids"],"properties":{"agent_ids":{"type":"array","minItems":1,"maxItems":200,"items":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Main-conversation change markers for readable V2 agents, from one worker read"}},"/api/v1/organizations/{organization_id}/agents/page/roster":{"get":{"operationId":"page_roster_api_v1_organization_persistent_agents","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent","in":"query","schema":{"type":"string"}},{"name":"agent_search","in":"query","schema":{"type":"string"}},{"name":"agent_visibility","in":"query","description":"Limit the roster, including its pinned row, to this audience. Omit for all authorized agents.","schema":{"type":"string","enum":["private","organization"]}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Authorized agent rows and the selected agent when outside the current page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentRoster"}}}},"401":{"description":"Authentication required"},"403":{"description":"Current private-agent management authority required"},"404":{"description":"Organization or authorized agent not found"},"422":{"description":"Invalid configuration or operation"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Refresh the authorized agent roster without loading editor or conversation state"}},"/api/v1/organizations/{organization_id}/agents/{id}":{"get":{"operationId":"api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authorized agent settings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentResponse"}}}},"401":{"description":"Authentication required"},"403":{"description":"Current private-agent management authority required"},"404":{"description":"Organization or authorized agent not found"},"422":{"description":"Invalid configuration or operation"},"502":{"description":"Bad gateway"},"409":{"description":"Version or idempotency conflict; reload before starting a new operation"},"503":{"description":"Private Git state unavailable. Retry the same Idempotency-Key and unchanged body."}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_organizations_organization_id_agents_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required"},"403":{"description":"Current private-agent management authority required"},"404":{"description":"Organization or authorized agent not found"},"422":{"description":"Invalid configuration or operation"},"502":{"description":"Bad gateway"},"204":{"description":"Agent removed; runtime revocation queued"},"409":{"description":"Version or idempotency conflict; reload before starting a new operation"}},"security":[{"bearerAuth":[]}],"summary":"Delete a v2 agent","description":"Owners and managers may delete non-project v2 agents. Echo sharing_version as expected_version. Removes product access and execution authority immediately, then asynchronously stops runs and automations. Internal records are retained for audit. Repeated deletion returns 404.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expected_version":{"type":"integer","minimum":0}},"required":["expected_version"],"additionalProperties":false}}}}}},"/api/v1/organizations/{organization_id}/agents/{id}/avatar":{"get":{"operationId":"get_persistent_agent_avatar","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"asset","in":"query","required":false,"schema":{"type":"string","enum":["sprite"]}},{"name":"version","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{64}$"}}],"responses":{"200":{"description":"Authorized private image","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"image/webp":{"schema":{"type":"string","format":"binary"}}}},"401":{"description":"Authentication required"},"403":{"description":"Current private access required"},"404":{"description":"Agent or current image unavailable"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read the current private character image"}},"/api/v1/organizations/{organization_id}/agents/{id}/avatar/configuration":{"get":{"operationId":"get_persistent_agent_avatar_configuration","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authorized avatar configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentAvatarConfiguration"}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Agent or avatar unavailable"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read avatar styles, preferences and current capabilities"}},"/api/v1/organizations/{organization_id}/agents/{id}/avatar/generate":{"post":{"operationId":"generate_persistent_agent_avatar","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","maxLength":128}}],"responses":{"200":{"description":"Generation accepted or exact receipt replayed","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentAvatarConfiguration"}}}},"401":{"description":"Authentication required"},"403":{"description":"Current write access required for a new generation"},"404":{"description":"Private agent unavailable"},"422":{"description":"Invalid style or visual description"},"502":{"description":"Bad gateway"},"409":{"description":"Generation changed or is already running"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"expected_generation":{"type":"string","pattern":"^[0-9a-f]{64}$"},"mode":{"type":"string","enum":["edit","new"]},"style":{"$ref":"#/components/schemas/PersistentAgentAvatarStyle"},"description":{"type":"string","maxLength":1200}},"required":["expected_generation","mode","style"]}}}},"security":[{"bearerAuth":[]}],"summary":"Request a styled avatar or edit the current character"}},"/api/v1/organizations/{organization_id}/agents/{id}/avatar/retry":{"post":{"operationId":"retry_persistent_agent_avatar","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","maxLength":128}}],"responses":{"200":{"description":"Generation request accepted or exact receipt replayed","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentAvatarConfiguration"}}}},"401":{"description":"Authentication required"},"403":{"description":"Current write access required for a fresh request"},"404":{"description":"Private agent unavailable"},"422":{"description":"Invalid request"},"502":{"description":"Bad gateway"},"409":{"description":"Generation changed; refresh before retrying"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"expected_generation":{"type":"string","pattern":"^[0-9a-f]{64}$"}},"required":["expected_generation"]}}}},"security":[{"bearerAuth":[]}],"summary":"Retry a failed or uncertain character generation"}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder":{"get":{"operationId":"clawder_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","description":"Return the caller-scoped native input identity for delivery reconciliation. Does not confirm acceptance.","schema":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"}},{"name":"requester_membership_id","in":"query","description":"Original V1 input membership for ambiguous-delivery recovery. Never substitute a new membership on retry.","schema":{"type":"string","minLength":1,"maxLength":200}},{"name":"cursor","in":"query","schema":{"type":"string","maxLength":4096}},{"name":"run_id","in":"query","schema":{"type":"string"}},{"name":"conversation_id","in":"query","schema":{"type":"string","default":"main"}}],"responses":{"200":{"description":"Native conversation history","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderConversation"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent access or experiment gate unavailable"},"404":{"description":"Authorized V2 agent not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"503":{"description":"Agent connection unavailable; a submission may already have reached native custody. Preserve its input key.","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentClawderUnavailable"}}}}},"security":[{"bearerAuth":[]}],"summary":"Read native OpenClaw history for a V2 agent","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/attachments":{"post":{"operationId":"clawder_attachments_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Composal-Requester-Id","in":"header","description":"Fence a retained operation to its original authenticated user; never grants authority.","schema":{"type":"string","maxLength":200}}],"responses":{"201":{"description":"The upload, with the number and size of its parts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SparkAttachment"}}}},"403":{"description":"Agent messaging access unavailable"},"422":{"description":"The file is too large, or the upload limit is reached"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/SparkAttachmentUpload"}}}},"security":[{"bearerAuth":[]}],"summary":"Start uploading a file for a message","description":"Upload each part with the parts endpoint, complete the upload, then send its ID in attachment_ids. Images can be up to 25 MB, videos up to 1 GB and other files up to 250 MB.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/attachments/{attachment_id}/complete":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_clawder_attachments_attachment_id_complete","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"attachment_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Composal-Requester-Id","in":"header","description":"Fence a retained operation to its original authenticated user; never grants authority.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"The upload is ready to send","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SparkAttachment"}}}},"403":{"description":"Agent messaging access unavailable"},"404":{"description":"The upload does not belong to this sender"},"422":{"description":"A part is missing"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Finish uploading a file","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/attachments/{attachment_id}/parts/{index}":{"put":{"operationId":"put_api_v1_organizations_organization_id_agents_id_clawder_attachments_attachment_id_parts_index_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"attachment_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"index","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Composal-Requester-Id","in":"header","description":"Fence a retained operation to its original authenticated user; never grants authority.","schema":{"type":"string","maxLength":200}}],"responses":{"204":{"description":"Part stored"},"403":{"description":"Agent messaging access unavailable"},"404":{"description":"The upload does not belong to this sender"},"422":{"description":"The part has the wrong size or the upload is already complete"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"security":[{"bearerAuth":[]}],"summary":"Upload one part of a file","description":"Parts are numbered from 0. Every part is part_size bytes except the last, which holds the rest. Uploading a part again replaces it.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/browser_opened":{"post":{"operationId":"clawder_browser_opened_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Browser opening recorded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["surface","source"],"properties":{"surface":{"type":"string","enum":["web","desktop"]},"source":{"type":"string","enum":["button","link","agent"]}}}}}},"security":[{"bearerAuth":[]}],"summary":"Record an authorized browser panel opening without its URL or content","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/call_session":{"post":{"operationId":"createClawderCallSession","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Ephemeral OpenAI realtime client secret (never the provider API key)","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderCallSession"}}},"headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent messaging is not authorized or available"},"404":{"description":"Organization or agent not visible to this user"},"422":{"description":"Invalid or nonempty request body, or unexpected query parameters"},"502":{"description":"Bad gateway"},"429":{"description":"Too many call sessions; retry after 60 seconds","headers":{"Retry-After":{"schema":{"type":"string","const":"60"}}}},"503":{"description":"Calls are not configured or the provider is unavailable; no provider details are returned","headers":{"Retry-After":{"schema":{"type":"string","const":"2"}}},"content":{"application/json":{"schema":{"type":"object","required":["error","code"],"properties":{"error":{"type":"string"},"code":{"type":"string","const":"call_unavailable"}},"additionalProperties":false}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{}}}}},"security":[{"bearerAuth":[]}],"summary":"Create a short-lived voice companion call credential","description":"Requires the same message permission and active, ready Clawder agent as sending a message, checked before and after provider IO. Uses the platform OpenAI credential server-side; only the ephemeral client secret is returned. Accepts no configuration or query parameters. The server configures a realtime voice companion with only ask_agent, which the browser delegates to the existing chat runtime and answers with its actual full response as function_call_output. The voice companion summarizes results briefly; it must not invent answers, progress, or outcomes. The secret expires after 60 seconds for establishing a connection; an established provider session may outlive it, and provider session settings are not an authorization boundary. Limited to 20 requests per user per minute, independently of push-to-talk transcription.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/commands":{"get":{"operationId":"clawder_commands_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"query","schema":{"type":"string","default":"main"}}],"responses":{"200":{"description":"Available chat commands","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["commands"],"properties":{"commands":{"type":"array","maxItems":500,"items":{"type":"object","required":["name","display_name","description","source","skill_model_visible"],"properties":{"name":{"type":"string"},"display_name":{"type":"string"},"description":{"type":"string"},"source":{"type":"string","enum":["native","skill","plugin"]},"skill_model_visible":{"type":"boolean"}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Discover the current conversation's native chat commands and skills","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/compute":{"get":{"operationId":"persistentAgentClawderComputeGet","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string","maxLength":200}},{"name":"conversation_id","in":"query","schema":{"type":"string","maxLength":519}}],"responses":{"200":{"description":"Requester-authorized paired computer choices for a new thread","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderComputeView"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/computer":{"get":{"operationId":"persistentAgentClawderComputer","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent workspace","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderComputer"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/computer/connect":{"post":{"operationId":"persistentAgentClawderComputerConnect","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Private computer connection","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderComputerConnection"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Preparing computer control","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderComputerConnection"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{}}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/computer/egress":{"post":{"operationId":"connectBrowserEgressClawderAgent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Short-lived private browser egress connection","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderComputerConnection"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"prepare":{"type":"boolean"}},"required":["prepare"]}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/computer/frame":{"get":{"operationId":"persistentAgentClawderComputerFrame","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current computer frame","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"image/jpeg":{"schema":{"type":"string","format":"binary"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/computer/start":{"post":{"operationId":"persistentAgentClawderComputerStart","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent workspace","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderComputer"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Agent workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderComputer"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{},"required":[]}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/coordination":{"get":{"operationId":"persistentAgentThreadCoordination","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Recent root tasks issued by this thread, including durable waits and reports","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["tasks","next_cursor"],"properties":{"next_cursor":{"type":["string","null"]},"tasks":{"type":"array","items":{"$ref":"#/components/schemas/ClawderThreadTask"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/coordination/{task_id}/stop":{"post":{"operationId":"persistentAgentThreadTaskStop","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Stop retained for exact-run delivery; execution may still be stopping"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["include_source"],"properties":{"include_source":{"type":"boolean"}}}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/coordination/{task_id}/waits":{"get":{"operationId":"persistentAgentThreadTaskWaits","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"A bounded page of this task's waits","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderThreadWaitPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/email":{"get":{"operationId":"clawderAgentEmailInbox","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The agent's inbox","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderAgentEmailInbox"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Not allowed to read this agent's mail"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read a native agent's email inbox, received and sent","description":"The agent's own address and the mail it received, newest first, as entries with a short preview. Only the agent's owner and people granted manager may read it; others get 403.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/email/{message_id}":{"get":{"operationId":"clawderAgentEmailMessage","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The message as a plain-text document","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderAgentEmailMessage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Not allowed to read this agent's mail"},"404":{"description":"No such message, or it expired"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read one email a native agent received, as plain text","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/environment":{"get":{"operationId":"persistentAgentEnvironmentGet","tags":["organizations","Persistent Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent environment metadata; values are never returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentEnvironment"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true},"patch":{"operationId":"persistentAgentEnvironmentPatch","tags":["organizations","Persistent Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent environment metadata; values are never returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentEnvironment"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentEnvironmentInput"}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/events":{"get":{"operationId":"clawder_events_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"query","schema":{"type":"string","default":"main"}},{"name":"device_activity_providers","in":"query","description":"Comma-separated device preview providers understood by this client. Omitted retains Codex-only compatibility; current clients send codex,roder,claude. Does not grant execution access.","schema":{"type":"string","default":"codex"}}],"responses":{"200":{"description":"Native conversation event stream","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"text/event-stream":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent access or experiment gate unavailable"},"404":{"description":"Authorized V2 agent not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"503":{"description":"Worker is unavailable before the event stream opens.","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentClawderUnavailable"}}}}},"security":[{"bearerAuth":[]}],"summary":"Observe native V2 conversation tokens and committed messages","description":"Authenticated finite SSE stream. Snapshot precedes live native deltas. Reconnect obtains an atomic native snapshot; no replay cursor is required. Authorization is checked on every frame. Events are snapshot, delta, message, run, browser, agent_browser, ui_action, device, reasoning, heartbeat, renew and error. A renew frame precedes a planned end of the stream; reconnect at once rather than backing off.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/input_delivery":{"get":{"operationId":"clawder_input_delivery_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Composal-Requester-Id","in":"header","description":"Fence a retained operation to its original authenticated user; never grants authority.","schema":{"type":"string","maxLength":200}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"query","schema":{"type":"string","default":"main"}},{"name":"requester_membership_id","in":"query","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Rails custody or native acknowledgement for this exact submission; waiting does not prove native acceptance","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderInputReceipt"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Current agent access is required"},"404":{"description":"No delivery belongs to this sender and original membership"},"422":{"description":"Invalid input key or original requester membership"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read the original sender's durable message delivery receipt while the worker is unavailable","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/inputs":{"post":{"operationId":"clawder_inputs_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Composal-Requester-Id","in":"header","description":"Fence a retained operation to its original authenticated user; never grants authority.","schema":{"type":"string","maxLength":200}},{"name":"X-Composal-Input-Delivery","in":"header","description":"Advertise support for waiting delivery custody. Without this header, waiting retains the legacy retryable 503 contract; 202 always means native acknowledged.","schema":{"type":"string","enum":["durable"]}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Previously accepted run receipt or completed control. Native /stop returns cancellation details without a new run_id; observe the affected runs for their final state.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderInputReceipt"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent messaging access or experiment gate unavailable"},"404":{"description":"Authorized V2 agent not found"},"422":{"description":"Invalid message"},"502":{"description":"Bad gateway"},"202":{"description":"Message held durably by Rails or acknowledged by native runtime. Waiting does not prove native acceptance; poll input_delivery until acknowledged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentClawderInputReceipt"}}}},"409":{"description":"The key belongs to another message, the runtime changed, or the agent's personal plan cannot bill this message","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentClawderInputConflict"}}}},"429":{"description":"Pending delivery capacity reached; this new input was not queued"},"503":{"description":"Delivery is unconfirmed; preserve the original key and body for reconciliation.","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentClawderUnavailable"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Submit a message or immediate native control to OpenClaw","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/integrations":{"get":{"operationId":"clawderAgentIntegrationsGet","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"catalog_q","in":"query","description":"Search addable providers across the agent's authorized catalog, independently of account filters and pages. An empty string lists all addable providers.","schema":{"type":"string","maxLength":200}},{"name":"q","in":"query","schema":{"type":"string","maxLength":200}},{"name":"toolkit","in":"query","schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Organization accounts available to this V2 agent","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderAgentIntegrations"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Not allowed"},"404":{"description":"Not found or disabled"},"422":{"description":"Invalid connection selection"},"502":{"description":"Bad gateway"},"409":{"description":"Configuration changed; reload before retrying"}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"deprecated":true},"post":{"operationId":"clawderAgentIntegrationsPost","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"q","in":"query","schema":{"type":"string","maxLength":200}},{"name":"toolkit","in":"query","schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Organization accounts available to this V2 agent","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderAgentIntegrations"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Not allowed"},"404":{"description":"Not found or disabled"},"422":{"description":"Invalid connection selection"},"502":{"description":"Bad gateway"},"409":{"description":"Configuration changed; reload before retrying"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderAgentIntegrationSelection"}}}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/interactions":{"get":{"operationId":"clawder_interactions_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"query","required":true,"schema":{"$ref":"#/components/schemas/PersistentAgentClawderInteraction/properties/conversation_id"}},{"name":"ids[]","in":"query","required":false,"description":"Explicit interaction IDs. When omitted, Rails selects up to 50 skill-share offers for this target and conversation, prioritizing the oldest unexpired awaiting or processing offers, then recent terminal receipts. Answering open offers reveals the next batch.","style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":50,"items":{"$ref":"#/components/schemas/PersistentAgentClawderInteraction/properties/id"}}}],"responses":{"200":{"description":"Current authorized interaction states in the explicit conversation","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["interactions"],"properties":{"interactions":{"type":"array","maxItems":50,"items":{"$ref":"#/components/schemas/PersistentAgentClawderInteraction"}}}}}}},"401":{"description":"Authentication required"},"403":{"description":"Agent access or experiment gate unavailable, or visible interaction lacks current operation authority"},"404":{"description":"Authorized agent, conversation, or interaction not found; cross-scope IDs disclose nothing"},"422":{"description":"Invalid conversation, interaction IDs, revision, confirmation answer, or idempotency key"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read a bounded set of authorized interaction states","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/interactions/{request_id}":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_clawder_interactions_request_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"request_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"query","required":true,"schema":{"$ref":"#/components/schemas/PersistentAgentClawderInteraction/properties/conversation_id"}}],"responses":{"200":{"description":"Current authorized interaction state and durable response receipt","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderInteraction"}}}},"401":{"description":"Authentication required"},"403":{"description":"Agent access or experiment gate unavailable, or visible interaction lacks current operation authority"},"404":{"description":"Authorized agent, conversation, or interaction not found; cross-scope IDs disclose nothing"},"422":{"description":"Invalid conversation, interaction IDs, revision, confirmation answer, or idempotency key"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read an authorized interaction and its current capabilities","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/interactions/{request_id}/cancel":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_clawder_interactions_request_id_cancel","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"request_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Stable unique operation key; reuse only for the identical request, including expected versions.","schema":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Interaction cancelled, or durable cancellation receipt replayed","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderInteraction"}}},"headers":{"Operation-Receipt-Id":{"required":true,"description":"Durable operation receipt ID; unchanged on an identical authorized replay","schema":{"type":"string"}}}},"401":{"description":"Authentication required"},"403":{"description":"Agent access or experiment gate unavailable, or visible interaction lacks current operation authority"},"404":{"description":"Authorized agent, conversation, or interaction not found; cross-scope IDs disclose nothing"},"422":{"description":"Invalid conversation, interaction IDs, revision, confirmation answer, or idempotency key"},"502":{"description":"Bad gateway"},"409":{"description":"Stale revision, competing decision, or changed key/body; current state is returned only when readable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentClawderInteractionConflict"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderInteractionCancelInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Cancel an awaiting interaction without stopping a native run","description":"Requires current agent state-write authority. Cannot undo an accepted response or continuation. An identical authorized replay returns the same durable operation receipt.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/interactions/{request_id}/connect":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_clawder_interactions_request_id_connect","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"request_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Bound setup and transient secure authorization link","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["interaction","redirect_url","expires_at"],"properties":{"interaction":{"$ref":"#/components/schemas/PersistentAgentClawderInteraction"},"redirect_url":{"type":["string","null"],"format":"uri","description":"Null only when no-auth setup is already connected"},"expires_at":{"type":["string","null"],"format":"date-time"}}}}}},"401":{"description":"Authentication required"},"403":{"description":"Agent access or experiment gate unavailable, or visible interaction lacks current operation authority"},"404":{"description":"Authorized agent, conversation, or interaction not found; cross-scope IDs disclose nothing"},"422":{"description":"Invalid conversation, interaction IDs, revision, confirmation answer, or idempotency key"},"502":{"description":"Bad gateway"},"409":{"description":"Setup changed or authorization is already in progress"},"503":{"description":"Authorization outcome unavailable; refresh before retrying"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderInteractionCancelInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Start a bound organization account authorization from chat","description":"Organization administrators only. Creates one local connection per interaction; a lost authorization link is not replayable. Refresh the interaction before explicitly retrying an expired attempt. The transient redirect URL must never enter transcript, analytics or decision persistence. Connecting grants no agent access.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/interactions/{request_id}/responses":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_clawder_interactions_request_id_responses","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"request_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Stable unique operation key; reuse only for the identical request, including expected versions.","schema":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Previously accepted durable response receipt; no effects repeated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderInteraction"}}},"headers":{"Operation-Receipt-Id":{"required":true,"description":"Durable operation receipt ID; unchanged on an identical authorized replay","schema":{"type":"string"}}}},"401":{"description":"Authentication required"},"403":{"description":"Agent access or experiment gate unavailable, or visible interaction lacks current operation authority"},"404":{"description":"Authorized agent, conversation, or interaction not found; cross-scope IDs disclose nothing"},"422":{"description":"Invalid conversation, interaction IDs, revision, confirmation answer, or idempotency key"},"502":{"description":"Bad gateway"},"202":{"description":"New response durably accepted; continuation delivery is pending","headers":{"Operation-Receipt-Id":{"required":true,"description":"Durable operation receipt ID; unchanged on an identical authorized replay","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentClawderInteraction"}}}},"409":{"description":"Stale revision, competing decision, or changed key/body; current state is returned only when readable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentClawderInteractionConflict"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderInteractionResponseInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Accept an authenticated decision for a registered interaction","description":"Requires current conversation messaging authority. The first eligible response wins; confirmed false is a verified answer, not cancellation. Retry only the identical body and key; replay rechecks current read authority and never repeats effects.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/library":{"get":{"operationId":"clawderLibrary","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Agent sidebar response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderLibrary"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/library/{artifact_id}/download":{"get":{"operationId":"clawderLibraryDownload","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Generated file","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/lifecycle":{"get":{"operationId":"persistentAgentClawderLifecycleGet","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Native agent lifecycle response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderLifecycle"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true},"post":{"operationId":"persistentAgentClawderLifecyclePost","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Native agent lifecycle response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderLifecycle"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"heartbeat_enabled":{"type":"boolean"}},"required":["heartbeat_enabled"]}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/local_threads":{"post":{"operationId":"clawderLocalThreadAdopt","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Authorized native session adoption receipt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceControlOperationResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderLocalThreadAdoptionInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Add an existing native session to this agent","description":"Uses the current computer owner and agent grant. Submits no model prompt. Keep the same key and exact request after uncertain delivery; read its receipt instead of repeating adoption.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/local_threads/operations/{operation_id}":{"get":{"operationId":"clawderLocalThreadAdoptionOperationGet","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authorized native session adoption receipt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceControlOperationResponse"}}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/local_threads/{local_thread_id}":{"get":{"operationId":"clawderLocalThreadGet","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"local_thread_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authorized local coding-agent thread","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderLocalThreadResponse"}}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/local_threads/{local_thread_id}/deliveries/{delivery_id}":{"get":{"operationId":"clawderLocalThreadDeliveryReceiptGet","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"local_thread_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"delivery_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"expected_version","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Original preference version retained with an unconfirmed decision."}],"responses":{"200":{"description":"Original requester-scoped Relay delivery consent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRelayDeliveryRecoveryResponse"}}}}},"security":[{"bearerAuth":[]}],"deprecated":true},"put":{"operationId":"clawderLocalThreadDeliveryDecisionPut","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"local_thread_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"delivery_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Original requester-scoped Relay delivery consent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRelayDeliveryReceiptResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentRelayDeliveryDecisionInput"}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/local_threads/{local_thread_id}/delivery_policy":{"get":{"operationId":"clawderLocalThreadDeliveryPolicyGet","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"local_thread_id","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"cursor","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Original requester-scoped Relay delivery consent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRelayDeliveryPolicyResponse"}}}}},"security":[{"bearerAuth":[]}],"deprecated":true},"put":{"operationId":"clawderLocalThreadDeliveryPolicyPut","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"local_thread_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Original requester-scoped Relay delivery consent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRelayDeliveryPolicyResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentRelayDeliveryPolicyInput"}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/local_threads/{local_thread_id}/operations":{"post":{"operationId":"clawderLocalThreadOperationPost","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"local_thread_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Authorized local coding-agent thread","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceControlOperationResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderLocalThreadInput"}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/local_threads/{local_thread_id}/operations/{operation_id}":{"get":{"operationId":"clawderLocalThreadOperationGet","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"local_thread_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authorized local coding-agent thread","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceControlOperationResponse"}}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/local_threads/{local_thread_id}/relay":{"delete":{"operationId":"clawderLocalThreadDisconnectRelay","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"local_thread_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Relay authorization disconnected","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderLocalThreadResponse"}}}},"403":{"description":"Current message access required"},"404":{"description":"Current attributed thread required"}},"security":[{"bearerAuth":[]}],"summary":"Disconnect one attributed native thread from Relay","description":"Idempotently revokes Relay admission for this exact source before closing its transport. Native history and model work are retained. Requires current requester and source access. Does not revoke other threads or the computer.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/local_threads/{local_thread_id}/task":{"get":{"operationId":"clawderLocalThreadTaskResultGet","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"local_thread_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string","maxLength":200}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":20}}],"responses":{"200":{"description":"Current authorized native task result receipts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRelayTaskResponse"}}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/marked_read":{"post":{"operationId":"clawder_marked_read_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Read recorded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["surface","source"],"properties":{"surface":{"type":"string","enum":["web","desktop"]},"source":{"type":"string","enum":["mission_control","conversation"]}}}}}},"security":[{"bearerAuth":[]}],"summary":"Record that the viewer cleared this agent from their inbox, without any reply content","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/message_image":{"get":{"operationId":"get_persistent_agent_clawder_message_image","tags":["organizations","Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"message_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"index","in":"query","required":true,"schema":{"type":"integer","minimum":0,"maximum":7}}],"responses":{"200":{"description":"Private message image","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"image/png":{"schema":{"type":"string","format":"binary"}},"image/jpeg":{"schema":{"type":"string","format":"binary"}},"image/webp":{"schema":{"type":"string","format":"binary"}},"image/gif":{"schema":{"type":"string","format":"binary"}},"image/avif":{"schema":{"type":"string","format":"binary"}}}},"401":{"description":"Authentication required"},"403":{"description":"Current agent access required"},"404":{"description":"Message image unavailable"},"422":{"description":"Invalid message image request"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Download an image from a visible native conversation message","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/model":{"patch":{"operationId":"persistentAgentClawderModelPatch","tags":["organizations","Persistent Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Saved agent model","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderAgentModel"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderAgentModelInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Save the model and effort the agent uses by default","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/pull_requests":{"get":{"operationId":"clawderPullRequests","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string","maxLength":50000}}],"responses":{"200":{"description":"Pull requests with current GitHub status and owning conversations","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderPullRequests"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Pull requests created or monitored across agent threads","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/relay/activity":{"get":{"operationId":"controlActivity","tags":["organizations","Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"kind","in":"query","schema":{"type":"string","enum":["native","relay"],"default":"native"}},{"name":"cursor","in":"query","schema":{"type":"string","maxLength":200}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"Bounded receipt metadata without copied prompts or results","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["activity"],"properties":{"activity":{"$ref":"#/components/schemas/ControlActivity"}}}}}},"401":{"description":"Authentication required"},"403":{"description":"Current requester access is required"},"404":{"description":"Agent or activity cursor unavailable"},"422":{"description":"Invalid activity selection"}},"security":[{"bearerAuth":[]}],"summary":"List current-requester coding and Relay receipt metadata","description":"Reads retained receipts under current membership, grant and pairing authority. Native and Relay streams have independent cursors. Completed turns.start receipts confirm native acceptance. This read uses Rails storage and remains available when the Relay worker is offline.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/relay/files/{file_id}":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_clawder_relay_files_file_id_","tags":["organizations","Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]{1,30}$"}}],"responses":{"200":{"description":"Receipt-bound file download","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelayFileDownload"}}}},"403":{"description":"Current requester access required"},"404":{"description":"Agent unavailable"},"422":{"description":"Invalid file selection"},"503":{"description":"File unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Get a fresh authorized download for a shared Relay file","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/relay/inspection":{"get":{"operationId":"relayOperatorInspection","tags":["organizations","Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"view","in":"query","required":true,"schema":{"type":"string","enum":["agents","channels","conversations","channel","dm","thread"]}},{"name":"target","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":4096}},{"name":"before","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200}},{"name":"after","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Thread reply continuation; replies are oldest first."}],"responses":{"200":{"description":"Authorized bounded room observation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelayInspection"}}}},"403":{"description":"Current requester access required"},"404":{"description":"Room or conversation unavailable"},"422":{"description":"Invalid inspection selection"},"503":{"description":"Observation unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Observe a bounded page of your private Relay room","description":"Read-only owner observation of participants, channels, direct conversations and message history. Never acknowledges messages, creates an agent presence session or changes sender identity. Native thread links require current source access.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/relay/operations":{"post":{"operationId":"relayOperatorCall","tags":["organizations","Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Authorized operator result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelayOperatorReceipt"}}}},"401":{"description":"Authentication required"},"403":{"description":"Current requester access is required"},"404":{"description":"Agent or operator receipt unavailable"},"409":{"description":"Request key belongs to different arguments"},"422":{"description":"Invalid bounded request"},"503":{"description":"Relay unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RelayOperatorCall"}}}},"security":[{"bearerAuth":[]}],"summary":"Call a Relay tool once under the real operator identity","description":"The server chooses the room from the organization, V2 agent, signed-in user and current membership. Human callers use a distinct operator participant. Current access is checked before dispatch and result release. Retain the same key for the exact intent after uncertain delivery. An operation state of completed means the MCP call returned, not that a recipient read or completed a task.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/relay/operations/{operation_id}":{"get":{"operationId":"relayOperatorOperation","tags":["organizations","Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authorized operator result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelayOperatorReceipt"}}}},"401":{"description":"Authentication required"},"403":{"description":"Current requester access is required"},"404":{"description":"Agent or operator receipt unavailable"},"409":{"description":"Request key belongs to different arguments"},"422":{"description":"Invalid bounded request"},"503":{"description":"Relay unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Read an operator receipt without replaying the tool","description":"The server chooses the room from the organization, V2 agent, signed-in user and current membership. Human callers use a distinct operator participant. Current access is checked before dispatch and result release.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/relay/resource":{"get":{"operationId":"relayOperatorResource","tags":["organizations","Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"uri","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":1024,"pattern":"^relay://"}}],"responses":{"200":{"description":"Authorized operator result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelayOperatorResource"}}}},"401":{"description":"Authentication required"},"403":{"description":"Current requester access is required"},"404":{"description":"Agent or operator receipt unavailable"},"409":{"description":"Request key belongs to different arguments"},"422":{"description":"Invalid bounded request"},"503":{"description":"Relay unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Read a Relay resource without acknowledging messages","description":"The server chooses the room from the organization, V2 agent, signed-in user and current membership. Human callers use a distinct operator participant. Current access is checked before dispatch and result release.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/relay/resources":{"get":{"operationId":"relayOperatorResources","tags":["organizations","Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authorized operator result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelayOperatorResources"}}}},"401":{"description":"Authentication required"},"403":{"description":"Current requester access is required"},"404":{"description":"Agent or operator receipt unavailable"},"409":{"description":"Request key belongs to different arguments"},"422":{"description":"Invalid bounded request"},"503":{"description":"Relay unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Discover Relay resources in the current requester room","description":"The server chooses the room from the organization, V2 agent, signed-in user and current membership. Human callers use a distinct operator participant. Current access is checked before dispatch and result release.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/relay/tools":{"get":{"operationId":"relayOperatorTools","tags":["organizations","Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authorized operator result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelayOperatorTools"}}}},"401":{"description":"Authentication required"},"403":{"description":"Current requester access is required"},"404":{"description":"Agent or operator receipt unavailable"},"409":{"description":"Request key belongs to different arguments"},"422":{"description":"Invalid bounded request"},"503":{"description":"Relay unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Discover first-party Relay tools as the signed-in operator","description":"The server chooses the room from the organization, V2 agent, signed-in user and current membership. Human callers use a distinct operator participant. Current access is checked before dispatch and result release.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/repositories":{"get":{"operationId":"clawderAgentRepositoriesGet","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"q","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Repository grants, editor choices and optimistic version","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderRepositories"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent management authority required"},"404":{"description":"Agent not found or disabled"},"422":{"description":"Invalid repository selection"},"502":{"description":"Bad gateway"},"409":{"description":"Configuration changed; read current version"}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"summary":"Read selected V2 work repositories","deprecated":true},"put":{"operationId":"clawderAgentRepositoriesPut","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Repository grants, editor choices and optimistic version","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderRepositories"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent management authority required"},"404":{"description":"Agent not found or disabled"},"422":{"description":"Invalid repository selection"},"502":{"description":"Bad gateway"},"409":{"description":"Configuration changed; read current version"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["work_repositories","expected_version"],"properties":{"work_repositories":{"type":"array","maxItems":20,"items":{"$ref":"#/components/schemas/PersistentAgentWorkRepository"}},"expected_version":{"type":"integer","minimum":0}}}}}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"summary":"Replace selected V2 work repositories","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/repositories/{repository}/environment":{"post":{"operationId":"clawderAgentRepositoryEnvironmentPrepare","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"repository","in":"path","required":true,"schema":{"type":"string"}},{"in":"path","name":"repository","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"What this call prepared. A build still running at the default branch head is building even while thread sandboxes start from an earlier ready revision, which the repositories read shows. Repeated calls reuse the same revision, running setup run or running branch check","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["environment"],"properties":{"environment":{"$ref":"#/components/schemas/ClawderRepositoryEnvironment"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent management authority required"},"404":{"description":"Agent or granted repository not found"},"409":{"description":"The setup thread could not start, for example at the thread sandbox limit"},"422":{"description":"The recipe is invalid, setup needs a private bot, write access and a GitHub connection, the branch was not found, or another setup run or branch check holds the repository"},"429":{"description":"Too many prepare requests; wait before preparing again"},"503":{"description":"The bot's runtime is unavailable; retry after Retry-After"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"branch":{"type":"string","maxLength":255,"description":"A branch other than the default one. The bot builds the recipe on it and checks the image on a fresh machine, on a thread it reports in. Nothing is promoted, so thread sandboxes keep their current environment."}}}}}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"summary":"Build a granted repository's sandbox environment at its default branch head, start a setup run that writes its recipe, or check the recipe on another branch","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/routines":{"get":{"operationId":"clawderRoutines","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Agent sidebar response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderRoutines"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/routines/{routine_id}":{"post":{"operationId":"clawderRoutineUpdate","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"routine_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent sidebar response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderRoutineUpdated"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"enabled":{"type":"boolean"}},"required":["enabled"]}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/runs/{run_id}":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_clawder_runs_run_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"query","schema":{"type":"string","default":"main"}}],"responses":{"200":{"description":"Native run state","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderRun"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent access or experiment gate unavailable"},"404":{"description":"Authorized V2 agent or run not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"503":{"description":"Agent connection unavailable; a submission may already have reached native custody. Preserve its input key.","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentClawderUnavailable"}}}}},"security":[{"bearerAuth":[]}],"summary":"Read native OpenClaw run completion","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/runtime":{"get":{"operationId":"agentRuntimeGet","tags":["organizations","Persistent Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent sandbox resources","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentRuntime"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true},"patch":{"operationId":"agentRuntimePatch","tags":["organizations","Persistent Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent sandbox resources","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentRuntime"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentRuntimeInput"}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/runtime/reset":{"post":{"operationId":"agentRuntimeReset","tags":["organizations","Persistent Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent sandbox resources","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentRuntime"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentRuntimeResetInput"}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/sandbox":{"get":{"operationId":"agentSandboxSettingsGet","tags":["organizations","Persistent Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Sandbox configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSandboxSettings"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true},"put":{"operationId":"agentSandboxSettingsPut","tags":["organizations","Persistent Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Sandbox configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSandboxSettings"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSandboxSelectionInput"}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/settings":{"get":{"operationId":"persistentAgentClawderSettingsGet","tags":["organizations","Persistent Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSettings"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true},"patch":{"operationId":"persistentAgentClawderSettingsPatch","tags":["organizations","Persistent Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSettings"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSettingsInput"}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/sites":{"get":{"operationId":"clawderSites","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Agent sidebar response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSites"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/skills":{"get":{"operationId":"persistentAgentClawderSkillsGet","tags":["organizations","Persistent Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSkills"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true},"post":{"operationId":"persistentAgentClawderSkillsPost","tags":["organizations","Persistent Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSkills"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Managed skill settings accepted for a replacement runtime revision. The catalog remains the last observed native state until qualification.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderSkills"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSkillInput"}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/slack":{"post":{"operationId":"clawderAgentSlackUpdate","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent Slack settings","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"slack":{"$ref":"#/components/schemas/ClawderAgentSlack"},"message":{"type":"string"}},"required":["slack","message"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent manager and organization admin required"},"404":{"description":"Not found"},"422":{"description":"Invalid Slack settings"},"502":{"description":"Bad gateway"},"503":{"description":"Slack unavailable; retry the same operation"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderAgentSlackUpdate"}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/slack/app":{"post":{"operationId":"updateClawderAgentSlackApp","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent Slack settings","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"slack":{"$ref":"#/components/schemas/ClawderAgentSlack"},"message":{"type":"string"}},"required":["slack","message"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent manager and organization admin required"},"404":{"description":"Not found"},"422":{"description":"Invalid Slack settings"},"502":{"description":"Bad gateway"},"503":{"description":"Slack unavailable; retry the same operation"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderAgentSlackAppUpdate"}}}},"security":[{"bearerAuth":[]}],"summary":"Configure a dedicated Slack app for this agent","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/slack/channels":{"get":{"operationId":"clawderSlackChannels","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":2000}},{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Channels visible to this agent bot, with Slack pagination","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSlackChannels"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent publishing authority required"},"404":{"description":"Not found"},"422":{"description":"Slack rejected the channel listing"},"502":{"description":"Bad gateway"},"503":{"description":"Slack unavailable or rate limited","headers":{"Retry-After":{"schema":{"type":"string"},"description":"Wait this many seconds before retrying"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"retry_after_seconds":{"type":"integer","minimum":1,"maximum":3600}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/subagents":{"get":{"operationId":"persistentAgentClawderSubagents","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"query","schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Agent workspace","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSubagents"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/subscriptions":{"get":{"operationId":"persistentAgentSubscriptionsGet","tags":["organizations","Persistent Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent subscription settings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSubscriptionSettings"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true},"post":{"operationId":"persistentAgentSubscriptionsPost","tags":["organizations","Persistent Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent subscription settings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSubscriptionSettings"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Enterprise subscription selection accepted; the new revision must qualify before use.","content":{"application/json":{"schema":{"type":"object","required":["available","pending","selection_ready"],"properties":{"available":{"type":"boolean"},"pending":{"type":"boolean","const":true},"selection_ready":{"type":"boolean","const":false},"reason":{"type":["string","null"]},"can_make_private":{"type":"boolean"},"sharing_version":{"type":"integer"},"profile_id":{"type":"string","description":"Canonical saved account prepared for this selection. Use this identity to qualify the subsequent ready read."}},"additionalProperties":false}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSubscriptionInput"}}}},"security":[{"bearerAuth":[]}],"description":"The private agent's owner may use every action. On a shared agent outside a Project, its managers may send `platform` with `sharing_version` as `version` to return it to Composal billing; the response is the unavailable settings.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/subscriptions/models":{"get":{"operationId":"persistentAgentSubscriptionModelsGet","tags":["organizations","Persistent Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"profile_id","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Account model catalog","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["models"],"properties":{"models":{"$ref":"#/components/schemas/ClawderSubscriptions/properties/models"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"description":"Public model catalog for one of the private agent owner’s saved ChatGPT accounts. Does not attach the account or change billing.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/teammates":{"get":{"operationId":"clawder_teammates_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"q","in":"query","schema":{"type":"string","maxLength":128}}],"responses":{"200":{"description":"Shared team agents","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["agents","has_more","browsers"],"properties":{"has_more":{"type":"boolean"},"agents":{"type":"array","maxItems":100,"items":{"$ref":"#/components/schemas/PersistentAgentClawderTeammate"}},"browsers":{"type":"array","maxItems":2,"description":"Browser mentions matching the query. @browser is the sender's Composal Desktop browser, offered where computers can be connected; @browser-remote is the agent's cloud browser.","items":{"type":"object","additionalProperties":false,"required":["name","label","description"],"properties":{"name":{"type":"string","enum":["browser","browser-remote"]},"label":{"type":"string"},"description":{"type":"string"}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Discover shared team agents available for collaboration","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/terminal/connect":{"post":{"operationId":"connectTerminalClawderAgent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Private computer connection","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderComputerConnection"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Preparing computer control","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderComputerConnection"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{}}}}},"security":[{"bearerAuth":[]}],"summary":"Connect to the agent sandbox terminal","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/threads":{"get":{"operationId":"persistentAgentClawderThreadsGet","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"archived","in":"query","schema":{"type":"string","enum":["exclude","only"],"default":"exclude"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"conversation_id","in":"query","schema":{"type":"string"}},{"name":"local_cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Native agent lifecycle response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderThreads"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true},"post":{"operationId":"persistentAgentClawderThreadsPost","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"Native agent lifecycle response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderThreadCreated"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Native agent lifecycle response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentClawderThreadCreated"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"title":{"type":"string","maxLength":200},"message":{"type":"string","minLength":1,"maxLength":32768,"description":"The thread's first message. Without a title, Rails names the thread from it; the message is then sent as the thread's first turn under a key derived from Idempotency-Key, so a retried creation does not send it twice."},"requester_membership_id":{"type":"string","minLength":1,"maxLength":200},"execution":{"oneOf":[{"type":"object","additionalProperties":false,"required":["kind","device_id","path"],"properties":{"kind":{"type":"string","const":"device_folder"},"device_id":{"type":"string","minLength":1,"maxLength":200},"path":{"type":"string","minLength":1,"maxLength":4096}}},{"type":"object","additionalProperties":false,"required":["kind"],"properties":{"kind":{"type":"string","const":"sandbox"},"repository_id":{"type":"string","minLength":1,"maxLength":200,"description":"A granted, available repository. With a ready environment the machine starts from its image, clones it and runs its update commands; without one it clones it onto the default thread image."},"harness":{"type":"string","enum":["codex","claude","pi"],"default":"codex","description":"The coding agent for the thread's coding turns, fixed at creation. Coding agents other than codex need repository_id."}}}]},"parent_conversation_id":{"type":"string","minLength":1,"maxLength":519,"description":"Source conversation belonging to this agent."},"inherit_context":{"type":"boolean","description":"Include the source conversation through its last completed reply. Defaults to true when a source is supplied."}},"required":[],"if":{"required":["execution"],"properties":{"execution":{"properties":{"kind":{"const":"device_folder"}}}}},"dependentRequired":{"inherit_context":["parent_conversation_id"]},"then":{"required":["requester_membership_id"]}}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/threads/{thread_id}/archive":{"post":{"operationId":"persistentAgentClawderThreadArchive","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"thread_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Thread archive state confirmed; history is retained","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["thread_id","archived"],"properties":{"thread_id":{"type":"string"},"archived":{"type":"boolean"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["archived"],"properties":{"archived":{"type":"boolean"}}}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/threads/{thread_id}/compact":{"post":{"operationId":"persistentAgentClawderThreadCompact","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"thread_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Native agent lifecycle response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderCompacted"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{},"required":[]}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/threads/{thread_id}/previews":{"post":{"operationId":"persistentAgentClawderThreadPreview","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"thread_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Private preview URL","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["url","expires_at"],"properties":{"url":{"type":"string"},"expires_at":{"type":["string","null"],"format":"date-time"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"port":{"type":"integer","minimum":1,"maximum":65535}},"required":["port"]}}}},"security":[{"bearerAuth":[]}],"description":"Opens a private preview of one declared service port on a sandbox thread's machine. Through the preview proxy the URL is the port's stable address and expires_at is null; otherwise the URL carries a short-lived token, and opening it once leaves a preview cookie in the browser.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/transcription_session":{"post":{"operationId":"createClawderTranscriptionSession","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Ephemeral OpenAI transcription client secret (never the provider API key)","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderTranscriptionSession"}}},"headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent messaging is not authorized or available"},"404":{"description":"Organization or agent not visible to this user"},"422":{"description":"Invalid or nonempty request body"},"502":{"description":"Bad gateway"},"429":{"description":"Too many transcription sessions; retry after 60 seconds"},"503":{"description":"Transcription is not configured or the provider is unavailable; no provider details are returned","content":{"application/json":{"schema":{"type":"object","required":["error","code"],"properties":{"error":{"type":"string"},"code":{"type":"string","const":"transcription_unavailable"}},"additionalProperties":false}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{}}}}},"security":[{"bearerAuth":[]}],"summary":"Create a short-lived push-to-talk transcription credential","description":"Requires the same message permission and active, ready Clawder agent as sending a message. Uses the platform OpenAI credential server-side; only the ephemeral client secret is returned. No audio or transcript is sent to this endpoint. The secret expires after 60 seconds for establishing a connection; an established provider session may outlive it. Limited to 20 requests per user per minute.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/usage":{"get":{"operationId":"persistentAgentClawderUsage","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Selected private agent subscription quota and conversation usage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderUsage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/verify_projects":{"get":{"operationId":"clawderAgentVerifyProjectsGet","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Granted Verify projects, choices and optimistic version","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderVerifyProjects"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent access required"},"404":{"description":"Agent not found or disabled"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"summary":"Read the Verify projects a V2 agent may use","deprecated":true},"put":{"operationId":"clawderAgentVerifyProjectsPut","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Granted Verify projects, choices and optimistic version","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderVerifyProjects"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent management and Verify admin authority required"},"404":{"description":"Agent not found or disabled"},"422":{"description":"Invalid project selection"},"502":{"description":"Bad gateway"},"409":{"description":"Configuration changed; read current version"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["verify_projects","expected_version"],"properties":{"verify_projects":{"type":"array","maxItems":32,"items":{"type":"string"}},"expected_version":{"type":"integer","minimum":0}}}}}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"summary":"Replace the Verify projects a V2 agent may use","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/waits/{wait_id}/stop":{"post":{"operationId":"persistentAgentThreadWaitStop","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"wait_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Wait cancelled; its child tasks continue"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/warm":{"post":{"operationId":"clawder_warm_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Preparation requested or not needed"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["conversation_id"],"properties":{"conversation_id":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Prepare a conversation's runtime when someone who can send opens it, without calling a model","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/webhooks":{"post":{"operationId":"clawderWebhookCreate","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"in":"header","name":"Idempotency-Key","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created connection; signing key is shown once","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderWebhookSetup"}}}},"401":{"description":"Authentication required"},"403":{"description":"Bot management or inbox access required"},"409":{"description":"Idempotency key belongs to different configuration"},"422":{"description":"Invalid configuration"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWebhookCreate"}}}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"summary":"Add a named webhook app feeding this bot's inbox","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/webhooks/{endpoint_id}":{"get":{"operationId":"clawderWebhookRead","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"endpoint_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Connection metadata without secrets or event content","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWebhookDetail"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Source not found or not readable"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"summary":"Read a webhook app and its twenty latest receipt outcomes","deprecated":true},"patch":{"operationId":"clawderWebhookUpdate","tags":["organizations","Persistent agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"endpoint_id","in":"path","required":true,"schema":{"type":"string"}},{"in":"header","name":"Idempotency-Key","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated connection; only a new rotation reveals a signing key","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWebhookSetup"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Bot management authority required"},"404":{"description":"Source not found"},"422":{"description":"Invalid action or revoked source"},"502":{"description":"Bad gateway"},"409":{"description":"Refresh the changed source"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["action","expected_generation"],"properties":{"action":{"type":"string","enum":["pause","resume","rotate","remove"]},"expected_generation":{"type":"integer","minimum":1}}}}}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"summary":"Pause intake, resume intake, rotate a secret or remove a webhook app","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/work/{work_id}/handled":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_clawder_work_work_id_handled","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"work_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Work handled"},"403":{"description":"Viewer cannot manage this agent"},"404":{"description":"Authorized agent or work not found"},"409":{"description":"The work has a newer revision","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Invalid request or the work does not need attention"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["revision"],"properties":{"revision":{"type":"integer","minimum":1}}}}}},"security":[{"bearerAuth":[]}],"summary":"Mark the displayed revision of failed or exception work handled so it leaves Needs attention; a newer revision needs attention again","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/workflow_proposals/{proposal}":{"get":{"operationId":"persistentAgentWorkflowProposalGet","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"proposal","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The proposal and its steps","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentWorkflowProposal"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent read access required"},"404":{"description":"The proposal is no longer available"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"description":"A workflow the agent proposed in chat with workflow_propose, checked as saving would check it.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/workflow_proposals/{proposal}/save":{"post":{"operationId":"persistentAgentWorkflowProposalSave","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"proposal","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The saved proposal","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentWorkflowProposal"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Current agent management authority required"},"404":{"description":"The proposal is no longer available"},"422":{"description":"The proposed workflow no longer passes its checks"},"502":{"description":"Bad gateway"},"409":{"description":"The proposal changed after it was reviewed (workflow_proposal_changed), the workflow changed since the proposal (workflow_proposal_stale), or the file could not be written (workflow_write_unavailable)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["digest"],"properties":{"digest":{"type":"string","pattern":"^[a-f0-9]{64}$"}}}}}},"security":[{"bearerAuth":[]}],"description":"Save exactly the proposed source as the workflow. digest names the version the person reviewed. A workflow that changed since the proposal is not replaced. Saving a proposal that is already saved changes nothing.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/workflow_runs":{"get":{"operationId":"clawderWorkflowRuns","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"workflow_path","in":"query","description":"Only runs of this workflow file","schema":{"type":"string","maxLength":160}}],"responses":{"200":{"description":"Recorded workflow runs, newest first","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWorkflowRuns"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/workflow_runs/{run_id}":{"get":{"operationId":"clawderWorkflowRun","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"A recorded workflow run and its steps","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWorkflowRunDetail"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/workflow_runs/{run_id}/answer":{"post":{"operationId":"clawderWorkflowRunAnswer","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The reopened run, whose stopped step the agent's worker runs again with the answer","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWorkflowRunDetail"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"The run is not waiting for an answer, or is waiting on a later question","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"answer":{"type":"string","maxLength":4000,"description":"The person's answer to the question the step stopped on"},"question_at":{"type":"string","format":"date-time","description":"The run's finished_at when it stopped on the question being answered; a run since stopped on another question refuses the answer"}},"required":["answer","question_at"]}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/workflow_runs/{run_id}/retry":{"post":{"operationId":"clawderWorkflowRunRetry","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The reopened run, which the agent's worker continues from its failed step","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWorkflowRunDetail"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"The run cannot be retried","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/workflow_runs/{run_id}/steps/{step_id}/output":{"get":{"operationId":"clawderWorkflowStepOutput","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"step_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The step's full recorded output","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"text/plain":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/workflow_triggers":{"get":{"operationId":"clawderWorkflowTriggers","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"What starts this agent's workflows without a chat turn","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ClawderWorkflowTrigger"}},"can_manage":{"type":"boolean"}},"required":["items","can_manage"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/workflow_triggers/{trigger_id}":{"delete":{"operationId":"clawderWorkflowTriggerRemove","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"The trigger no longer starts its workflow"}},"security":[{"bearerAuth":[]}],"deprecated":true},"get":{"operationId":"clawderWorkflowTrigger","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"A workflow's run settings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWorkflowTriggerResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true},"patch":{"operationId":"clawderWorkflowTriggerUpdate","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The changed run settings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWorkflowTriggerResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Refused","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"errors":{"type":"object","description":"Each field's errors","additionalProperties":{"type":"array","items":{"type":"string"}}}},"required":["error"]}}}},"502":{"description":"Bad gateway"},"409":{"description":"Refused","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"read_at":{"type":"string","nullable":true,"description":"The settings_changed_at you read; a change made since is refused"},"daily_limit":{"type":"integer","nullable":true,"minimum":1,"maximum":1000},"run_budget_usd":{"type":"number","nullable":true}},"required":["read_at","daily_limit","run_budget_usd"]}}}},"security":[{"bearerAuth":[]}],"description":"Change the daily limit and the most a run may spend. The next run uses them.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/workflow_triggers/{trigger_id}/pause":{"post":{"operationId":"clawderWorkflowTriggerPause","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The paused workflow's run settings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWorkflowTriggerResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"Refused","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/workflow_triggers/{trigger_id}/resume":{"post":{"operationId":"clawderWorkflowTriggerResume","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The resumed workflow's run settings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWorkflowTriggerResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"Refused","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/workflow_triggers/{trigger_id}/review":{"get":{"operationId":"clawderWorkflowTriggerReview","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The version a person last checked and the file as it is now","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"checked_source":{"type":"string","nullable":true},"source":{"type":"string","nullable":true},"digest":{"type":"string","nullable":true},"error":{"type":"string","nullable":true}},"required":["checked_source","source","digest","error"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true},"post":{"operationId":"clawderWorkflowTriggerResumeReviewed","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The resumed workflow's run settings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWorkflowTriggerResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"Refused","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"digest":{"type":"string"}},"required":["digest"]}}}},"security":[{"bearerAuth":[]}],"description":"Resume a workflow paused for an unchecked change, for the version the person reviewed.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/workflow_triggers/{trigger_id}/skipped":{"get":{"operationId":"clawderWorkflowTriggerSkipped","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Events the workflow skipped today, newest first","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"count":{"type":"integer"},"items":{"type":"array","items":{"$ref":"#/components/schemas/ClawderSkippedEvent"}}},"required":["count","items"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/workflow_triggers/{trigger_id}/skipped/{delivery_id}/run":{"post":{"operationId":"clawderWorkflowTriggerRunSkipped","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"delivery_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The started run","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"run_id":{"type":"string"}},"required":["run_id"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"Refused","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"description":"Start the workflow for a skipped event. It doesn't count against the daily limit.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/workflows":{"get":{"operationId":"persistentAgentLobsterWorkflowsGet","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Native Lobster workflow files for the selected agent","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentLobsterWorkflows"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true},"patch":{"operationId":"persistentAgentLobsterWorkflowsPatch","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated native workflow catalog","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentLobsterWorkflows"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Current agent management authority required"},"404":{"description":"Not found"},"422":{"description":"Invalid path, source, workflow, model or digest"},"502":{"description":"Bad gateway"},"409":{"description":"Workflow digest changed (workflow_changed) or the file could not be replaced (workflow_write_unavailable)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["path","source","expected_digest"],"properties":{"path":{"type":"string","pattern":"^workflows/[a-zA-Z0-9][a-zA-Z0-9._-]{0,127}\\.lobster$"},"source":{"type":"string","description":"At most 262144 UTF-8 bytes"},"expected_digest":{"type":"string","pattern":"^[a-f0-9]{64}$"}}}}}},"security":[{"bearerAuth":[]}],"description":"Replace an existing native workflow, bounded to 256 KiB UTF-8. The digest fences concurrent bridge edits, not native chat or exec writes that bypass this endpoint.","deprecated":true},"post":{"operationId":"persistentAgentLobsterWorkflowsPost","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Native workflow catalog including the new workflow","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentLobsterWorkflows"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Current agent management authority required"},"404":{"description":"Agent not found"},"409":{"description":"A workflow exists at the path (workflow_exists), an output schema exists with different content (workflow_schema_conflict), or the file could not be written (workflow_write_unavailable)"},"422":{"description":"Invalid path or unknown template"},"503":{"description":"The agent is unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["path","template"],"properties":{"path":{"type":"string","pattern":"^workflows/[a-zA-Z0-9][a-zA-Z0-9._-]{0,127}\\.lobster$"},"template":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,63}$","description":"A template id from the catalog's templates"}}}}}},"security":[{"bearerAuth":[]}],"description":"Add a catalog template as a new native workflow, with the output schemas it names. A template is added even when the agent lacks a grant it needs; its grants in the response's templates say which are missing. The response's catalog entry for the new path shows its readiness for this agent.","deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/workspaces":{"get":{"operationId":"persistentAgentWorkspaces","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Retained workspaces and reserved capacity, independent of native runtime availability","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["items","next_cursor","occupied","limit"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ThreadWorkspace"}},"next_cursor":{"type":["string","null"]},"occupied":{"type":"integer"},"limit":{"type":"integer"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/clawder/workspaces/{workspace_id}":{"post":{"operationId":"persistentAgentWorkspaceAction","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Durable workspace action; deletion is not confirmed until both resources return 404","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ThreadWorkspace"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["action"],"properties":{"action":{"type":"string","enum":["keep","delete"]}}}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/agents/{id}/manager_choices":{"get":{"operationId":"manager_choices_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"q","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Matching teammates","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false}},"has_more":{"type":"boolean"}},"required":["items","has_more"],"additionalProperties":false}}}},"401":{"description":"Authentication required"},"403":{"description":"Sharing authority required"},"404":{"description":"Organization or agent not found"},"422":{"description":"The agent is private"}},"security":[{"bearerAuth":[]}],"summary":"Search teammates who could be named managers","description":"Owner or named manager of an agent shared with the team only. Current teammates matching `q` by name or email, excluding the owner and current managers, in name order, at most 20. `has_more` says more match, so the viewer should type more."}},"/api/v1/organizations/{organization_id}/agents/{id}/managers":{"post":{"operationId":"managers_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent with its current managers","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentResponse"}}}},"401":{"description":"Authentication required"},"403":{"description":"Sharing authority required"},"404":{"description":"Organization, agent or member not found"},"422":{"description":"The owner already manages the agent, or the agent is private"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"user_id":{"type":"string"}},"required":["user_id"]}}}},"security":[{"bearerAuth":[]}],"summary":"Name a teammate who manages the agent","description":"Owner or named manager of an agent shared with the team only; a private agent refuses with 422. The teammate manages the agent and its sharing whatever teammates may do. Naming someone already named changes nothing."}},"/api/v1/organizations/{organization_id}/agents/{id}/managers/{user_id}":{"delete":{"operationId":"manager_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"The teammate no longer manages the agent"},"401":{"description":"Authentication required"},"403":{"description":"Sharing authority required"},"404":{"description":"Organization, agent or manager not found"}},"security":[{"bearerAuth":[]}],"summary":"Stop a teammate managing the agent","description":"Owner or named manager only, including a manager removing themselves. Removes the teammate's individual access grant, even after they have left the team; on an agent shared with the team they keep what every teammate may do. Returns no body, because a manager who removed themselves may no longer read the agent."}},"/api/v1/organizations/{organization_id}/agents/{id}/rename":{"patch":{"operationId":"rename_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Renamed agent with current permissions and version","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentResponse"}}}},"401":{"description":"Authentication required"},"403":{"description":"Current private-agent management authority required"},"404":{"description":"Organization or authorized agent not found"},"422":{"description":"Invalid configuration or operation"},"502":{"description":"Bad gateway"},"409":{"description":"Version or idempotency conflict; reload before starting a new operation"},"503":{"description":"Agent state temporarily unavailable. Read the agent before retrying with its current sharing_version; an already-applied rename will conflict with the old expected_version."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"expected_version":{"type":"integer","minimum":0},"name":{"type":"string","minLength":1,"maxLength":255}},"required":["expected_version","name"]}}}},"security":[{"bearerAuth":[]}],"summary":"Rename an agent","description":"Owner or manager only. Echo sharing_version as expected_version. The agent identity, URL aliases and history are preserved. On a conflict or uncertain response, GET the agent before retrying."}},"/api/v1/organizations/{organization_id}/agents/{id}/roster_position":{"patch":{"operationId":"roster_position_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Organization or authorized agent not found"},"422":{"description":"Invalid move, or the viewer is not a workspace member"},"502":{"description":"Bad gateway"},"204":{"description":"Order saved"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"oneOf":[{"type":"object","properties":{"after_id":{"type":"string"}},"required":["after_id"],"additionalProperties":false},{"type":"object","properties":{"before_id":{"type":"string"}},"required":["before_id"],"additionalProperties":false}]}}}},"security":[{"bearerAuth":[]}],"summary":"Move an agent in the viewer's own roster order","description":"Places the agent right after after_id or right before before_id; give exactly one. Other agents keep their order. Agents the viewer has never moved, such as new ones, list first, newest first."}},"/api/v1/organizations/{organization_id}/agents/{id}/sharing":{"patch":{"operationId":"sharing_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent with current sharing and permissions","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentResponse"}}}},"401":{"description":"Authentication required"},"403":{"description":"Current private-agent management authority required"},"404":{"description":"Organization or authorized agent not found"},"422":{"description":"Invalid configuration or operation"},"502":{"description":"Bad gateway"},"409":{"description":"Version or idempotency conflict; reload before starting a new operation"},"503":{"description":"Private Git state unavailable. Retry the same Idempotency-Key and unchanged body."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"expected_version":{"type":"integer","minimum":0},"visibility":{"type":"string","enum":["private","organization"]},"revoke_access":{"type":"boolean","description":"Owner only. Requires private visibility and removes all other individual access grants."},"team_role":{"type":"string","enum":["manager","collaborator"],"description":"With organization visibility only, and not for Project agents. What teammates may do. Sharing a private agent makes them collaborators unless this says otherwise. Changing it on an agent already shared needs the owner or a named manager."},"keep_connections":{"type":"array","maxItems":32,"description":"With organization visibility only. Accounts the agent used automatically while private that it keeps using once shared, chosen in the same transaction. Every other automatic account stops, including grants saved for it while the agent was shared before. Each account is chosen under the usual rules, so only its holder can keep a personal account.","items":{"type":"object","properties":{"id":{"type":"string"},"generation":{"type":"integer"}},"required":["id","generation"],"additionalProperties":false}}},"required":["expected_version","visibility"]}}}},"security":[{"bearerAuth":[]}],"summary":"Change organization sharing without granting management access","description":"Owner or manager only. Echo sharing_version as expected_version. On an uncertain response, GET the agent before retrying. The owner may set revoke_access with private visibility to remove all other individual access grants atomically. Project agents cannot be made private."}},"/api/v1/organizations/{organization_id}/agents/{id}/sharing/review":{"get":{"operationId":"share_review_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Accounts sharing would stop","content":{"application/json":{"schema":{"type":"object","properties":{"accounts":{"type":"array","items":{"$ref":"#/components/schemas/AgentShareReviewAccount"}},"team_accounts_only":{"type":"boolean","description":"The organization lets shared agents use only team accounts."}},"required":["accounts","team_accounts_only"],"additionalProperties":false}}}},"401":{"description":"Authentication required"},"403":{"description":"Sharing authority required"},"404":{"description":"Organization or agent not found"}},"security":[{"bearerAuth":[]}],"summary":"List what sharing a private agent would change","description":"Owner or named manager only. The owner's accounts the agent uses on its own while private, which stop when it is shared unless kept with keep_connections. Empty once the agent is shared."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark":{"get":{"operationId":"spark_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","description":"Return the caller-scoped native input identity for delivery reconciliation. Does not confirm acceptance.","schema":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"}},{"name":"requester_membership_id","in":"query","description":"Original V1 input membership for ambiguous-delivery recovery. Never substitute a new membership on retry.","schema":{"type":"string","minLength":1,"maxLength":200}},{"name":"cursor","in":"query","schema":{"type":"string","maxLength":4096}},{"name":"run_id","in":"query","schema":{"type":"string"}},{"name":"conversation_id","in":"query","schema":{"type":"string","default":"main"}}],"responses":{"200":{"description":"Native conversation history","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderConversation"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent access or experiment gate unavailable"},"404":{"description":"Authorized V2 agent not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"503":{"description":"Agent connection unavailable; a submission may already have reached native custody. Preserve its input key.","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentClawderUnavailable"}}}}},"security":[{"bearerAuth":[]}],"summary":"Read native OpenClaw history for a V2 agent"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/attachments":{"post":{"operationId":"spark_attachments_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Composal-Requester-Id","in":"header","description":"Fence a retained operation to its original authenticated user; never grants authority.","schema":{"type":"string","maxLength":200}}],"responses":{"201":{"description":"The upload, with the number and size of its parts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SparkAttachment"}}}},"403":{"description":"Agent messaging access unavailable"},"422":{"description":"The file is too large, or the upload limit is reached"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/SparkAttachmentUpload"}}}},"security":[{"bearerAuth":[]}],"summary":"Start uploading a file for a message","description":"Upload each part with the parts endpoint, complete the upload, then send its ID in attachment_ids. Images can be up to 25 MB, videos up to 1 GB and other files up to 250 MB."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/attachments/{attachment_id}/complete":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_attachments_attachment_id_complete","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"attachment_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Composal-Requester-Id","in":"header","description":"Fence a retained operation to its original authenticated user; never grants authority.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"The upload is ready to send","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SparkAttachment"}}}},"403":{"description":"Agent messaging access unavailable"},"404":{"description":"The upload does not belong to this sender"},"422":{"description":"A part is missing"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Finish uploading a file"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/attachments/{attachment_id}/parts/{index}":{"put":{"operationId":"put_api_v1_organizations_organization_id_agents_id_spark_attachments_attachment_id_parts_index_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"attachment_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"index","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Composal-Requester-Id","in":"header","description":"Fence a retained operation to its original authenticated user; never grants authority.","schema":{"type":"string","maxLength":200}}],"responses":{"204":{"description":"Part stored"},"403":{"description":"Agent messaging access unavailable"},"404":{"description":"The upload does not belong to this sender"},"422":{"description":"The part has the wrong size or the upload is already complete"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"security":[{"bearerAuth":[]}],"summary":"Upload one part of a file","description":"Parts are numbered from 0. Every part is part_size bytes except the last, which holds the rest. Uploading a part again replaces it."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/browser_opened":{"post":{"operationId":"spark_browser_opened_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Browser opening recorded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["surface","source"],"properties":{"surface":{"type":"string","enum":["web","desktop"]},"source":{"type":"string","enum":["button","link","agent"]}}}}}},"security":[{"bearerAuth":[]}],"summary":"Record an authorized browser panel opening without its URL or content"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/call_session":{"post":{"operationId":"spark_call_session_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Ephemeral OpenAI realtime client secret (never the provider API key)","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderCallSession"}}},"headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent messaging is not authorized or available"},"404":{"description":"Organization or agent not visible to this user"},"422":{"description":"Invalid or nonempty request body, or unexpected query parameters"},"502":{"description":"Bad gateway"},"429":{"description":"Too many call sessions; retry after 60 seconds","headers":{"Retry-After":{"schema":{"type":"string","const":"60"}}}},"503":{"description":"Calls are not configured or the provider is unavailable; no provider details are returned","headers":{"Retry-After":{"schema":{"type":"string","const":"2"}}},"content":{"application/json":{"schema":{"type":"object","required":["error","code"],"properties":{"error":{"type":"string"},"code":{"type":"string","const":"call_unavailable"}},"additionalProperties":false}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{}}}}},"security":[{"bearerAuth":[]}],"summary":"Create a short-lived voice companion call credential","description":"Requires the same message permission and active, ready Clawder agent as sending a message, checked before and after provider IO. Uses the platform OpenAI credential server-side; only the ephemeral client secret is returned. Accepts no configuration or query parameters. The server configures a realtime voice companion with only ask_agent, which the browser delegates to the existing chat runtime and answers with its actual full response as function_call_output. The voice companion summarizes results briefly; it must not invent answers, progress, or outcomes. The secret expires after 60 seconds for establishing a connection; an established provider session may outlive it, and provider session settings are not an authorization boundary. Limited to 20 requests per user per minute, independently of push-to-talk transcription."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/commands":{"get":{"operationId":"spark_commands_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"query","schema":{"type":"string","default":"main"}}],"responses":{"200":{"description":"Available chat commands","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["commands"],"properties":{"commands":{"type":"array","maxItems":500,"items":{"type":"object","required":["name","display_name","description","source","skill_model_visible"],"properties":{"name":{"type":"string"},"display_name":{"type":"string"},"description":{"type":"string"},"source":{"type":"string","enum":["native","skill","plugin"]},"skill_model_visible":{"type":"boolean"}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Discover the current conversation's native chat commands and skills"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/compute":{"get":{"operationId":"spark_compute_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string","maxLength":200}},{"name":"conversation_id","in":"query","schema":{"type":"string","maxLength":519}}],"responses":{"200":{"description":"Requester-authorized paired computer choices for a new thread","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderComputeView"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/computer":{"get":{"operationId":"spark_computer_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent workspace","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderComputer"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/computer/connect":{"post":{"operationId":"spark_computer_connect_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Private computer connection","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderComputerConnection"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Preparing computer control","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderComputerConnection"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/computer/egress":{"post":{"operationId":"spark_computer_egress_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Short-lived private browser egress connection","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderComputerConnection"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"prepare":{"type":"boolean"}},"required":["prepare"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/computer/frame":{"get":{"operationId":"spark_computer_frame_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current computer frame","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"image/jpeg":{"schema":{"type":"string","format":"binary"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/computer/start":{"post":{"operationId":"spark_computer_start_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent workspace","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderComputer"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Agent workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderComputer"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{},"required":[]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/coordination":{"get":{"operationId":"spark_coordination_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Recent root tasks issued by this thread, including durable waits and reports","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["tasks","next_cursor"],"properties":{"next_cursor":{"type":["string","null"]},"tasks":{"type":"array","items":{"$ref":"#/components/schemas/ClawderThreadTask"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/coordination/{task_id}/stop":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_coordination_task_id_stop","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Stop retained for exact-run delivery; execution may still be stopping"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["include_source"],"properties":{"include_source":{"type":"boolean"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/coordination/{task_id}/waits":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_spark_coordination_task_id_waits","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"A bounded page of this task's waits","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderThreadWaitPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/email":{"get":{"operationId":"spark_email_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The agent's inbox","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderAgentEmailInbox"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Not allowed to read this agent's mail"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read a native agent's email inbox, received and sent","description":"The agent's own address and the mail it received, newest first, as entries with a short preview. Only the agent's owner and people granted manager may read it; others get 403."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/email/{message_id}":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_spark_email_message_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The message as a plain-text document","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderAgentEmailMessage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Not allowed to read this agent's mail"},"404":{"description":"No such message, or it expired"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read one email a native agent received, as plain text"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/environment":{"get":{"operationId":"spark_environment_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent environment metadata; values are never returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentEnvironment"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_organization_id_agents_id_spark_environment","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent environment metadata; values are never returned","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentEnvironment"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentEnvironmentInput"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/events":{"get":{"operationId":"spark_events_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"query","schema":{"type":"string","default":"main"}},{"name":"device_activity_providers","in":"query","description":"Comma-separated device preview providers understood by this client. Omitted retains Codex-only compatibility; current clients send codex,roder,claude. Does not grant execution access.","schema":{"type":"string","default":"codex"}}],"responses":{"200":{"description":"Native conversation event stream","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"text/event-stream":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent access or experiment gate unavailable"},"404":{"description":"Authorized V2 agent not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"503":{"description":"Worker is unavailable before the event stream opens.","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentClawderUnavailable"}}}}},"security":[{"bearerAuth":[]}],"summary":"Observe native V2 conversation tokens and committed messages","description":"Authenticated finite SSE stream. Snapshot precedes live native deltas. Reconnect obtains an atomic native snapshot; no replay cursor is required. Authorization is checked on every frame. Events are snapshot, delta, message, run, browser, agent_browser, ui_action, device, reasoning, heartbeat, renew and error. A renew frame precedes a planned end of the stream; reconnect at once rather than backing off."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/input_delivery":{"get":{"operationId":"spark_input_delivery_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Composal-Requester-Id","in":"header","description":"Fence a retained operation to its original authenticated user; never grants authority.","schema":{"type":"string","maxLength":200}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"query","schema":{"type":"string","default":"main"}},{"name":"requester_membership_id","in":"query","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Rails custody or native acknowledgement for this exact submission; waiting does not prove native acceptance","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderInputReceipt"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Current agent access is required"},"404":{"description":"No delivery belongs to this sender and original membership"},"422":{"description":"Invalid input key or original requester membership"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read the original sender's durable message delivery receipt while the worker is unavailable"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/inputs":{"post":{"operationId":"spark_inputs_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Composal-Requester-Id","in":"header","description":"Fence a retained operation to its original authenticated user; never grants authority.","schema":{"type":"string","maxLength":200}},{"name":"X-Composal-Input-Delivery","in":"header","description":"Advertise support for waiting delivery custody. Without this header, waiting retains the legacy retryable 503 contract; 202 always means native acknowledged.","schema":{"type":"string","enum":["durable"]}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Previously accepted run receipt or completed control. Native /stop returns cancellation details without a new run_id; observe the affected runs for their final state.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderInputReceipt"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent messaging access or experiment gate unavailable"},"404":{"description":"Authorized V2 agent not found"},"422":{"description":"Invalid message"},"502":{"description":"Bad gateway"},"202":{"description":"Message held durably by Rails or acknowledged by native runtime. Waiting does not prove native acceptance; poll input_delivery until acknowledged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentClawderInputReceipt"}}}},"409":{"description":"The key belongs to another message, the runtime changed, or the agent's personal plan cannot bill this message","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentClawderInputConflict"}}}},"429":{"description":"Pending delivery capacity reached; this new input was not queued"},"503":{"description":"Delivery is unconfirmed; preserve the original key and body for reconciliation.","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentClawderUnavailable"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Submit a message or immediate native control to OpenClaw"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/integrations":{"get":{"operationId":"spark_integrations_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"catalog_q","in":"query","description":"Search addable providers across the agent's authorized catalog, independently of account filters and pages. An empty string lists all addable providers.","schema":{"type":"string","maxLength":200}},{"name":"q","in":"query","schema":{"type":"string","maxLength":200}},{"name":"toolkit","in":"query","schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Organization accounts available to this V2 agent","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderAgentIntegrations"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Not allowed"},"404":{"description":"Not found or disabled"},"422":{"description":"Invalid connection selection"},"502":{"description":"Bad gateway"},"409":{"description":"Configuration changed; reload before retrying"}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_integrations","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"q","in":"query","schema":{"type":"string","maxLength":200}},{"name":"toolkit","in":"query","schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Organization accounts available to this V2 agent","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderAgentIntegrations"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Not allowed"},"404":{"description":"Not found or disabled"},"422":{"description":"Invalid connection selection"},"502":{"description":"Bad gateway"},"409":{"description":"Configuration changed; reload before retrying"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderAgentIntegrationSelection"}}}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/interactions":{"get":{"operationId":"spark_interactions_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"query","required":true,"schema":{"$ref":"#/components/schemas/PersistentAgentClawderInteraction/properties/conversation_id"}},{"name":"ids[]","in":"query","required":false,"description":"Explicit interaction IDs. When omitted, Rails selects up to 50 skill-share offers for this target and conversation, prioritizing the oldest unexpired awaiting or processing offers, then recent terminal receipts. Answering open offers reveals the next batch.","style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":50,"items":{"$ref":"#/components/schemas/PersistentAgentClawderInteraction/properties/id"}}}],"responses":{"200":{"description":"Current authorized interaction states in the explicit conversation","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["interactions"],"properties":{"interactions":{"type":"array","maxItems":50,"items":{"$ref":"#/components/schemas/PersistentAgentClawderInteraction"}}}}}}},"401":{"description":"Authentication required"},"403":{"description":"Agent access or experiment gate unavailable, or visible interaction lacks current operation authority"},"404":{"description":"Authorized agent, conversation, or interaction not found; cross-scope IDs disclose nothing"},"422":{"description":"Invalid conversation, interaction IDs, revision, confirmation answer, or idempotency key"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read a bounded set of authorized interaction states"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/interactions/{request_id}":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_spark_interactions_request_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"request_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"query","required":true,"schema":{"$ref":"#/components/schemas/PersistentAgentClawderInteraction/properties/conversation_id"}}],"responses":{"200":{"description":"Current authorized interaction state and durable response receipt","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderInteraction"}}}},"401":{"description":"Authentication required"},"403":{"description":"Agent access or experiment gate unavailable, or visible interaction lacks current operation authority"},"404":{"description":"Authorized agent, conversation, or interaction not found; cross-scope IDs disclose nothing"},"422":{"description":"Invalid conversation, interaction IDs, revision, confirmation answer, or idempotency key"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read an authorized interaction and its current capabilities"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/interactions/{request_id}/cancel":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_interactions_request_id_cancel","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"request_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Stable unique operation key; reuse only for the identical request, including expected versions.","schema":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Interaction cancelled, or durable cancellation receipt replayed","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderInteraction"}}},"headers":{"Operation-Receipt-Id":{"required":true,"description":"Durable operation receipt ID; unchanged on an identical authorized replay","schema":{"type":"string"}}}},"401":{"description":"Authentication required"},"403":{"description":"Agent access or experiment gate unavailable, or visible interaction lacks current operation authority"},"404":{"description":"Authorized agent, conversation, or interaction not found; cross-scope IDs disclose nothing"},"422":{"description":"Invalid conversation, interaction IDs, revision, confirmation answer, or idempotency key"},"502":{"description":"Bad gateway"},"409":{"description":"Stale revision, competing decision, or changed key/body; current state is returned only when readable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentClawderInteractionConflict"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderInteractionCancelInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Cancel an awaiting interaction without stopping a native run","description":"Requires current agent state-write authority. Cannot undo an accepted response or continuation. An identical authorized replay returns the same durable operation receipt."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/interactions/{request_id}/connect":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_interactions_request_id_connect","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"request_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Bound setup and transient secure authorization link","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["interaction","redirect_url","expires_at"],"properties":{"interaction":{"$ref":"#/components/schemas/PersistentAgentClawderInteraction"},"redirect_url":{"type":["string","null"],"format":"uri","description":"Null only when no-auth setup is already connected"},"expires_at":{"type":["string","null"],"format":"date-time"}}}}}},"401":{"description":"Authentication required"},"403":{"description":"Agent access or experiment gate unavailable, or visible interaction lacks current operation authority"},"404":{"description":"Authorized agent, conversation, or interaction not found; cross-scope IDs disclose nothing"},"422":{"description":"Invalid conversation, interaction IDs, revision, confirmation answer, or idempotency key"},"502":{"description":"Bad gateway"},"409":{"description":"Setup changed or authorization is already in progress"},"503":{"description":"Authorization outcome unavailable; refresh before retrying"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderInteractionCancelInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Start a bound organization account authorization from chat","description":"Organization administrators only. Creates one local connection per interaction; a lost authorization link is not replayable. Refresh the interaction before explicitly retrying an expired attempt. The transient redirect URL must never enter transcript, analytics or decision persistence. Connecting grants no agent access."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/interactions/{request_id}/responses":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_interactions_request_id_responses","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"request_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Stable unique operation key; reuse only for the identical request, including expected versions.","schema":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Previously accepted durable response receipt; no effects repeated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderInteraction"}}},"headers":{"Operation-Receipt-Id":{"required":true,"description":"Durable operation receipt ID; unchanged on an identical authorized replay","schema":{"type":"string"}}}},"401":{"description":"Authentication required"},"403":{"description":"Agent access or experiment gate unavailable, or visible interaction lacks current operation authority"},"404":{"description":"Authorized agent, conversation, or interaction not found; cross-scope IDs disclose nothing"},"422":{"description":"Invalid conversation, interaction IDs, revision, confirmation answer, or idempotency key"},"502":{"description":"Bad gateway"},"202":{"description":"New response durably accepted; continuation delivery is pending","headers":{"Operation-Receipt-Id":{"required":true,"description":"Durable operation receipt ID; unchanged on an identical authorized replay","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentClawderInteraction"}}}},"409":{"description":"Stale revision, competing decision, or changed key/body; current state is returned only when readable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentClawderInteractionConflict"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderInteractionResponseInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Accept an authenticated decision for a registered interaction","description":"Requires current conversation messaging authority. The first eligible response wins; confirmed false is a verified answer, not cancellation. Retry only the identical body and key; replay rechecks current read authority and never repeats effects."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/library":{"get":{"operationId":"spark_library_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Agent sidebar response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderLibrary"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/library/{artifact_id}/download":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_spark_library_artifact_id_download","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Generated file","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/lifecycle":{"get":{"operationId":"spark_lifecycle_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Native agent lifecycle response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderLifecycle"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_lifecycle","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Native agent lifecycle response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderLifecycle"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"heartbeat_enabled":{"type":"boolean"}},"required":["heartbeat_enabled"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/local_threads":{"post":{"operationId":"spark_local_threads_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Authorized native session adoption receipt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceControlOperationResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderLocalThreadAdoptionInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Add an existing native session to this agent","description":"Uses the current computer owner and agent grant. Submits no model prompt. Keep the same key and exact request after uncertain delivery; read its receipt instead of repeating adoption."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/local_threads/operations/{operation_id}":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_spark_local_threads_operations_operation_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authorized native session adoption receipt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceControlOperationResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/local_threads/{local_thread_id}":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_spark_local_threads_local_thread_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"local_thread_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authorized local coding-agent thread","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderLocalThreadResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/local_threads/{local_thread_id}/deliveries/{delivery_id}":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_spark_local_threads_local_thread_id_deliveries_delivery_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"local_thread_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"delivery_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"expected_version","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Original preference version retained with an unconfirmed decision."}],"responses":{"200":{"description":"Original requester-scoped Relay delivery consent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRelayDeliveryRecoveryResponse"}}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_agents_id_spark_local_threads_local_thread_id_deliveries_delivery_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"local_thread_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"delivery_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Original requester-scoped Relay delivery consent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRelayDeliveryReceiptResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentRelayDeliveryDecisionInput"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/local_threads/{local_thread_id}/delivery_policy":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_spark_local_threads_local_thread_id_delivery_policy","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"local_thread_id","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"cursor","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Original requester-scoped Relay delivery consent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRelayDeliveryPolicyResponse"}}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_agents_id_spark_local_threads_local_thread_id_delivery_policy","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"local_thread_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Original requester-scoped Relay delivery consent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRelayDeliveryPolicyResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentRelayDeliveryPolicyInput"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/local_threads/{local_thread_id}/operations":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_local_threads_local_thread_id_operations","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"local_thread_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Authorized local coding-agent thread","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceControlOperationResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderLocalThreadInput"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/local_threads/{local_thread_id}/operations/{operation_id}":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_spark_local_threads_local_thread_id_operations_operation_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"local_thread_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authorized local coding-agent thread","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceControlOperationResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/local_threads/{local_thread_id}/relay":{"delete":{"operationId":"delete_api_v1_organizations_organization_id_agents_id_spark_local_threads_local_thread_id_relay","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"local_thread_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Relay authorization disconnected","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderLocalThreadResponse"}}}},"403":{"description":"Current message access required"},"404":{"description":"Current attributed thread required"}},"security":[{"bearerAuth":[]}],"summary":"Disconnect one attributed native thread from Relay","description":"Idempotently revokes Relay admission for this exact source before closing its transport. Native history and model work are retained. Requires current requester and source access. Does not revoke other threads or the computer."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/local_threads/{local_thread_id}/task":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_spark_local_threads_local_thread_id_task","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"local_thread_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string","maxLength":200}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":20}}],"responses":{"200":{"description":"Current authorized native task result receipts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRelayTaskResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/marked_read":{"post":{"operationId":"spark_marked_read_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Read recorded"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["surface","source"],"properties":{"surface":{"type":"string","enum":["web","desktop"]},"source":{"type":"string","enum":["mission_control","conversation"]}}}}}},"security":[{"bearerAuth":[]}],"summary":"Record that the viewer cleared this agent from their inbox, without any reply content"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/message_image":{"get":{"operationId":"spark_message_image_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"message_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"index","in":"query","required":true,"schema":{"type":"integer","minimum":0,"maximum":7}}],"responses":{"200":{"description":"Private message image","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"image/png":{"schema":{"type":"string","format":"binary"}},"image/jpeg":{"schema":{"type":"string","format":"binary"}},"image/webp":{"schema":{"type":"string","format":"binary"}},"image/gif":{"schema":{"type":"string","format":"binary"}},"image/avif":{"schema":{"type":"string","format":"binary"}}}},"401":{"description":"Authentication required"},"403":{"description":"Current agent access required"},"404":{"description":"Message image unavailable"},"422":{"description":"Invalid message image request"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Download an image from a visible native conversation message"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/model":{"patch":{"operationId":"spark_model_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Saved agent model","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderAgentModel"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderAgentModelInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Save the model and effort the agent uses by default"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/pull_requests":{"get":{"operationId":"spark_pull_requests_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string","maxLength":50000}}],"responses":{"200":{"description":"Pull requests with current GitHub status and owning conversations","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderPullRequests"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Pull requests created or monitored across agent threads"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/relay/activity":{"get":{"operationId":"spark_relay_activity_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"kind","in":"query","schema":{"type":"string","enum":["native","relay"],"default":"native"}},{"name":"cursor","in":"query","schema":{"type":"string","maxLength":200}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"Bounded receipt metadata without copied prompts or results","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["activity"],"properties":{"activity":{"$ref":"#/components/schemas/ControlActivity"}}}}}},"401":{"description":"Authentication required"},"403":{"description":"Current requester access is required"},"404":{"description":"Agent or activity cursor unavailable"},"422":{"description":"Invalid activity selection"}},"security":[{"bearerAuth":[]}],"summary":"List current-requester coding and Relay receipt metadata","description":"Reads retained receipts under current membership, grant and pairing authority. Native and Relay streams have independent cursors. Completed turns.start receipts confirm native acceptance. This read uses Rails storage and remains available when the Relay worker is offline."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/relay/files/{file_id}":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_spark_relay_files_file_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]{1,30}$"}}],"responses":{"200":{"description":"Receipt-bound file download","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelayFileDownload"}}}},"403":{"description":"Current requester access required"},"404":{"description":"Agent unavailable"},"422":{"description":"Invalid file selection"},"503":{"description":"File unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Get a fresh authorized download for a shared Relay file"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/relay/inspection":{"get":{"operationId":"spark_relay_inspection_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"view","in":"query","required":true,"schema":{"type":"string","enum":["agents","channels","conversations","channel","dm","thread"]}},{"name":"target","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":4096}},{"name":"before","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200}},{"name":"after","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Thread reply continuation; replies are oldest first."}],"responses":{"200":{"description":"Authorized bounded room observation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelayInspection"}}}},"403":{"description":"Current requester access required"},"404":{"description":"Room or conversation unavailable"},"422":{"description":"Invalid inspection selection"},"503":{"description":"Observation unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Observe a bounded page of your private Relay room","description":"Read-only owner observation of participants, channels, direct conversations and message history. Never acknowledges messages, creates an agent presence session or changes sender identity. Native thread links require current source access."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/relay/operations":{"post":{"operationId":"spark_relay_operations_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Authorized operator result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelayOperatorReceipt"}}}},"401":{"description":"Authentication required"},"403":{"description":"Current requester access is required"},"404":{"description":"Agent or operator receipt unavailable"},"409":{"description":"Request key belongs to different arguments"},"422":{"description":"Invalid bounded request"},"503":{"description":"Relay unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RelayOperatorCall"}}}},"security":[{"bearerAuth":[]}],"summary":"Call a Relay tool once under the real operator identity","description":"The server chooses the room from the organization, V2 agent, signed-in user and current membership. Human callers use a distinct operator participant. Current access is checked before dispatch and result release. Retain the same key for the exact intent after uncertain delivery. An operation state of completed means the MCP call returned, not that a recipient read or completed a task."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/relay/operations/{operation_id}":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_spark_relay_operations_operation_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authorized operator result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelayOperatorReceipt"}}}},"401":{"description":"Authentication required"},"403":{"description":"Current requester access is required"},"404":{"description":"Agent or operator receipt unavailable"},"409":{"description":"Request key belongs to different arguments"},"422":{"description":"Invalid bounded request"},"503":{"description":"Relay unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Read an operator receipt without replaying the tool","description":"The server chooses the room from the organization, V2 agent, signed-in user and current membership. Human callers use a distinct operator participant. Current access is checked before dispatch and result release."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/relay/resource":{"get":{"operationId":"spark_relay_resource_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"uri","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":1024,"pattern":"^relay://"}}],"responses":{"200":{"description":"Authorized operator result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelayOperatorResource"}}}},"401":{"description":"Authentication required"},"403":{"description":"Current requester access is required"},"404":{"description":"Agent or operator receipt unavailable"},"409":{"description":"Request key belongs to different arguments"},"422":{"description":"Invalid bounded request"},"503":{"description":"Relay unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Read a Relay resource without acknowledging messages","description":"The server chooses the room from the organization, V2 agent, signed-in user and current membership. Human callers use a distinct operator participant. Current access is checked before dispatch and result release."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/relay/resources":{"get":{"operationId":"spark_relay_resources_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authorized operator result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelayOperatorResources"}}}},"401":{"description":"Authentication required"},"403":{"description":"Current requester access is required"},"404":{"description":"Agent or operator receipt unavailable"},"409":{"description":"Request key belongs to different arguments"},"422":{"description":"Invalid bounded request"},"503":{"description":"Relay unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Discover Relay resources in the current requester room","description":"The server chooses the room from the organization, V2 agent, signed-in user and current membership. Human callers use a distinct operator participant. Current access is checked before dispatch and result release."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/relay/tools":{"get":{"operationId":"spark_relay_tools_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authorized operator result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelayOperatorTools"}}}},"401":{"description":"Authentication required"},"403":{"description":"Current requester access is required"},"404":{"description":"Agent or operator receipt unavailable"},"409":{"description":"Request key belongs to different arguments"},"422":{"description":"Invalid bounded request"},"503":{"description":"Relay unavailable"}},"security":[{"bearerAuth":[]}],"summary":"Discover first-party Relay tools as the signed-in operator","description":"The server chooses the room from the organization, V2 agent, signed-in user and current membership. Human callers use a distinct operator participant. Current access is checked before dispatch and result release."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/repositories":{"get":{"operationId":"spark_repositories_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"q","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Repository grants, editor choices and optimistic version","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderRepositories"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent management authority required"},"404":{"description":"Agent not found or disabled"},"422":{"description":"Invalid repository selection"},"502":{"description":"Bad gateway"},"409":{"description":"Configuration changed; read current version"}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"summary":"Read selected V2 work repositories"},"put":{"operationId":"put_api_v1_organizations_organization_id_agents_id_spark_repositories","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Repository grants, editor choices and optimistic version","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderRepositories"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent management authority required"},"404":{"description":"Agent not found or disabled"},"422":{"description":"Invalid repository selection"},"502":{"description":"Bad gateway"},"409":{"description":"Configuration changed; read current version"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["work_repositories","expected_version"],"properties":{"work_repositories":{"type":"array","maxItems":20,"items":{"$ref":"#/components/schemas/PersistentAgentWorkRepository"}},"expected_version":{"type":"integer","minimum":0}}}}}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"summary":"Replace selected V2 work repositories"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/repositories/{repository}/environment":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_repositories_repository_environment","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"repository","in":"path","required":true,"schema":{"type":"string"}},{"in":"path","name":"repository","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"What this call prepared. A build still running at the default branch head is building even while thread sandboxes start from an earlier ready revision, which the repositories read shows. Repeated calls reuse the same revision, running setup run or running branch check","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["environment"],"properties":{"environment":{"$ref":"#/components/schemas/ClawderRepositoryEnvironment"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent management authority required"},"404":{"description":"Agent or granted repository not found"},"409":{"description":"The setup thread could not start, for example at the thread sandbox limit"},"422":{"description":"The recipe is invalid, setup needs a private bot, write access and a GitHub connection, the branch was not found, or another setup run or branch check holds the repository"},"429":{"description":"Too many prepare requests; wait before preparing again"},"503":{"description":"The bot's runtime is unavailable; retry after Retry-After"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"branch":{"type":"string","maxLength":255,"description":"A branch other than the default one. The bot builds the recipe on it and checks the image on a fresh machine, on a thread it reports in. Nothing is promoted, so thread sandboxes keep their current environment."}}}}}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"summary":"Build a granted repository's sandbox environment at its default branch head, start a setup run that writes its recipe, or check the recipe on another branch"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/routines":{"get":{"operationId":"spark_routines_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Agent sidebar response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderRoutines"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/routines/{routine_id}":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_routines_routine_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"routine_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent sidebar response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderRoutineUpdated"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"enabled":{"type":"boolean"}},"required":["enabled"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/runs/{run_id}":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_spark_runs_run_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"query","schema":{"type":"string","default":"main"}}],"responses":{"200":{"description":"Native run state","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderRun"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent access or experiment gate unavailable"},"404":{"description":"Authorized V2 agent or run not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"503":{"description":"Agent connection unavailable; a submission may already have reached native custody. Preserve its input key.","headers":{"Retry-After":{"schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentClawderUnavailable"}}}}},"security":[{"bearerAuth":[]}],"summary":"Read native OpenClaw run completion"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/runtime":{"get":{"operationId":"spark_runtime_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent sandbox resources","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentRuntime"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_organization_id_agents_id_spark_runtime","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent sandbox resources","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentRuntime"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentRuntimeInput"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/runtime/reset":{"post":{"operationId":"spark_runtime_reset_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent sandbox resources","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentRuntime"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentRuntimeResetInput"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/sandbox":{"get":{"operationId":"spark_sandbox_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Sandbox configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSandboxSettings"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_agents_id_spark_sandbox","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Sandbox configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSandboxSettings"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSandboxSelectionInput"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/settings":{"get":{"operationId":"spark_settings_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSettings"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_organization_id_agents_id_spark_settings","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSettings"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSettingsInput"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/sites":{"get":{"operationId":"spark_sites_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Agent sidebar response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSites"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/skills":{"get":{"operationId":"spark_skills_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSkills"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_skills","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSkills"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Managed skill settings accepted for a replacement runtime revision. The catalog remains the last observed native state until qualification.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderSkills"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSkillInput"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/slack":{"post":{"operationId":"spark_slack_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent Slack settings","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"slack":{"$ref":"#/components/schemas/ClawderAgentSlack"},"message":{"type":"string"}},"required":["slack","message"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent manager and organization admin required"},"404":{"description":"Not found"},"422":{"description":"Invalid Slack settings"},"502":{"description":"Bad gateway"},"503":{"description":"Slack unavailable; retry the same operation"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderAgentSlackUpdate"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/slack/app":{"post":{"operationId":"spark_slack_app_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent Slack settings","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"slack":{"$ref":"#/components/schemas/ClawderAgentSlack"},"message":{"type":"string"}},"required":["slack","message"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent manager and organization admin required"},"404":{"description":"Not found"},"422":{"description":"Invalid Slack settings"},"502":{"description":"Bad gateway"},"503":{"description":"Slack unavailable; retry the same operation"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderAgentSlackAppUpdate"}}}},"security":[{"bearerAuth":[]}],"summary":"Configure a dedicated Slack app for this agent"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/slack/channels":{"get":{"operationId":"spark_slack_channels_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":2000}},{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Channels visible to this agent bot, with Slack pagination","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSlackChannels"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent publishing authority required"},"404":{"description":"Not found"},"422":{"description":"Slack rejected the channel listing"},"502":{"description":"Bad gateway"},"503":{"description":"Slack unavailable or rate limited","headers":{"Retry-After":{"schema":{"type":"string"},"description":"Wait this many seconds before retrying"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"retry_after_seconds":{"type":"integer","minimum":1,"maximum":3600}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/subagents":{"get":{"operationId":"spark_subagents_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"query","schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Agent workspace","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSubagents"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/subscriptions":{"get":{"operationId":"spark_subscriptions_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent subscription settings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSubscriptionSettings"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_subscriptions","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent subscription settings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSubscriptionSettings"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Enterprise subscription selection accepted; the new revision must qualify before use.","content":{"application/json":{"schema":{"type":"object","required":["available","pending","selection_ready"],"properties":{"available":{"type":"boolean"},"pending":{"type":"boolean","const":true},"selection_ready":{"type":"boolean","const":false},"reason":{"type":["string","null"]},"can_make_private":{"type":"boolean"},"sharing_version":{"type":"integer"},"profile_id":{"type":"string","description":"Canonical saved account prepared for this selection. Use this identity to qualify the subsequent ready read."}},"additionalProperties":false}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderSubscriptionInput"}}}},"security":[{"bearerAuth":[]}],"description":"The private agent's owner may use every action. On a shared agent outside a Project, its managers may send `platform` with `sharing_version` as `version` to return it to Composal billing; the response is the unavailable settings."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/subscriptions/models":{"get":{"operationId":"spark_subscriptions_models_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"profile_id","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Account model catalog","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["models"],"properties":{"models":{"$ref":"#/components/schemas/ClawderSubscriptions/properties/models"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"description":"Public model catalog for one of the private agent owner’s saved ChatGPT accounts. Does not attach the account or change billing."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/teammates":{"get":{"operationId":"spark_teammates_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"q","in":"query","schema":{"type":"string","maxLength":128}}],"responses":{"200":{"description":"Shared team agents","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["agents","has_more","browsers"],"properties":{"has_more":{"type":"boolean"},"agents":{"type":"array","maxItems":100,"items":{"$ref":"#/components/schemas/PersistentAgentClawderTeammate"}},"browsers":{"type":"array","maxItems":2,"description":"Browser mentions matching the query. @browser is the sender's Composal Desktop browser, offered where computers can be connected; @browser-remote is the agent's cloud browser.","items":{"type":"object","additionalProperties":false,"required":["name","label","description"],"properties":{"name":{"type":"string","enum":["browser","browser-remote"]},"label":{"type":"string"},"description":{"type":"string"}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Discover shared team agents available for collaboration"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/terminal/connect":{"post":{"operationId":"spark_terminal_connect_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Private computer connection","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderComputerConnection"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Preparing computer control","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderComputerConnection"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{}}}}},"security":[{"bearerAuth":[]}],"summary":"Connect to the agent sandbox terminal"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/threads":{"get":{"operationId":"spark_threads_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"archived","in":"query","schema":{"type":"string","enum":["exclude","only"],"default":"exclude"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"conversation_id","in":"query","schema":{"type":"string"}},{"name":"local_cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Native agent lifecycle response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderThreads"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_threads","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"Native agent lifecycle response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderThreadCreated"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Native agent lifecycle response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentClawderThreadCreated"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"title":{"type":"string","maxLength":200},"message":{"type":"string","minLength":1,"maxLength":32768,"description":"The thread's first message. Without a title, Rails names the thread from it; the message is then sent as the thread's first turn under a key derived from Idempotency-Key, so a retried creation does not send it twice."},"requester_membership_id":{"type":"string","minLength":1,"maxLength":200},"execution":{"oneOf":[{"type":"object","additionalProperties":false,"required":["kind","device_id","path"],"properties":{"kind":{"type":"string","const":"device_folder"},"device_id":{"type":"string","minLength":1,"maxLength":200},"path":{"type":"string","minLength":1,"maxLength":4096}}},{"type":"object","additionalProperties":false,"required":["kind"],"properties":{"kind":{"type":"string","const":"sandbox"},"repository_id":{"type":"string","minLength":1,"maxLength":200,"description":"A granted, available repository. With a ready environment the machine starts from its image, clones it and runs its update commands; without one it clones it onto the default thread image."},"harness":{"type":"string","enum":["codex","claude","pi"],"default":"codex","description":"The coding agent for the thread's coding turns, fixed at creation. Coding agents other than codex need repository_id."}}}]},"parent_conversation_id":{"type":"string","minLength":1,"maxLength":519,"description":"Source conversation belonging to this agent."},"inherit_context":{"type":"boolean","description":"Include the source conversation through its last completed reply. Defaults to true when a source is supplied."}},"required":[],"if":{"required":["execution"],"properties":{"execution":{"properties":{"kind":{"const":"device_folder"}}}}},"dependentRequired":{"inherit_context":["parent_conversation_id"]},"then":{"required":["requester_membership_id"]}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/threads/{thread_id}/archive":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_threads_thread_id_archive","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"thread_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Thread archive state confirmed; history is retained","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["thread_id","archived"],"properties":{"thread_id":{"type":"string"},"archived":{"type":"boolean"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["archived"],"properties":{"archived":{"type":"boolean"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/threads/{thread_id}/compact":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_threads_thread_id_compact","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"thread_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Native agent lifecycle response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentClawderCompacted"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{},"required":[]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/threads/{thread_id}/previews":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_threads_thread_id_previews","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"thread_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Private preview URL","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["url","expires_at"],"properties":{"url":{"type":"string"},"expires_at":{"type":["string","null"],"format":"date-time"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"port":{"type":"integer","minimum":1,"maximum":65535}},"required":["port"]}}}},"security":[{"bearerAuth":[]}],"description":"Opens a private preview of one declared service port on a sandbox thread's machine. Through the preview proxy the URL is the port's stable address and expires_at is null; otherwise the URL carries a short-lived token, and opening it once leaves a preview cookie in the browser."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/transcription_session":{"post":{"operationId":"spark_transcription_session_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Ephemeral OpenAI transcription client secret (never the provider API key)","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderTranscriptionSession"}}},"headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent messaging is not authorized or available"},"404":{"description":"Organization or agent not visible to this user"},"422":{"description":"Invalid or nonempty request body"},"502":{"description":"Bad gateway"},"429":{"description":"Too many transcription sessions; retry after 60 seconds"},"503":{"description":"Transcription is not configured or the provider is unavailable; no provider details are returned","content":{"application/json":{"schema":{"type":"object","required":["error","code"],"properties":{"error":{"type":"string"},"code":{"type":"string","const":"transcription_unavailable"}},"additionalProperties":false}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{}}}}},"security":[{"bearerAuth":[]}],"summary":"Create a short-lived push-to-talk transcription credential","description":"Requires the same message permission and active, ready Clawder agent as sending a message. Uses the platform OpenAI credential server-side; only the ephemeral client secret is returned. No audio or transcript is sent to this endpoint. The secret expires after 60 seconds for establishing a connection; an established provider session may outlive it. Limited to 20 requests per user per minute."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/usage":{"get":{"operationId":"spark_usage_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Selected private agent subscription quota and conversation usage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderUsage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/verify_projects":{"get":{"operationId":"spark_verify_projects_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Granted Verify projects, choices and optimistic version","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderVerifyProjects"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent access required"},"404":{"description":"Agent not found or disabled"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"summary":"Read the Verify projects a V2 agent may use"},"put":{"operationId":"put_api_v1_organizations_organization_id_agents_id_spark_verify_projects","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Granted Verify projects, choices and optimistic version","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderVerifyProjects"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent management and Verify admin authority required"},"404":{"description":"Agent not found or disabled"},"422":{"description":"Invalid project selection"},"502":{"description":"Bad gateway"},"409":{"description":"Configuration changed; read current version"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["verify_projects","expected_version"],"properties":{"verify_projects":{"type":"array","maxItems":32,"items":{"type":"string"}},"expected_version":{"type":"integer","minimum":0}}}}}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"summary":"Replace the Verify projects a V2 agent may use"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/waits/{wait_id}/stop":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_waits_wait_id_stop","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"wait_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Wait cancelled; its child tasks continue"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/warm":{"post":{"operationId":"spark_warm_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Preparation requested or not needed"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["conversation_id"],"properties":{"conversation_id":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Prepare a conversation's runtime when someone who can send opens it, without calling a model"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/webhooks":{"post":{"operationId":"spark_webhooks_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"in":"header","name":"Idempotency-Key","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created connection; signing key is shown once","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderWebhookSetup"}}}},"401":{"description":"Authentication required"},"403":{"description":"Bot management or inbox access required"},"409":{"description":"Idempotency key belongs to different configuration"},"422":{"description":"Invalid configuration"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWebhookCreate"}}}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"summary":"Add a named webhook app feeding this bot's inbox"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/webhooks/{endpoint_id}":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_spark_webhooks_endpoint_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"endpoint_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Connection metadata without secrets or event content","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWebhookDetail"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Source not found or not readable"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"summary":"Read a webhook app and its twenty latest receipt outcomes"},"patch":{"operationId":"patch_api_v1_organizations_organization_id_agents_id_spark_webhooks_endpoint_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"endpoint_id","in":"path","required":true,"schema":{"type":"string"}},{"in":"header","name":"Idempotency-Key","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated connection; only a new rotation reveals a signing key","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWebhookSetup"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Bot management authority required"},"404":{"description":"Source not found"},"422":{"description":"Invalid action or revoked source"},"502":{"description":"Bad gateway"},"409":{"description":"Refresh the changed source"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["action","expected_generation"],"properties":{"action":{"type":"string","enum":["pause","resume","rotate","remove"]},"expected_generation":{"type":"integer","minimum":1}}}}}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"summary":"Pause intake, resume intake, rotate a secret or remove a webhook app"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/work/{work_id}/handled":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_work_work_id_handled","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"work_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Work handled"},"403":{"description":"Viewer cannot manage this agent"},"404":{"description":"Authorized agent or work not found"},"409":{"description":"The work has a newer revision","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Invalid request or the work does not need attention"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["revision"],"properties":{"revision":{"type":"integer","minimum":1}}}}}},"security":[{"bearerAuth":[]}],"summary":"Mark the displayed revision of failed or exception work handled so it leaves Needs attention; a newer revision needs attention again"}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/workflow_proposals/{proposal}":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_spark_workflow_proposals_proposal_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"proposal","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The proposal and its steps","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentWorkflowProposal"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Agent read access required"},"404":{"description":"The proposal is no longer available"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"description":"A workflow the agent proposed in chat with workflow_propose, checked as saving would check it."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/workflow_proposals/{proposal}/save":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_workflow_proposals_proposal_save","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"proposal","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The saved proposal","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentWorkflowProposal"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Current agent management authority required"},"404":{"description":"The proposal is no longer available"},"422":{"description":"The proposed workflow no longer passes its checks"},"502":{"description":"Bad gateway"},"409":{"description":"The proposal changed after it was reviewed (workflow_proposal_changed), the workflow changed since the proposal (workflow_proposal_stale), or the file could not be written (workflow_write_unavailable)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["digest"],"properties":{"digest":{"type":"string","pattern":"^[a-f0-9]{64}$"}}}}}},"security":[{"bearerAuth":[]}],"description":"Save exactly the proposed source as the workflow. digest names the version the person reviewed. A workflow that changed since the proposal is not replaced. Saving a proposal that is already saved changes nothing."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/workflow_runs":{"get":{"operationId":"spark_workflow_runs_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"workflow_path","in":"query","description":"Only runs of this workflow file","schema":{"type":"string","maxLength":160}}],"responses":{"200":{"description":"Recorded workflow runs, newest first","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWorkflowRuns"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/workflow_runs/{run_id}":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_spark_workflow_runs_run_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"A recorded workflow run and its steps","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWorkflowRunDetail"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/workflow_runs/{run_id}/answer":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_workflow_runs_run_id_answer","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The reopened run, whose stopped step the agent's worker runs again with the answer","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWorkflowRunDetail"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"The run is not waiting for an answer, or is waiting on a later question","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"answer":{"type":"string","maxLength":4000,"description":"The person's answer to the question the step stopped on"},"question_at":{"type":"string","format":"date-time","description":"The run's finished_at when it stopped on the question being answered; a run since stopped on another question refuses the answer"}},"required":["answer","question_at"]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/workflow_runs/{run_id}/retry":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_workflow_runs_run_id_retry","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The reopened run, which the agent's worker continues from its failed step","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWorkflowRunDetail"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"The run cannot be retried","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/workflow_runs/{run_id}/steps/{step_id}/output":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_spark_workflow_runs_run_id_steps_step_id_output","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"step_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The step's full recorded output","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"text/plain":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/workflow_triggers":{"get":{"operationId":"spark_workflow_triggers_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"What starts this agent's workflows without a chat turn","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ClawderWorkflowTrigger"}},"can_manage":{"type":"boolean"}},"required":["items","can_manage"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/workflow_triggers/{trigger_id}":{"delete":{"operationId":"delete_api_v1_organizations_organization_id_agents_id_spark_workflow_triggers_trigger_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"The trigger no longer starts its workflow"}},"security":[{"bearerAuth":[]}]},"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_spark_workflow_triggers_trigger_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"A workflow's run settings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWorkflowTriggerResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_organization_id_agents_id_spark_workflow_triggers_trigger_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The changed run settings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWorkflowTriggerResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Refused","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"errors":{"type":"object","description":"Each field's errors","additionalProperties":{"type":"array","items":{"type":"string"}}}},"required":["error"]}}}},"502":{"description":"Bad gateway"},"409":{"description":"Refused","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"read_at":{"type":"string","nullable":true,"description":"The settings_changed_at you read; a change made since is refused"},"daily_limit":{"type":"integer","nullable":true,"minimum":1,"maximum":1000},"run_budget_usd":{"type":"number","nullable":true}},"required":["read_at","daily_limit","run_budget_usd"]}}}},"security":[{"bearerAuth":[]}],"description":"Change the daily limit and the most a run may spend. The next run uses them."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/workflow_triggers/{trigger_id}/pause":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_workflow_triggers_trigger_id_pause","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The paused workflow's run settings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWorkflowTriggerResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"Refused","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/workflow_triggers/{trigger_id}/resume":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_workflow_triggers_trigger_id_resume","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The resumed workflow's run settings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWorkflowTriggerResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"Refused","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/workflow_triggers/{trigger_id}/review":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_spark_workflow_triggers_trigger_id_review","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The version a person last checked and the file as it is now","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"checked_source":{"type":"string","nullable":true},"source":{"type":"string","nullable":true},"digest":{"type":"string","nullable":true},"error":{"type":"string","nullable":true}},"required":["checked_source","source","digest","error"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_workflow_triggers_trigger_id_review","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The resumed workflow's run settings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderWorkflowTriggerResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"Refused","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"digest":{"type":"string"}},"required":["digest"]}}}},"security":[{"bearerAuth":[]}],"description":"Resume a workflow paused for an unchecked change, for the version the person reviewed."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/workflow_triggers/{trigger_id}/skipped":{"get":{"operationId":"get_api_v1_organizations_organization_id_agents_id_spark_workflow_triggers_trigger_id_skipped","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Events the workflow skipped today, newest first","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"count":{"type":"integer"},"items":{"type":"array","items":{"$ref":"#/components/schemas/ClawderSkippedEvent"}}},"required":["count","items"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/workflow_triggers/{trigger_id}/skipped/{delivery_id}/run":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_workflow_triggers_trigger_id_skipped_delivery_id_run","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"delivery_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The started run","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"run_id":{"type":"string"}},"required":["run_id"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"Refused","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"description":"Start the workflow for a skipped event. It doesn't count against the daily limit."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/workflows":{"get":{"operationId":"spark_workflows_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Native Lobster workflow files for the selected agent","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentLobsterWorkflows"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_organization_id_agents_id_spark_workflows","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated native workflow catalog","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersistentAgentLobsterWorkflows"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Current agent management authority required"},"404":{"description":"Not found"},"422":{"description":"Invalid path, source, workflow, model or digest"},"502":{"description":"Bad gateway"},"409":{"description":"Workflow digest changed (workflow_changed) or the file could not be replaced (workflow_write_unavailable)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["path","source","expected_digest"],"properties":{"path":{"type":"string","pattern":"^workflows/[a-zA-Z0-9][a-zA-Z0-9._-]{0,127}\\.lobster$"},"source":{"type":"string","description":"At most 262144 UTF-8 bytes"},"expected_digest":{"type":"string","pattern":"^[a-f0-9]{64}$"}}}}}},"security":[{"bearerAuth":[]}],"description":"Replace an existing native workflow, bounded to 256 KiB UTF-8. The digest fences concurrent bridge edits, not native chat or exec writes that bypass this endpoint."},"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_workflows","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Native workflow catalog including the new workflow","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersistentAgentLobsterWorkflows"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Current agent management authority required"},"404":{"description":"Agent not found"},"409":{"description":"A workflow exists at the path (workflow_exists), an output schema exists with different content (workflow_schema_conflict), or the file could not be written (workflow_write_unavailable)"},"422":{"description":"Invalid path or unknown template"},"503":{"description":"The agent is unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["path","template"],"properties":{"path":{"type":"string","pattern":"^workflows/[a-zA-Z0-9][a-zA-Z0-9._-]{0,127}\\.lobster$"},"template":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,63}$","description":"A template id from the catalog's templates"}}}}}},"security":[{"bearerAuth":[]}],"description":"Add a catalog template as a new native workflow, with the output schemas it names. A template is added even when the agent lacks a grant it needs; its grants in the response's templates say which are missing. The response's catalog entry for the new path shows its readiness for this agent."}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/workspaces":{"get":{"operationId":"spark_workspaces_api_v1_organization_persistent_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Retained workspaces and reserved capacity, independent of native runtime availability","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["items","next_cursor","occupied","limit"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ThreadWorkspace"}},"next_cursor":{"type":["string","null"]},"occupied":{"type":"integer"},"limit":{"type":"integer"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agents/{id}/spark/workspaces/{workspace_id}":{"post":{"operationId":"post_api_v1_organizations_organization_id_agents_id_spark_workspaces_workspace_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Durable workspace action; deletion is not confirmed until both resources return 404","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ThreadWorkspace"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["action"],"properties":{"action":{"type":"string","enum":["keep","delete"]}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/agreement_access_request":{"post":{"operationId":"post_api_v1_organizations_organization_id_agreement_access_request","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Agreement access requested; the refreshed agreements page","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationAgreementsPage"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/artefacts":{"get":{"operationId":"api_v1_organization_artefacts","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"Opaque next cursor from the preceding page with the same filters."},{"name":"q","in":"query","schema":{"type":"string","maxLength":200},"description":null,"filename or slug.":null},{"name":"source","in":"query","schema":{"type":"string","enum":["automation","agent","user"]}},{"name":"kind","in":"query","schema":{"type":"string","maxLength":200}},{"name":"harness","in":"query","schema":{"type":"string","maxLength":200}},{"name":"model","in":"query","schema":{"type":"string","maxLength":200}},{"name":"author","in":"query","schema":{"type":"string","maxLength":200},"description":"Publisher public ID, email, or unambiguous name."},{"name":"repo","in":"query","schema":{"type":"string","maxLength":200},"description":"Repository slug or public ID within the organization."},{"name":"slug","in":"query","schema":{"type":"string","maxLength":200},"description":"List available versions of one artefact slug."},{"name":"editable","in":"query","schema":{"type":"string","enum":["true"]},"description":"Only the newest version of each Markdown document","for editing.":null}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"pagination":{"type":"object","required":["limit"],"properties":{"limit":{"type":"integer"},"next":{"type":"string"}}},"artefacts":{"type":"array","items":{"$ref":"#/components/schemas/Artefact"}}},"required":["artefacts","pagination"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Author or admin required"},"404":{"description":"Not found"},"422":{"description":"Invalid document or quota exceeded"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_artefacts","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required"},"403":{"description":"Author or admin required"},"404":{"description":"Not found"},"422":{"description":"Invalid document or quota exceeded"},"502":{"description":"Bad gateway"},"201":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"artefact":{"$ref":"#/components/schemas/Artefact"}},"required":["artefact"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","oneOf":[{"required":["file"]},{"required":["files","paths","entrypoint"]}],"properties":{"files":{"type":"array","maxItems":200,"items":{"type":"string","format":"binary"}},"paths":{"type":"string","description":"JSON array of relative paths corresponding to files."},"entrypoint":{"type":"string","description":"Relative path opened by the viewer."},"title":{"type":"string"},"slug":{"type":"string"},"description":{"type":"string"},"kind":{"type":"string"},"source":{"type":"string","enum":["agent","user"]},"harness":{"type":"string"},"harness_version":{"type":"string"},"model":{"type":"string"},"repository_id":{"type":"string","description":"Repository public ID or slug within the publishing organization."},"vcs_agent_session_id":{"type":"string"},"vcs_agent_checkpoint_id":{"type":"string"},"metadata_json":{"type":"object","description":"Allowlisted VcsAgentMetadata provenance; unknown fields are discarded.","additionalProperties":true},"file":{"type":"string","format":"binary"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/artefacts/page":{"get":{"operationId":"page_api_v1_organization_artefacts","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1}},{"name":"q","in":"query","schema":{"type":"string","maxLength":200}},{"name":"kind","in":"query","schema":{"type":"string","maxLength":200}},{"name":"harness","in":"query","schema":{"type":"string","maxLength":200}},{"name":"model","in":"query","schema":{"type":"string","maxLength":200}},{"name":"author","in":"query","schema":{"type":"string","maxLength":200}},{"name":"repo","in":"query","schema":{"type":"string","maxLength":200}},{"name":"slug","in":"query","schema":{"type":"string","maxLength":200}},{"name":"source","in":"query","schema":{"type":"string","enum":["automation","agent","user"]}}],"responses":{"200":{"description":"Authorized private Artefacts page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ArtefactIndexPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Resource not found"},"422":{"description":"Invalid selection"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/artefacts/{artefact_ref}":{"get":{"operationId":"api_v1_organization_artefact","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"artefact_ref","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"artefact":{"$ref":"#/components/schemas/Artefact"}},"required":["artefact"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Author or admin required"},"404":{"description":"Not found"},"422":{"description":"Invalid document or quota exceeded"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_organization_id_artefacts_artefact_ref_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"artefact_ref","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"artefact":{"$ref":"#/components/schemas/Artefact"}},"required":["artefact"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Author or admin required"},"404":{"description":"Not found"},"422":{"description":"Invalid document or quota exceeded"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"title":{"type":"string"},"description":{"type":"string"},"kind":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_artefacts_artefact_ref_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"artefact_ref","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_organizations_organization_id_artefacts_artefact_ref_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"artefact_ref","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required"},"403":{"description":"Author or admin required"},"404":{"description":"Not found"},"422":{"description":"Invalid document or quota exceeded"},"502":{"description":"Bad gateway"},"204":{"description":"Deleted"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/artefacts/{artefact_ref}/comment_threads":{"get":{"operationId":"comment_threads_api_v1_organization_artefact","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"artefact_ref","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Threads in creation order","content":{"application/json":{"schema":{"type":"object","required":["threads"],"properties":{"threads":{"type":"array","items":{"$ref":"#/components/schemas/ArtefactCommentThread"}}}}}}},"404":{"description":"Not found"}},"security":[{"bearerAuth":[]}],"summary":"List comment threads on a document"},"post":{"operationId":"post_api_v1_organizations_organization_id_artefacts_artefact_ref_comment_threads","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"artefact_ref","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Thread created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtefactCommentThreadEnvelope"}}}},"404":{"description":"Not found"},"409":{"description":"The anchor already has a thread"},"422":{"description":"Invalid anchor or comment"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["anchor","body"],"properties":{"anchor":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$","description":"The `#anchor` written into the Markdown."},"quote":{"type":"string","maxLength":1000},"body":{"type":"string","maxLength":10000}}}}}},"security":[{"bearerAuth":[]}],"summary":"Start a comment thread on anchored text"}},"/api/v1/organizations/{organization_id}/artefacts/{artefact_ref}/comment_threads/{anchor}":{"patch":{"operationId":"patch_api_v1_organizations_organization_id_artefacts_artefact_ref_comment_threads_anchor_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"artefact_ref","in":"path","required":true,"schema":{"type":"string"}},{"name":"anchor","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Thread updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtefactCommentThreadEnvelope"}}}},"404":{"description":"Not found"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["resolved"],"properties":{"resolved":{"type":"boolean"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Resolve or reopen a thread"}},"/api/v1/organizations/{organization_id}/artefacts/{artefact_ref}/comment_threads/{anchor}/comments":{"post":{"operationId":"post_api_v1_organizations_organization_id_artefacts_artefact_ref_comment_threads_anchor_comments","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"artefact_ref","in":"path","required":true,"schema":{"type":"string"}},{"name":"anchor","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Reply added","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtefactCommentThreadEnvelope"}}}},"404":{"description":"Not found"},"422":{"description":"Invalid comment"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["body"],"properties":{"body":{"type":"string","maxLength":10000}}}}}},"security":[{"bearerAuth":[]}],"summary":"Reply to a thread"}},"/api/v1/organizations/{organization_id}/artefacts/{artefact_ref}/download":{"get":{"operationId":"download_api_v1_organization_artefact","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"artefact_ref","in":"path","required":true,"schema":{"type":"string"}},{"name":"path","in":"query","schema":{"type":"string"},"description":"Exact file path within the selected revision manifest."}],"responses":{"200":{"description":"Private attachment","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"401":{"description":"Authentication required"},"403":{"description":"Author or admin required"},"404":{"description":"Not found"},"422":{"description":"Invalid document or quota exceeded"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/artefacts/{artefact_ref}/draft":{"put":{"operationId":"draft_api_v1_organization_artefact","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"artefact_ref","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Working copy saved","content":{"application/json":{"schema":{"type":"object","required":["revision","version"],"properties":{"revision":{"type":"integer","description":"The working copy's new revision."},"version":{"type":"integer","description":"The newest published version."}}}}}},"404":{"description":"Not found"},"409":{"description":"Someone else saved the working copy or a newer version first","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"revision":{"type":"integer"},"latest_version":{"type":"integer"}}}}}},"422":{"description":"Not the newest version of an editable Markdown document, or invalid content"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["content","revision"],"properties":{"content":{"type":"string","description":"Markdown, including CriticMarkup suggestions and comment anchors."},"revision":{"type":"integer","minimum":0,"description":"The working-copy revision the editor last saw."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Autosave the working copy of the newest Markdown version","description":"Replaces the shared working copy. A numbered version is published from it after two quiet minutes, before another person's edits, or before any other publish."}},"/api/v1/organizations/{organization_id}/artefacts/{artefact_ref}/page":{"get":{"operationId":"page_api_v1_organization_artefact","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"artefact_ref","in":"path","required":true,"schema":{"type":"string"}},{"name":"version","in":"query","schema":{"type":"integer","minimum":1}},{"name":"versions_page","in":"query","schema":{"type":"integer","minimum":1}},{"name":"file","in":"query","schema":{"type":"string","maxLength":500}}],"responses":{"200":{"description":"Authorized private Artefacts page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ArtefactDetailPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Resource not found"},"422":{"description":"Invalid selection"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/artefacts/{artefact_ref}/revisions":{"post":{"operationId":"revisions_api_v1_organization_artefact","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"artefact_ref","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Revision published","content":{"application/json":{"schema":{"type":"object","required":["artefact"],"properties":{"artefact":{"$ref":"#/components/schemas/Artefact"}}}}}},"404":{"description":"Not found"},"409":{"description":"A newer version was saved first","content":{"application/json":{"schema":{"type":"object","required":["error","latest_version"],"properties":{"error":{"type":"string"},"latest_version":{"type":"integer"}}}}}},"422":{"description":"Not an editable Markdown document, or invalid content"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["content","base_version"],"properties":{"content":{"type":"string","description":"Markdown, including CriticMarkup suggestions and comment anchors."},"base_version":{"type":"integer","minimum":1,"description":"The newest version the editor started from."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Save an edited Markdown document as its next revision"}},"/api/v1/organizations/{organization_id}/artefacts/{artefact_ref}/view_tokens":{"post":{"operationId":"view_tokens_api_v1_organization_artefact","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"artefact_ref","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Short-lived viewer handshake URL","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["viewer_url","expires_in"],"properties":{"viewer_url":{"type":"string","format":"uri"},"expires_in":{"type":"integer"}}}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Document or membership unavailable"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/audit_events":{"get":{"operationId":"api_v1_organization_audit_events","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Organization audit events","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["audit_events","pagination"],"properties":{"audit_events":{"type":"array","items":{"$ref":"#/components/schemas/AuditEvent"}},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Inspect organization audit history","description":"Administrator-only, paginated metadata history. Available without observability services; contains no secret values."}},"/api/v1/organizations/{organization_id}/billing":{"get":{"operationId":"api_v1_organization_billing","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Billing page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BillingPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"The billing page contract for an organization","description":"Customer, subscription, the package entitlements are computed from (the subscription's, or the public Team package for an organization that has not subscribed), per-meter entitlements, add-ons, budget, and the Metronome draft-invoice preview. Any member may read it."}},"/api/v1/organizations/{organization_id}/billing/addons/{addon_key}":{"put":{"operationId":"put_api_v1_organizations_organization_id_billing_addons_addon_key_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"addon_key","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated billing page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BillingPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["quantity"],"properties":{"quantity":{"type":"integer","minimum":0}}}}}},"security":[{"bearerAuth":[]}],"summary":"Set an add-on quantity on the subscription (owner); 0 removes it"}},"/api/v1/organizations/{organization_id}/billing/budget":{"patch":{"operationId":"api_v1_organization_billing_budget","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated billing page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BillingPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Set or clear the monthly usage budget (owner)"},"put":{"operationId":"put_api_v1_organizations_organization_id_billing_budget","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated billing page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BillingPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"monthly_cap_cents":{"type":["integer","null"],"description":"Null clears the budget."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Set or clear the monthly usage budget (owner)"}},"/api/v1/organizations/{organization_id}/billing/checkout_sessions":{"post":{"operationId":"api_v1_organization_billing_checkout_sessions","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"The hosted Checkout URL to redirect the browser to","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingHostedSession"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"success_url":{"type":"string"},"cancel_url":{"type":"string"},"coupon_code":{"type":"string","maxLength":200},"package_key":{"type":"string"},"package_revision":{"type":"integer","minimum":1},"entry_point":{"type":"string","enum":["onboarding","billing_settings"],"description":"Where the owner chose to pay, for product analytics."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Create a Stripe Checkout Session (owner)","description":"New prepaid subscriptions purchase their monthly package through Stripe subscription Checkout, including Stripe's native promotion-code field. A 100% discount can complete without a card. Included minutes require a verified paid invoice, including a verified zero-total invoice. Existing Metronome enrollments retain setup-mode Checkout and their original terms. `success_url` and `cancel_url` are honoured only on the frontend origin."}},"/api/v1/organizations/{organization_id}/billing/contact":{"patch":{"operationId":"api_v1_organization_billing_contact","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated billing page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BillingPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Invalid email"},"502":{"description":"Stripe contact synchronization failed"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["billing_email"],"properties":{"billing_email":{"type":"string","format":"email"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Set the invoice recipient email (owner)"},"put":{"operationId":"put_api_v1_organizations_organization_id_billing_contact","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/billing/extra_spend":{"patch":{"operationId":"api_v1_organization_billing_extra_spend","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated billing page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BillingPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["enabled"],"properties":{"enabled":{"type":"boolean"},"monthly_cap_cents":{"type":["integer","null"],"minimum":1,"maximum":2147483647,"description":"Monthly limit across all metered overages, excluding plan fees. Null removes the limit; omission preserves it."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Set extra-spend consent and an optional monthly overage limit (owner)"},"put":{"operationId":"put_api_v1_organizations_organization_id_billing_extra_spend","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated billing page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BillingPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["enabled"],"properties":{"enabled":{"type":"boolean"},"monthly_cap_cents":{"type":["integer","null"],"minimum":1,"maximum":2147483647,"description":"Monthly limit across all metered overages, excluding plan fees. Null removes the limit; omission preserves it."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Set extra-spend consent and an optional monthly overage limit (owner)"}},"/api/v1/organizations/{organization_id}/billing/invoices":{"get":{"operationId":"api_v1_organization_billing_invoices","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Invoices","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BillingInvoicesPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"The Metronome draft and the Stripe invoice list","description":"`upcoming` is what Metronome would invoice now (the current draft total, its period, and the credit balance that offsets it), null without a subscription or when the preview is unavailable. `invoices` is the organization's Stripe invoices, newest first, with the hosted page and PDF links; empty without a Stripe customer. Cached for a minute per organization. Any member may read it. This is its own read rather than part of the page contract because Stripe answers slowly and the usage page must not wait on it."}},"/api/v1/organizations/{organization_id}/billing/portal_sessions":{"post":{"operationId":"api_v1_organization_billing_portal_sessions","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"The portal URL to redirect the browser to","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingHostedSession"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"return_url":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Create a Stripe Customer Portal session (owner)"}},"/api/v1/organizations/{organization_id}/billing/prepaid_periods/{id}":{"get":{"operationId":"api_v1_organization_billing_prepaid_period","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Monthly payment and service period","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BillingPrepaidPeriod"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read one monthly package payment"}},"/api/v1/organizations/{organization_id}/billing/prepaid_periods/{id}/payment_page":{"get":{"operationId":"payment_page_api_v1_organization_billing_prepaid_period","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current Stripe hosted invoice URL","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BillingHostedSession"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"The payment provider is unavailable"},"409":{"description":"The payment page is not ready"}},"security":[{"bearerAuth":[]}],"summary":"Refresh the monthly payment or receipt page","description":"Owners can confirm unpaid fees. Members can read paid receipts."}},"/api/v1/organizations/{organization_id}/billing/prepaid_purchases":{"get":{"operationId":"api_v1_organization_billing_prepaid_purchases","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Purchases, newest first","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["purchases","pagination"],"properties":{"purchases":{"type":"array","items":{"$ref":"#/components/schemas/BillingPrepaidPurchase"}},"pagination":{"$ref":"#/components/schemas/BillingPrepaidPagination"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Browser minute purchases for this organization"},"post":{"operationId":"post_api_v1_organizations_organization_id_billing_prepaid_purchases","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Purchase accepted for payment reconciliation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingPrepaidPurchasePage"}}}},"422":{"description":"Invalid purchase or no active prepaid package","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingPrepaidPurchaseRejection"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["minutes","request_key"],"properties":{"minutes":{"type":"integer","enum":[100,500,1000]},"request_key":{"type":"string","minLength":1,"maxLength":36}}}}}},"security":[{"bearerAuth":[]}],"summary":"Request a prepaid top-up (owner)","description":"Reusing a request key recovers the original purchase. Prices are determined by the server."}},"/api/v1/organizations/{organization_id}/billing/prepaid_purchases/{id}":{"get":{"operationId":"api_v1_organization_billing_prepaid_purchase","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Purchase status and balance","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BillingPrepaidPurchasePage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read a purchase and the current prepaid balance"}},"/api/v1/organizations/{organization_id}/billing/prepaid_purchases/{id}/payment_page":{"get":{"operationId":"payment_page_api_v1_organization_billing_prepaid_purchase","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current hosted invoice URL","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BillingHostedSession"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"The payment provider is unavailable"},"409":{"description":"The payment page is not ready"}},"security":[{"bearerAuth":[]}],"summary":"Refresh a Stripe payment or receipt page","description":"An owner can confirm an unpaid purchase. Members can read paid receipts."}},"/api/v1/organizations/{organization_id}/billing/subscription":{"patch":{"operationId":"api_v1_organization_billing_subscription","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated billing page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BillingPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["cancel_at_period_end"],"properties":{"cancel_at_period_end":{"type":"boolean"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Cancel or resume the subscription at period end (owner)"},"put":{"operationId":"put_api_v1_organizations_organization_id_billing_subscription","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated billing page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BillingPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Cancel or resume the subscription at period end (owner)"}},"/api/v1/organizations/{organization_id}/billing/token_top_ups":{"post":{"operationId":"api_v1_organization_billing_token_top_ups","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Stripe Checkout URL; credit is granted only after verified payment.","content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["amount_cents","request_key"],"properties":{"amount_cents":{"type":"integer","enum":[1000,2500,5000,10000]},"request_key":{"type":"string","format":"uuid"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Buy prepaid USD token credit"}},"/api/v1/organizations/{organization_id}/billing/usage":{"get":{"operationId":"api_v1_organization_billing_usage","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Meters","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BillingUsage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"The entitlement meter table for the current period"}},"/api/v1/organizations/{organization_id}/billing/usage/breakdown":{"get":{"operationId":"usage_breakdown_api_v1_organization_billing","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"meter","in":"query","required":false,"schema":{"type":"string"},"description":"A meter key; without one the series cover every meter and `subjects` is empty."},{"name":"window","in":"query","required":false,"schema":{"type":"string","enum":["24h","7d","period"],"default":"24h"}}],"responses":{"200":{"description":"Usage breakdown","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BillingUsageBreakdown"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"400":{"description":"Unknown meter or window"}},"security":[{"bearerAuth":[]}],"summary":"The live usage breakdown from the Tinybird pipes, or the rollup fallback","description":"The last 24 hours at 5-minute resolution, the hourly series and totals for `window`, and (when `meter` is given) the top subjects for that meter. `source` is `tinybird` when the pipes answered and `rollup` when Rails served its own hourly rollups instead; a rollup-sourced breakdown has no subjects and lags by up to an hour. Any member may read it."}},"/api/v1/organizations/{organization_id}/browser_sessions":{"post":{"operationId":"api_v1_browser_runner_sessions","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":255}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Invalid context, unavailable credential, exhausted capacity or funding, or paused admission."},"502":{"description":"Bad gateway"},"202":{"description":"Admitted or previously created browser session","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserSession"}}}},"409":{"description":"The idempotency key belongs to a different request."}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"idempotency_key":{"type":"string","minLength":1,"maxLength":255},"project_id":{"type":"string","description":"Optional project slug or public ID."},"environment_id":{"type":"string","description":"Optional ready website environment slug or public ID within the selected project."},"credential_id":{"type":"string","description":"Optional configured credential public ID within the selected project."},"url":{"type":"string","description":"Initial HTTP or HTTPS URL; defaults to the selected environment or project URL, otherwise a blank page."},"max_seconds":{"type":"integer","minimum":60,"maximum":43200,"default":900},"controller":{"type":"string","enum":["idle","agent","external"],"default":"external"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Create a reusable browser with optional project context","description":"Organization admins can open a standalone browser or select an owned project, environment and credential. Supply an Idempotency-Key header or idempotency_key in the JSON body. The browser runs until explicitly closed or its lifetime expires; replaying creation returns the same browser. Full CDP is available in external control, including with selected project credentials."}},"/api/v1/organizations/{organization_id}/browser_sessions/{browser_session_id}/connections":{"post":{"operationId":"api_v1_connections","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"browser_session_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":255}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Stale generation or active task prevents connection rotation."},"502":{"description":"Bad gateway"},"202":{"description":"External connection handoff accepted or replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserControl"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["generation"],"properties":{"generation":{"type":"integer","minimum":0},"idempotency_key":{"type":"string","minLength":1,"maxLength":255}}}}}},"security":[{"bearerAuth":[]}],"summary":"Issue or rotate external browser CDP control","description":"Creates a generation-bound handoff to external control using the same drain and revocation rules. Read its control receipt until completed. Connections expire on the next handoff or session closure/expiry."}},"/api/v1/organizations/{organization_id}/browser_sessions/{browser_session_id}/control":{"post":{"operationId":"api_v1_control","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"browser_session_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":255}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Stale generation or active work prevents handoff."},"502":{"description":"Bad gateway"},"202":{"description":"Control handoff accepted or replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserControl"}}}},"409":{"description":"The idempotency key belongs to a changed handoff."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["controller","generation"],"properties":{"controller":{"type":"string","enum":["idle","agent","external"]},"generation":{"type":"integer","minimum":0},"idempotency_key":{"type":"string","minLength":1,"maxLength":255}}}}}},"security":[{"bearerAuth":[]}],"summary":"Transfer exclusive browser input control","description":"Supply the session's current control_generation as generation and a stable Idempotency-Key. The handoff drains dispatched actions, revokes prior CDP connections and invalidates old refs. Unsettled effects block a competing controller. Read the returned control receipt until complete."}},"/api/v1/organizations/{organization_id}/browser_sessions/{browser_session_id}/controls/{id}":{"get":{"operationId":"get_api_v1_organizations_organization_id_browser_sessions_browser_session_id_controls_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"browser_session_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Control handoff state; an old generation never returns a current connection","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BrowserControl"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read a control handoff and its current CDP capability"}},"/api/v1/organizations/{organization_id}/browser_sessions/{browser_session_id}/events":{"get":{"operationId":"api_v1_events","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"browser_session_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"after","in":"query","schema":{"type":"string"},"description":"Cursor from the same browser session."}],"responses":{"200":{"description":"Up to 100 ordered events without private model reasoning","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["items","next_cursor","truncated"],"properties":{"items":{"type":"array","maxItems":100,"items":{"$ref":"#/components/schemas/BrowserEvent"}},"next_cursor":{"type":"string","nullable":true},"truncated":{"type":"boolean"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read resumable browser task activity and completion events"}},"/api/v1/organizations/{organization_id}/browser_sessions/{browser_session_id}/media":{"get":{"operationId":"api_v1_media","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"browser_session_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Up to 256 captures belonging to this browser session","content":{"application/json":{"schema":{"type":"array","additionalProperties":true,"maxItems":256,"items":{"$ref":"#/components/schemas/BrowserMedia"}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List retained screenshots and video clips"}},"/api/v1/organizations/{organization_id}/browser_sessions/{browser_session_id}/media/{id}":{"get":{"operationId":"get_api_v1_organizations_organization_id_browser_sessions_browser_session_id_media_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"browser_session_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Capture state and retained file metadata","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BrowserMedia"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read capture progress and refresh authorized playback links"}},"/api/v1/organizations/{organization_id}/browser_sessions/{browser_session_id}/media/{id}/files/{file_id}":{"get":{"operationId":"get_api_v1_organizations_organization_id_browser_sessions_browser_session_id_media_id_files_file_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"browser_session_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"inline","in":"query","schema":{"type":"boolean","default":false}},{"name":"Range","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Retained file bytes","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"image/png":{"schema":{"type":"string","format":"binary"}},"video/webm":{"schema":{"type":"string","format":"binary"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"File is unavailable or its retention has expired."},"502":{"description":"Bad gateway"},"206":{"description":"Requested byte range","content":{"video/webm":{"schema":{"type":"string","format":"binary"}}}},"302":{"description":"Short-lived authorized playback URL."},"416":{"description":"Requested byte range is unsatisfiable."}},"security":[{"bearerAuth":[]}],"summary":"Download or play one retained screenshot or video segment","description":"Organization-admin authorization applies after the browser closes too. Video supports byte ranges and may redirect to a short-lived immutable-object capability. Expired or unavailable files are refused."}},"/api/v1/organizations/{organization_id}/browser_sessions/{browser_session_id}/recordings":{"post":{"operationId":"api_v1_recordings","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"browser_session_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":255}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Recording busy or browser capture unavailable."},"502":{"description":"Bad gateway"},"202":{"description":"Recording accepted or replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserMedia"}}}},"409":{"description":"The idempotency key belongs to a different capture."}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BrowserCaptureRequest"}}}},"security":[{"bearerAuth":[]}],"summary":"Start a retained video of the browser's selected tab","description":"One recording runs at a time. Supply a stable Idempotency-Key. Capture spans agent and CDP control; completed segments are retained incrementally. A recording error preserves already retained footage as partial."}},"/api/v1/organizations/{organization_id}/browser_sessions/{browser_session_id}/recordings/{id}/stop":{"post":{"operationId":"post_api_v1_organizations_organization_id_browser_sessions_browser_session_id_recordings_id_stop","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"browser_session_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Recording stop requested or already finished","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserMedia"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Stop a video clip without closing the browser","description":"Idempotently records the stop request even if the asynchronous start is pending. Read the capture until finalization finishes before starting another clip."}},"/api/v1/organizations/{organization_id}/browser_sessions/{browser_session_id}/screenshots":{"post":{"operationId":"api_v1_screenshots","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"browser_session_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":255}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Capture unavailable or its session budget is exhausted."},"502":{"description":"Bad gateway"},"202":{"description":"Screenshot accepted or replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserMedia"}}}},"409":{"description":"The idempotency key belongs to a different capture."}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BrowserCaptureRequest"}}}},"security":[{"bearerAuth":[]}],"summary":"Capture the browser's selected tab as a retained screenshot","description":"Admin-only retained capture. Supply Idempotency-Key in the header or idempotency_key in the body. Set wait to true to capture within this request; otherwise poll until ready. The durable capture is recoverable after a lost response and its files remain available after the browser closes."}},"/api/v1/organizations/{organization_id}/browser_sessions/{browser_session_id}/tasks":{"post":{"operationId":"api_v1_tasks","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"browser_session_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":255}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Invalid instruction or unavailable browser authority."},"502":{"description":"Bad gateway"},"202":{"description":"Instruction accepted or replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserTask"}}}},"409":{"description":"The idempotency key belongs to a changed instruction or current task/control work prevents admission."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["instruction"],"properties":{"instruction":{"type":"string","minLength":1,"maxLength":32000},"outcome":{"type":"string","maxLength":8000},"max_seconds":{"type":"integer","minimum":10,"maximum":900,"default":120},"max_rounds":{"type":"integer","minimum":1,"maximum":400,"default":100},"idempotency_key":{"type":"string","minLength":1,"maxLength":255}}}}}},"security":[{"bearerAuth":[]}],"summary":"Execute a plain-text instruction in the existing browser","description":"Admin-only asynchronous work. An instruction acquires agent control from an idle, agent or external controller before model dispatch, draining settled CDP input and revoking old connections. Unsettled effects block the handoff. One task or handoff owns the browser at a time. Completion leaves the browser open; recording is independent. Reuse Idempotency-Key on retries."}},"/api/v1/organizations/{organization_id}/browser_sessions/{browser_session_id}/tasks/{id}":{"get":{"operationId":"get_api_v1_organizations_organization_id_browser_sessions_browser_session_id_tasks_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"browser_session_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Browser task state","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BrowserTask"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read task activity and its retained result"}},"/api/v1/organizations/{organization_id}/browser_sessions/{browser_session_id}/tasks/{id}/cancel":{"post":{"operationId":"post_api_v1_organizations_organization_id_browser_sessions_browser_session_id_tasks_id_cancel","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"browser_session_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Task cancellation requested or already terminal","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserTask"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Stop a task while preserving its browser and recording","description":"Idempotently requests cancellation. Stopping retains the task's exclusive slot until its input generation is fenced. Unknown in-flight application effects are reported separately."}},"/api/v1/organizations/{organization_id}/browser_sessions/{id}":{"get":{"operationId":"api_v1_browser_runner_session","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Admin-only browser state; connection capabilities expire with control or session closure.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/BrowserSession"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read a browser session and its current connection capabilities"},"delete":{"operationId":"delete_api_v1_organizations_organization_id_browser_sessions_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Closure requested or already finished","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserSession"}}}}},"security":[{"bearerAuth":[]}],"summary":"Close a browser session and dispose its owned machine","description":"Closure is asynchronous and idempotent. Funding remains held while allocation or provider cleanup is outstanding. Read the session until closed_at is present to confirm completion."}},"/api/v1/organizations/{organization_id}/control_computers":{"get":{"operationId":"controlComputersList","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"persistent_agent_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"observe_connection","in":"query","description":"Opt in to a bounded live control connection check after loading metadata. Provider readiness and execution authorization remain separate.","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Current authorized local agent control result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ControlComputers"}}}},"400":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"401":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/control_computers/{computer}/consent":{"patch":{"operationId":"controlComputerConsentUpdate","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"computer","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current authorized local agent control result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ControlComputerResponse"}}}},"400":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"401":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ControlComputerConsentInput"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/control_computers/{computer}/control_operations":{"post":{"operationId":"deviceControlCreateByComputer","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"computer","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Current authorized local agent control result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceControlOperationResponse"}}}},"400":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"401":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeviceControlInput"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/control_computers/{computer}/control_operations/{id}":{"get":{"operationId":"deviceControlShowByComputer","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"computer","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current authorized local agent control result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceControlOperationResponse"}}}},"400":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"401":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/devices":{"get":{"operationId":"devicesList","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"include_revoked","in":"query","required":false,"description":"Include this owner's revoked identity reservations for computer pairing recovery. Ordinary device lists omit them.","schema":{"type":"boolean","default":false}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Device enrollment metadata","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeviceRegistrationList"}}}},"401":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"502":{"description":"Bad gateway"},"400":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"security":[{"bearerAuth":[]}],"description":"Experimental organization-gated enrollment. Does not enable execution or issue native transport credentials."}},"/api/v1/organizations/{organization_id}/devices/pairings":{"post":{"operationId":"devicePairingCreate","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Device enrollment metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevicePairingResponse"}}}},"400":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"401":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DevicePairingInput"}}}},"security":[{"bearerAuth":[]}],"description":"Experimental organization-gated enrollment. Does not enable execution or issue native transport credentials."}},"/api/v1/organizations/{organization_id}/devices/pairings/{device_pairing_intent_id}/complete":{"post":{"operationId":"devicePairingComplete","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_pairing_intent_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Device enrollment metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceRegistrationResponse"}}}},"400":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"401":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DevicePairingProof"}}}},"security":[{"bearerAuth":[]}],"description":"Experimental organization-gated enrollment. Does not enable execution or issue native transport credentials."}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}":{"get":{"operationId":"deviceGet","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Device enrollment metadata","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeviceRegistrationResponse"}}}},"401":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"502":{"description":"Bad gateway"},"400":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"security":[{"bearerAuth":[]}],"description":"Experimental organization-gated enrollment. Does not enable execution or issue native transport credentials."}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/browser_operations":{"get":{"operationId":"deviceBrowserOperationIndex","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Waiting requests, oldest first","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceBrowserOperationQueue"}}}},"401":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"security":[{"bearerAuth":[]}],"summary":"In-app browser requests waiting for this computer","description":"Composal Desktop reads the agent requests addressed to its own computer's in-app browser. Only the computer's owner sees them. Claim each one before acting on it."}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/browser_operations/{id}/claim":{"post":{"operationId":"deviceBrowserOperationClaim","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The request to carry out","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceBrowserOperationClaim"}}}},"401":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Claim one in-app browser request","description":"A request can be claimed once, while it waits. The claim token answers it."}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/browser_operations/{id}/finish":{"post":{"operationId":"deviceBrowserOperationFinish","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Answer recorded","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["accepted"],"properties":{"accepted":{"type":"boolean","const":true}}}}}},"400":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"401":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeviceBrowserOperationFinishInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Answer a claimed in-app browser request","description":"Repeating the same answer is accepted; a different answer conflicts."}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/connection":{"post":{"operationId":"connection_api_v1_organization_device","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Identity-bound node connection; execution remains unavailable","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"connection":{"oneOf":[{"type":"object","properties":{"version":{"type":"integer","const":1},"device_id":{"type":"string","pattern":"^device_registration_"},"native_device_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"pairing_generation":{"type":"integer","minimum":1,"maximum":9007199254740991},"websocket_url":{"type":"string","format":"uri","pattern":"^wss://"},"bootstrap_token":{"type":"string","minLength":1,"maxLength":8192},"expires_at":{"type":"string","format":"date-time"}},"required":["version","device_id","native_device_id","pairing_generation","websocket_url","bootstrap_token","expires_at"],"additionalProperties":false},{"type":"object","properties":{"device_id":{"type":"string","pattern":"^device_registration_"},"native_device_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"pairing_generation":{"type":"integer","minimum":1,"maximum":9007199254740991},"version":{"type":"integer","const":2},"transport":{"type":"string","const":"https-control-v1"}},"required":["version","transport","device_id","native_device_id","pairing_generation"],"additionalProperties":false}]},"execution_available":{"type":"boolean","const":false}},"required":["connection","execution_available"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Current device owner authority required"},"404":{"description":"Device or transport rollout unavailable"},"422":{"description":"Invalid request fields"},"502":{"description":"Bad gateway"},"503":{"description":"Hosted node connection unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"transport":{"type":"string","const":"https-control-v1"}}}}}},"security":[{"bearerAuth":[]}],"description":"Issue a platform-selected computer connection for the current device owner. OCE clients negotiate signed HTTPS coding control without a legacy tenant or Gateway credential. Older tenant clients retain the native-key-bound node bootstrap. Neither response grants task execution."}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/control_operations":{"post":{"operationId":"deviceControlCreate","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Current authorized local agent control result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceControlOperationResponse"}}}},"400":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"401":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeviceControlInput"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/control_operations/{id}":{"get":{"operationId":"deviceControlShow","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current authorized local agent control result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceControlOperationResponse"}}}},"400":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"401":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/desktop_connection":{"post":{"operationId":"desktop_connection_api_v1_organization_device","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Paired Desktop connection metadata; execution still requires separate authority","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"connection":{"oneOf":[{"type":"object","properties":{"version":{"type":"integer","const":1},"device_id":{"type":"string","pattern":"^device_registration_"},"native_device_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"pairing_generation":{"type":"integer","minimum":1,"maximum":9007199254740991},"websocket_url":{"type":"string","format":"uri","pattern":"^wss://"},"bootstrap_token":{"type":"string","minLength":1,"maxLength":8192},"expires_at":{"type":"string","format":"date-time"}},"required":["version","device_id","native_device_id","pairing_generation","websocket_url","bootstrap_token","expires_at"],"additionalProperties":false},{"type":"object","properties":{"device_id":{"type":"string","pattern":"^device_registration_"},"native_device_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"pairing_generation":{"type":"integer","minimum":1,"maximum":9007199254740991},"version":{"type":"integer","const":2},"api_origin":{"type":"string","format":"uri","maxLength":2048},"native":{"type":"object","properties":{"version":{"type":"integer","const":1},"device_id":{"type":"string","pattern":"^device_registration_"},"native_device_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"pairing_generation":{"type":"integer","minimum":1,"maximum":9007199254740991},"websocket_url":{"type":"string","format":"uri","pattern":"^wss://"},"bootstrap_token":{"type":"string","minLength":1,"maxLength":8192},"expires_at":{"type":"string","format":"date-time"}},"required":["version","device_id","native_device_id","pairing_generation","websocket_url","bootstrap_token","expires_at"],"additionalProperties":false}},"required":["version","device_id","native_device_id","pairing_generation","api_origin"],"additionalProperties":false},{"type":"object","properties":{"device_id":{"type":"string","pattern":"^device_registration_"},"native_device_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"pairing_generation":{"type":"integer","minimum":1,"maximum":9007199254740991},"version":{"type":"integer","const":2},"transport":{"type":"string","const":"https-control-v1"}},"required":["version","transport","device_id","native_device_id","pairing_generation"],"additionalProperties":false}]},"execution_available":{"type":"boolean","const":false}},"required":["connection","execution_available"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Current device owner authority required"},"404":{"description":"Device or transport rollout unavailable"},"422":{"description":"Invalid request fields"},"502":{"description":"Bad gateway"},"503":{"description":"Hosted node connection unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"transport":{"type":"string","const":"https-control-v1"}}}}}},"security":[{"bearerAuth":[]}],"description":"Connect Desktop coding control using its existing paired native signing key. Version 2 contains credential-free coding metadata and an optional independently owned native task bootstrap. Coding control still requires current signed Rails admission and local machine consent. Native task unavailability does not block coding control. When coding control rollout is disabled, returns the existing version 1 native connection. OCE clients selecting https-control-v1 receive the current direct control descriptor."}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/folder_listings":{"post":{"operationId":"deviceFolderListingCreate","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Queued folder listing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceFolderListingResponse"}}}},"400":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"401":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeviceFolderListingInput"}}}},"security":[{"bearerAuth":[]}],"description":"Asks the caller's own computer for the subfolders of a folder. Poll the listing until it completes or fails."}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/folder_listings/{id}":{"get":{"operationId":"deviceFolderListingShow","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Folder listing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceFolderListingResponse"}}}},"401":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/grants":{"get":{"operationId":"deviceGrantsList","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Owner-scoped product grant metadata; execution remains unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceGrantList"}}}},"400":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"401":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"security":[{"bearerAuth":[]}],"description":"Experimental owner-managed user/agent grants. Does not issue native credentials or enable execution."},"post":{"operationId":"deviceGrantCreate","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Owner-scoped product grant metadata; execution remains unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceGrantResponse"}}}},"400":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"401":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeviceGrantInput"}}}},"security":[{"bearerAuth":[]}],"description":"Experimental owner-managed user/agent grants. Does not issue native credentials or enable execution."}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/grants/all_agents":{"post":{"operationId":"deviceGrantsAllAgents","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Owner-scoped product grant metadata; execution remains unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceAllAgentsAccessResponse"}}}},"400":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"401":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeviceAllAgentsAccessInput"}}}},"security":[{"bearerAuth":[]}],"description":"Owner only. While enabled, every agent the owner can use may use this computer for the owner's messages, including agents added later; missing owner grants are issued. Disabling keeps grants already issued."}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/grants/{device_grant_id}/revise":{"post":{"operationId":"deviceGrantRevise","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_grant_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Owner-scoped product grant metadata; execution remains unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceGrantResponse"}}}},"400":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"401":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeviceGrantRevisionInput"}}}},"security":[{"bearerAuth":[]}],"description":"Experimental owner-managed user/agent grants. Does not issue native credentials or enable execution."}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/grants/{device_grant_id}/revoke":{"post":{"operationId":"deviceGrantRevoke","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_grant_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Owner-scoped product grant metadata; execution remains unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceGrantResponse"}}}},"400":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"401":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Invalid, unavailable or unauthorized device grant request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":[],"properties":{}}}}},"security":[{"bearerAuth":[]}],"description":"Experimental owner-managed user/agent grants. Does not issue native credentials or enable execution."}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/local_events":{"post":{"operationId":"local_events_api_v1_organization_device","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Completion event recorded","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"recorded":{"type":"boolean","const":true}},"required":["recorded"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Owned device or enrollment unavailable"},"422":{"description":"Invalid event fields"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"event":{"type":"string","enum":["device_local_enabled","device_local_disabled","device_background_enabled","device_background_disabled"]}},"required":["event"]}}}},"security":[{"bearerAuth":[]}],"description":"Report completed desktop local-access or background-startup changes for an owned registered computer. Metadata only: this endpoint never grants or changes local or cloud execution authority. Folder paths, command text, arbitrary event names and extra fields are rejected."}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/process_surface":{"post":{"operationId":"process_surface_api_v1_organization_device","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Process surface approved; task and local authorization remain required","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"surface":{"oneOf":[{"type":"object","properties":{"version":{"type":"integer","const":1},"device_id":{"type":"string","pattern":"^device_registration_"},"native_device_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"pairing_generation":{"type":"integer","minimum":1,"maximum":9007199254740991},"commands":{"type":"array","items":{"type":"string","enum":["system.run","system.run.prepare","system.which"]},"minItems":3,"maxItems":3,"uniqueItems":true}},"required":["version","device_id","native_device_id","pairing_generation","commands"],"additionalProperties":false},{"type":"object","properties":{"device_id":{"type":"string","pattern":"^device_registration_"},"native_device_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"pairing_generation":{"type":"integer","minimum":1,"maximum":9007199254740991},"version":{"type":"integer","const":2},"transport":{"type":"string","const":"https-control-v1"},"commands":{"type":"array","items":{"type":"string"},"maxItems":0}},"required":["version","transport","device_id","native_device_id","pairing_generation","commands"],"additionalProperties":false}]},"local_approval_required":{"type":"boolean","const":true}},"required":["surface","local_approval_required"]}}}},"401":{"description":"Authentication required"},"403":{"description":"Current device owner authority required"},"404":{"description":"Device or transport rollout unavailable"},"422":{"description":"Invalid request fields"},"502":{"description":"Bad gateway"},"503":{"description":"Hosted node connection unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"transport":{"type":"string","const":"https-control-v1"}}}}}},"security":[{"bearerAuth":[]}],"description":"Confirm the selected computer execution transport for the current owner after local setup. OCE direct coding control returns version 2 with no native node commands. Legacy native nodes retain structural version 1 approval. Neither response is a task grant."}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/project_visibility":{"post":{"operationId":"deviceProjectVisibilityUpdate","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Device enrollment metadata","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeviceRegistrationResponse"}}}},"401":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"502":{"description":"Bad gateway"},"400":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeviceProjectVisibility"}}}},"security":[{"bearerAuth":[]}],"description":"Choose all folders or selected folders for project discovery and new threads. Owner only; version prevents stale overwrites."}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/projects/{id}":{"delete":{"operationId":"deviceProjectDestroy","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Project removed"},"401":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"security":[{"bearerAuth":[]}],"description":"Removes a folder from the computer's project list. Only the computer's owner can do this."}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/reconnect":{"post":{"operationId":"devicePairingReconnect","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Device enrollment metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevicePairingResponse"}}}},"400":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"401":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DevicePairingInput"}}}},"security":[{"bearerAuth":[]}],"description":"Issue an explicit owner-initiated reconnection challenge for a revoked computer. The existing device key must sign the version 2 challenge, including its exact registration and revoked pairing generation. Completion advances the generation and retains the same physical identity. Ordinary enrollment never restores a revoked device."}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/rename":{"post":{"operationId":"deviceRename","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Device enrollment metadata","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeviceRegistrationResponse"}}}},"401":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"502":{"description":"Bad gateway"},"400":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeviceRenameInput"}}}},"security":[{"bearerAuth":[]}],"description":"Rename an owned computer in this organization. Does not change pairing, grants or native execution authority."}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/retry_control":{"post":{"operationId":"retry_control_api_v1_organization_device","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Retry accepted, or the current attempt is already active; readiness remains separate"},"403":{"description":"Pairing or coding-control authority is unavailable"},"404":{"description":"Owned computer unavailable in this organization and environment"},"422":{"description":"Invalid request fields"},"503":{"description":"Independent coding-control service is not configured"},"401":{"description":"Sign-in required"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{}}}}},"security":[{"bearerAuth":[]}],"description":"Retry a failed or timed-out independent organization coding-control service using a current owned computer pairing. Keeps the existing service, storage and pairing, rotates the service generation and private credential, and enqueues at most one new attempt. A current healthy or active provisioning attempt is unchanged. Does not migrate a legacy tenant or start native model work."}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/revoke":{"post":{"operationId":"deviceRevoke","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Device enrollment metadata","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeviceRegistrationResponse"}}}},"401":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"502":{"description":"Bad gateway"},"400":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":[],"properties":{}}}}},"security":[{"bearerAuth":[]}],"description":"Experimental organization-gated enrollment. Does not enable execution or issue native transport credentials."}},"/api/v1/organizations/{organization_id}/devices/{device_registration_id}/user_browser_access":{"post":{"operationId":"deviceUserBrowserAccessUpdate","tags":["organizations","Devices"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"device_registration_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Device enrollment metadata","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeviceRegistrationResponse"}}}},"401":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"502":{"description":"Bad gateway"},"400":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request rejected or enrollment unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DeviceUserBrowserAccessInput"}}}},"security":[{"bearerAuth":[]}],"description":"Choose whether agents may use the owner's own Chrome-family browser on this computer: off, agent_tabs (tabs agents open or the owner shares) or all_tabs. Owner only."}},"/api/v1/organizations/{organization_id}/docker_builder_gateway/admit":{"post":{"operationId":"api_v1_organization_docker_builder_gateway_admit","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string"},"description":"Bearer organization builder session capability"}],"responses":{"200":{"description":"Trusted gateway state","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DockerBuilderGatewayConnection"}}}},"401":{"description":"Gateway or capability is not authorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"Capacity or generation conflict"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"idempotency_key":{"type":"string","maxLength":100}},"required":["idempotency_key"]}}}},"security":[{"bearerAuth":[]},{"DockerBuilderGatewayKey":[]}],"summary":"Trusted native gateway admit; requires platform credential"}},"/api/v1/organizations/{organization_id}/docker_builder_gateway/authorize":{"post":{"operationId":"api_v1_organization_docker_builder_gateway_authorize","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string"},"description":"Bearer organization builder session capability"}],"responses":{"200":{"description":"Trusted gateway state","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DockerBuilderGatewayConnection"}}}},"401":{"description":"Gateway or capability is not authorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"Capacity or generation conflict"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]},{"DockerBuilderGatewayKey":[]}],"summary":"Trusted native gateway authorize; requires platform credential"}},"/api/v1/organizations/{organization_id}/docker_builder_gateway/finish":{"post":{"operationId":"api_v1_organization_docker_builder_gateway_finish","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Trusted gateway state","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DockerBuilderGatewayCompletion"}}}},"401":{"description":"Gateway or capability is not authorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"Capacity or generation conflict"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"docker_builder_run_id":{"type":"string"},"generation":{"type":"integer"},"outcome":{"type":"string","enum":["succeeded","failed","canceled"]}},"required":["docker_builder_run_id","generation","outcome"]}}}},"security":[{"bearerAuth":[]},{"DockerBuilderGatewayKey":[]}],"summary":"Trusted native gateway finish; requires platform credential"}},"/api/v1/organizations/{organization_id}/docker_builder_sessions/authorize":{"post":{"operationId":"api_v1_organization_docker_builder_sessions_authorize","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Builder session","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DockerBuilderSessionResponse"}}}},"401":{"description":"Capability is no longer authorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Validate capability identity for the native gateway; does not admit a solve"}},"/api/v1/organizations/{organization_id}/docker_builder_sessions/{id}":{"get":{"operationId":"api_v1_organization_docker_builder_session","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Builder session","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DockerBuilderSessionResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_organizations_organization_id_docker_builder_sessions_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Session revoked; active native runs remain admitted until provider completion"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/docker_builder_sessions/{id}/refresh":{"post":{"operationId":"refresh_api_v1_organization_docker_builder_session","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Builder session","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DockerBuilderSessionIssued"}}}},"409":{"description":"Session expired, revoked, unauthorized, or from another generation"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Rotate a usable capability and revoke the old secret"}},"/api/v1/organizations/{organization_id}/docker_builder_settings":{"get":{"operationId":"api_v1_organization_docker_builder_settings","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Builder state","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DockerBuilderSettingsResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_organization_id_docker_builder_settings","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Builder state","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DockerBuilderSettingsResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DockerBuilderSettingsUpdate"}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_docker_builder_settings","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/docker_builders":{"get":{"operationId":"api_v1_organization_docker_builders","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"slug","in":"query","required":false,"description":"Exact builder slug, resolved within the authorized organization","schema":{"type":"string"}}],"responses":{"200":{"description":"Builder state","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DockerBuildersResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_docker_builders","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Builder state","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DockerBuilderResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DockerBuilderCreate"}}}},"security":[{"bearerAuth":[]}],"summary":"Create or reuse an organization builder without starting compute"}},"/api/v1/organizations/{organization_id}/docker_builders/{docker_builder_id}/sessions":{"post":{"operationId":"api_v1_organization_docker_builder_sessions","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"docker_builder_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Builder session","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DockerBuilderSessionIssued"}}}},"409":{"description":"Builder is not ready or actor is no longer authorized"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Issue a user-bound ten-minute builder capability"}},"/api/v1/organizations/{organization_id}/docker_builders/{id}":{"get":{"operationId":"api_v1_organization_docker_builder","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Builder state","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DockerBuilderResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_organization_id_docker_builders_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Builder state","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DockerBuilderResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DockerBuilderRename"}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_docker_builders_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/docker_builders/{id}/recover":{"post":{"operationId":"recover_api_v1_organization_docker_builder","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Builder is already sleeping","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DockerBuilderResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Recovery scheduled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DockerBuilderResponse"}}}},"409":{"description":"Builder is starting or its generation changed"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Administrator requests provider-confirmed recovery of a stuck builder","description":"Fences new admission before checkpointing the live VM. Active runs are marked failed only after the provider confirms quiescence; then the VM sleeps."}},"/api/v1/organizations/{organization_id}/docker_builders/{id}/sleep":{"post":{"operationId":"sleep_api_v1_organization_docker_builder","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Builder state","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DockerBuilderResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Builder state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DockerBuilderResponse"}}}},"409":{"description":"Builder state or active solves prevent this transition"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Request sleep for an organization builder"}},"/api/v1/organizations/{organization_id}/docker_builders/{id}/wake":{"post":{"operationId":"wake_api_v1_organization_docker_builder","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Builder state","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DockerBuilderResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Builder state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DockerBuilderResponse"}}}},"409":{"description":"Builder state or active solves prevent this transition"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Request wake for an organization builder"}},"/api/v1/organizations/{organization_id}/domain_dns_integrations":{"get":{"operationId":"api_v1_organization_domain_dns_integrations","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"DNS integrations in the organization","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["integrations"],"properties":{"integrations":{"type":"array","items":{"$ref":"#/components/schemas/DomainDnsIntegration"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_domain_dns_integrations","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Connected Cloudflare DNS integration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DomainDnsIntegration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Static site request failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaticSiteError"}}}},"502":{"description":"Bad gateway"},"201":{"description":"Connected Cloudflare DNS integration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainDnsIntegration"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["api_token"],"properties":{"api_token":{"type":"string","writeOnly":true},"account_label":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/git_imports":{"post":{"operationId":"api_v1_organization_git_imports","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Scoped Git upload destination","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitImportTransfer"}}}},"202":{"description":"Writer preparation is pending. Repeat the same idempotent creation request after Retry-After; no transfer credential is issued yet.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/GitImportStatus"},{"type":"object","required":["storage_status"],"properties":{"storage_status":{"type":"string","enum":["preparing"]}}}]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["idempotency_key","slug","destination_mode","root_path","source_branch"],"properties":{"idempotency_key":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"root_path":{"type":"string"},"source_branch":{"type":"string"},"target_branch":{"type":"string"},"destination_mode":{"type":"string","enum":["standalone","home"]},"git_default_branch":{"type":"string","description":"Original Git symbolic HEAD branch, independent of the branch selected for JJ conversion"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Reserve an isolated Git import destination without contacting JJ"}},"/api/v1/organizations/{organization_id}/github_app/installations":{"get":{"operationId":"api_v1_organization_github_app_installations","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"GitHub App installations linked to the organization","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["github_app_installations"],"properties":{"github_app_installations":{"type":"array","items":{"type":"object","required":["id","organization_id","installation_id","account_login","account_id","account_avatar_url","manage_access_url","status","permissions","permission_entries","installed_at","installed_at_label","suspended_at","suspended_at_label","created_at","created_at_label","updated_at","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"installation_id":{"type":"string"},"account_login":{"type":"string"},"account_id":{"type":"string","nullable":true},"account_avatar_url":{"type":"string","format":"uri","nullable":true},"manage_access_url":{"type":"string","format":"uri"},"status":{"type":"string","enum":["active","suspended"]},"permissions":{"type":"object","additionalProperties":true},"permission_entries":{"description":"GitHub's permission hash as a display-ready list, sorted by name.","type":"array","items":{"type":"object","required":["key","name","access"],"properties":{"key":{"type":"string"},"name":{"type":"string"},"access":{"type":"string"}}}},"installed_at":{"type":"string","format":"date-time","nullable":true},"installed_at_label":{"type":"string","nullable":true},"suspended_at":{"type":"string","format":"date-time","nullable":true},"suspended_at_label":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at":{"type":"string","format":"date-time"},"updated_at_label":{"type":"string","nullable":true}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/github_app/installations/{id}":{"delete":{"operationId":"api_v1_organization_github_app_installation","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"force","in":"query","required":false,"description":"Turn off dependent GitHub sync, CI, and in-flight landings instead of refusing.","schema":{"type":"boolean"}},{"name":"uninstall_on_github","in":"query","required":false,"description":"Also uninstall the App from the GitHub account.","schema":{"type":"boolean"}}],"responses":{"204":{"description":"The installation link was removed"},"401":{"description":"Unauthorized"},"403":{"description":"The actor is not an organization administrator"},"404":{"description":"Not found"},"409":{"description":"The installation is still in use and `force` was not supplied","content":{"application/json":{"schema":{"type":"object","required":["error","blockers"],"properties":{"error":{"type":"string"},"blockers":{"description":"Server-authored sentences naming what a forced disconnect would turn off.","type":"array","items":{"type":"string"}}}}}}},"502":{"description":"GitHub rejected the uninstall request"},"503":{"description":"GitHub App credentials are not configured, or GitHub is unreachable"}},"security":[{"bearerAuth":[]}],"summary":"Disconnect a GitHub App installation from the organization","description":"Requires an organization administrator. Removes the Vex link so the GitHub account can be linked to a different organization, which is not possible while the link exists. Refuses with 409 when GitHub sync, GitHub Actions CI, or an in-flight landing still depends on the installation; `force` turns those off as part of disconnecting. `uninstall_on_github` additionally uninstalls the App from the GitHub account and succeeds when it is already uninstalled.\n"}},"/api/v1/organizations/{organization_id}/github_app/installations/{id}/check_connection":{"post":{"operationId":"check_connection_api_v1_organization_github_app_installation","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"202":{"description":"Connection verification requested or already pending","content":{"application/json":{"schema":{"type":"object","required":["health"],"properties":{"health":{"$ref":"#/components/schemas/GithubConnectionHealth"}}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/github_ci_repositories":{"get":{"operationId":"api_v1_organization_github_ci_repositories","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","paused","archived"]}},{"name":"adoption_mode","in":"query","required":false,"schema":{"type":"string","enum":["shadow","reporting","required"]}}],"responses":{"200":{"description":"GitHub CI repositories","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["github_ci_repositories"],"properties":{"github_ci_repositories":{"type":"array","items":{"type":"object","required":["id","organization_id","github_app_installation_id","ci_runner_pool_id","github_repository_id","repository_owner","repository_name","repository_full_name","default_branch","status","adoption_mode","check_name_prefix","permission_status","last_webhook_delivery_id","last_webhook_event","last_webhook_action","last_webhook_at","last_webhook_at_label","last_head_sha","last_ref","last_pull_request_number","webhook_delivery_count","last_compatibility_status","last_error_message","metadata","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"github_app_installation_id":{"type":"string"},"ci_runner_pool_id":{"type":"string","nullable":true},"github_repository_id":{"type":"string"},"repository_owner":{"type":"string"},"repository_name":{"type":"string"},"repository_full_name":{"type":"string"},"default_branch":{"type":"string"},"status":{"type":"string","enum":["active","paused","archived"]},"adoption_mode":{"type":"string","enum":["shadow","reporting","required"]},"check_name_prefix":{"type":"string"},"permission_status":{"type":"string","enum":["unchecked","ok","missing"]},"last_webhook_delivery_id":{"type":"string","nullable":true},"last_webhook_event":{"type":"string","nullable":true},"last_webhook_action":{"type":"string","nullable":true},"last_webhook_at":{"type":"string","format":"date-time","nullable":true},"last_webhook_at_label":{"type":"string","nullable":true},"last_head_sha":{"type":"string","nullable":true},"last_ref":{"type":"string","nullable":true},"last_pull_request_number":{"type":"integer","nullable":true},"webhook_delivery_count":{"type":"integer"},"last_compatibility_status":{"type":"string","enum":["executable","warning","blocked","error"],"nullable":true},"last_error_message":{"type":"string","nullable":true},"metadata":{"type":"object","additionalProperties":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_github_ci_repositories","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"GitHub CI repository","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["id","organization_id","github_app_installation_id","ci_runner_pool_id","github_repository_id","repository_owner","repository_name","repository_full_name","default_branch","status","adoption_mode","check_name_prefix","permission_status","last_webhook_delivery_id","last_webhook_event","last_webhook_action","last_webhook_at","last_webhook_at_label","last_head_sha","last_ref","last_pull_request_number","webhook_delivery_count","last_compatibility_status","last_error_message","metadata","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"github_app_installation_id":{"type":"string"},"ci_runner_pool_id":{"type":"string","nullable":true},"github_repository_id":{"type":"string"},"repository_owner":{"type":"string"},"repository_name":{"type":"string"},"repository_full_name":{"type":"string"},"default_branch":{"type":"string"},"status":{"type":"string","enum":["active","paused","archived"]},"adoption_mode":{"type":"string","enum":["shadow","reporting","required"]},"check_name_prefix":{"type":"string"},"permission_status":{"type":"string","enum":["unchecked","ok","missing"]},"last_webhook_delivery_id":{"type":"string","nullable":true},"last_webhook_event":{"type":"string","nullable":true},"last_webhook_action":{"type":"string","nullable":true},"last_webhook_at":{"type":"string","format":"date-time","nullable":true},"last_webhook_at_label":{"type":"string","nullable":true},"last_head_sha":{"type":"string","nullable":true},"last_ref":{"type":"string","nullable":true},"last_pull_request_number":{"type":"integer","nullable":true},"webhook_delivery_count":{"type":"integer"},"last_compatibility_status":{"type":"string","enum":["executable","warning","blocked","error"],"nullable":true},"last_error_message":{"type":"string","nullable":true},"metadata":{"type":"object","additionalProperties":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"GitHub CI repository","content":{"application/json":{"schema":{"type":"object","required":["id","organization_id","github_app_installation_id","ci_runner_pool_id","github_repository_id","repository_owner","repository_name","repository_full_name","default_branch","status","adoption_mode","check_name_prefix","permission_status","last_webhook_delivery_id","last_webhook_event","last_webhook_action","last_webhook_at","last_webhook_at_label","last_head_sha","last_ref","last_pull_request_number","webhook_delivery_count","last_compatibility_status","last_error_message","metadata","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"github_app_installation_id":{"type":"string"},"ci_runner_pool_id":{"type":"string","nullable":true},"github_repository_id":{"type":"string"},"repository_owner":{"type":"string"},"repository_name":{"type":"string"},"repository_full_name":{"type":"string"},"default_branch":{"type":"string"},"status":{"type":"string","enum":["active","paused","archived"]},"adoption_mode":{"type":"string","enum":["shadow","reporting","required"]},"check_name_prefix":{"type":"string"},"permission_status":{"type":"string","enum":["unchecked","ok","missing"]},"last_webhook_delivery_id":{"type":"string","nullable":true},"last_webhook_event":{"type":"string","nullable":true},"last_webhook_action":{"type":"string","nullable":true},"last_webhook_at":{"type":"string","format":"date-time","nullable":true},"last_webhook_at_label":{"type":"string","nullable":true},"last_head_sha":{"type":"string","nullable":true},"last_ref":{"type":"string","nullable":true},"last_pull_request_number":{"type":"integer","nullable":true},"webhook_delivery_count":{"type":"integer"},"last_compatibility_status":{"type":"string","enum":["executable","warning","blocked","error"],"nullable":true},"last_error_message":{"type":"string","nullable":true},"metadata":{"type":"object","additionalProperties":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["github_app_installation_id","github_repository_id","repository_owner","repository_name"],"properties":{"github_app_installation_id":{"type":"string"},"ci_runner_pool_id":{"type":"string","nullable":true},"github_repository_id":{"type":"string"},"repository_owner":{"type":"string"},"repository_name":{"type":"string"},"default_branch":{"type":"string"},"status":{"type":"string","enum":["active","paused","archived"]},"adoption_mode":{"type":"string","enum":["shadow","reporting","required"]},"check_name_prefix":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/github_ci_repositories/{github_ci_repository_id}/compatibility_reports":{"get":{"operationId":"api_v1_organization_github_ci_repository_compatibility_reports","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"github_ci_repository_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["executable","warning","blocked","error"]}},{"name":"source_sha","in":"query","required":false,"schema":{"type":"string"}},{"name":"event_name","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"CI workflow compatibility reports","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["ci_workflow_compatibility_reports"],"properties":{"ci_workflow_compatibility_reports":{"type":"array","items":{"type":"object","required":["id","organization_id","github_ci_repository_id","ci_pipeline_id","ci_pipeline_run_id","workflow_path","source_sha","source_blob_sha","parser_version","workflow_name","event_name","event_action","ref_name","head_sha","pull_request_number","status","execution_allowed","required_secrets","runner_labels","referenced_actions","supported_features","diagnostics","warnings","errors","metadata","analyzed_at","analyzed_at_label","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"github_ci_repository_id":{"type":"string"},"ci_pipeline_id":{"type":"string","nullable":true},"ci_pipeline_run_id":{"type":"string","nullable":true},"workflow_path":{"type":"string"},"source_sha":{"type":"string"},"source_blob_sha":{"type":"string","nullable":true},"parser_version":{"type":"string"},"workflow_name":{"type":"string","nullable":true},"event_name":{"type":"string"},"event_action":{"type":"string","nullable":true},"ref_name":{"type":"string","nullable":true},"head_sha":{"type":"string","nullable":true},"pull_request_number":{"type":"integer","nullable":true},"status":{"type":"string","enum":["executable","warning","blocked","error"]},"execution_allowed":{"type":"boolean"},"required_secrets":{"type":"array","items":{"type":"string"}},"runner_labels":{"type":"array","items":{"type":"string"}},"referenced_actions":{"type":"array","items":{"type":"string"}},"supported_features":{"type":"object","additionalProperties":true},"diagnostics":{"type":"array","items":{"type":"object","required":["severity","code","path","message","metadata"],"properties":{"severity":{"type":"string","enum":["error","warning"]},"code":{"type":"string"},"path":{"type":"string"},"message":{"type":"string"},"metadata":{"type":"object","additionalProperties":true}}}},"warnings":{"type":"array","items":{"type":"object","required":["severity","code","path","message","metadata"],"properties":{"severity":{"type":"string","enum":["error","warning"]},"code":{"type":"string"},"path":{"type":"string"},"message":{"type":"string"},"metadata":{"type":"object","additionalProperties":true}}}},"errors":{"type":"array","items":{"type":"object","required":["severity","code","path","message","metadata"],"properties":{"severity":{"type":"string","enum":["error","warning"]},"code":{"type":"string"},"path":{"type":"string"},"message":{"type":"string"},"metadata":{"type":"object","additionalProperties":true}}}},"metadata":{"type":"object","additionalProperties":true},"analyzed_at":{"type":"string","format":"date-time"},"analyzed_at_label":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/github_ci_repositories/{github_ci_repository_id}/compatibility_reports/{id}":{"get":{"operationId":"api_v1_organization_github_ci_repository_compatibility_report","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"github_ci_repository_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"CI workflow compatibility report","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["id","organization_id","github_ci_repository_id","ci_pipeline_id","ci_pipeline_run_id","workflow_path","source_sha","source_blob_sha","parser_version","workflow_name","event_name","event_action","ref_name","head_sha","pull_request_number","status","execution_allowed","required_secrets","runner_labels","referenced_actions","supported_features","diagnostics","warnings","errors","metadata","analyzed_at","analyzed_at_label","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"github_ci_repository_id":{"type":"string"},"ci_pipeline_id":{"type":"string","nullable":true},"ci_pipeline_run_id":{"type":"string","nullable":true},"workflow_path":{"type":"string"},"source_sha":{"type":"string"},"source_blob_sha":{"type":"string","nullable":true},"parser_version":{"type":"string"},"workflow_name":{"type":"string","nullable":true},"event_name":{"type":"string"},"event_action":{"type":"string","nullable":true},"ref_name":{"type":"string","nullable":true},"head_sha":{"type":"string","nullable":true},"pull_request_number":{"type":"integer","nullable":true},"status":{"type":"string","enum":["executable","warning","blocked","error"]},"execution_allowed":{"type":"boolean"},"required_secrets":{"type":"array","items":{"type":"string"}},"runner_labels":{"type":"array","items":{"type":"string"}},"referenced_actions":{"type":"array","items":{"type":"string"}},"supported_features":{"type":"object","additionalProperties":true},"diagnostics":{"type":"array","items":{"type":"object","required":["severity","code","path","message","metadata"],"properties":{"severity":{"type":"string","enum":["error","warning"]},"code":{"type":"string"},"path":{"type":"string"},"message":{"type":"string"},"metadata":{"type":"object","additionalProperties":true}}}},"warnings":{"type":"array","items":{"type":"object","required":["severity","code","path","message","metadata"],"properties":{"severity":{"type":"string","enum":["error","warning"]},"code":{"type":"string"},"path":{"type":"string"},"message":{"type":"string"},"metadata":{"type":"object","additionalProperties":true}}}},"errors":{"type":"array","items":{"type":"object","required":["severity","code","path","message","metadata"],"properties":{"severity":{"type":"string","enum":["error","warning"]},"code":{"type":"string"},"path":{"type":"string"},"message":{"type":"string"},"metadata":{"type":"object","additionalProperties":true}}}},"metadata":{"type":"object","additionalProperties":true},"analyzed_at":{"type":"string","format":"date-time"},"analyzed_at_label":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/github_ci_repositories/{id}":{"get":{"operationId":"api_v1_organization_github_ci_repository","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"GitHub CI repository","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["id","organization_id","github_app_installation_id","ci_runner_pool_id","github_repository_id","repository_owner","repository_name","repository_full_name","default_branch","status","adoption_mode","check_name_prefix","permission_status","last_webhook_delivery_id","last_webhook_event","last_webhook_action","last_webhook_at","last_webhook_at_label","last_head_sha","last_ref","last_pull_request_number","webhook_delivery_count","last_compatibility_status","last_error_message","metadata","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"github_app_installation_id":{"type":"string"},"ci_runner_pool_id":{"type":"string","nullable":true},"github_repository_id":{"type":"string"},"repository_owner":{"type":"string"},"repository_name":{"type":"string"},"repository_full_name":{"type":"string"},"default_branch":{"type":"string"},"status":{"type":"string","enum":["active","paused","archived"]},"adoption_mode":{"type":"string","enum":["shadow","reporting","required"]},"check_name_prefix":{"type":"string"},"permission_status":{"type":"string","enum":["unchecked","ok","missing"]},"last_webhook_delivery_id":{"type":"string","nullable":true},"last_webhook_event":{"type":"string","nullable":true},"last_webhook_action":{"type":"string","nullable":true},"last_webhook_at":{"type":"string","format":"date-time","nullable":true},"last_webhook_at_label":{"type":"string","nullable":true},"last_head_sha":{"type":"string","nullable":true},"last_ref":{"type":"string","nullable":true},"last_pull_request_number":{"type":"integer","nullable":true},"webhook_delivery_count":{"type":"integer"},"last_compatibility_status":{"type":"string","enum":["executable","warning","blocked","error"],"nullable":true},"last_error_message":{"type":"string","nullable":true},"metadata":{"type":"object","additionalProperties":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_organization_id_github_ci_repositories_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"GitHub CI repository","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["id","organization_id","github_app_installation_id","ci_runner_pool_id","github_repository_id","repository_owner","repository_name","repository_full_name","default_branch","status","adoption_mode","check_name_prefix","permission_status","last_webhook_delivery_id","last_webhook_event","last_webhook_action","last_webhook_at","last_webhook_at_label","last_head_sha","last_ref","last_pull_request_number","webhook_delivery_count","last_compatibility_status","last_error_message","metadata","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"github_app_installation_id":{"type":"string"},"ci_runner_pool_id":{"type":"string","nullable":true},"github_repository_id":{"type":"string"},"repository_owner":{"type":"string"},"repository_name":{"type":"string"},"repository_full_name":{"type":"string"},"default_branch":{"type":"string"},"status":{"type":"string","enum":["active","paused","archived"]},"adoption_mode":{"type":"string","enum":["shadow","reporting","required"]},"check_name_prefix":{"type":"string"},"permission_status":{"type":"string","enum":["unchecked","ok","missing"]},"last_webhook_delivery_id":{"type":"string","nullable":true},"last_webhook_event":{"type":"string","nullable":true},"last_webhook_action":{"type":"string","nullable":true},"last_webhook_at":{"type":"string","format":"date-time","nullable":true},"last_webhook_at_label":{"type":"string","nullable":true},"last_head_sha":{"type":"string","nullable":true},"last_ref":{"type":"string","nullable":true},"last_pull_request_number":{"type":"integer","nullable":true},"webhook_delivery_count":{"type":"integer"},"last_compatibility_status":{"type":"string","enum":["executable","warning","blocked","error"],"nullable":true},"last_error_message":{"type":"string","nullable":true},"metadata":{"type":"object","additionalProperties":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"ci_runner_pool_id":{"type":"string","nullable":true},"default_branch":{"type":"string"},"status":{"type":"string","enum":["active","paused","archived"]},"adoption_mode":{"type":"string","enum":["shadow","reporting","required"]},"check_name_prefix":{"type":"string"},"permission_status":{"type":"string","enum":["unchecked","ok","missing"]}}}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_github_ci_repositories_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"GitHub CI repository","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["id","organization_id","github_app_installation_id","ci_runner_pool_id","github_repository_id","repository_owner","repository_name","repository_full_name","default_branch","status","adoption_mode","check_name_prefix","permission_status","last_webhook_delivery_id","last_webhook_event","last_webhook_action","last_webhook_at","last_webhook_at_label","last_head_sha","last_ref","last_pull_request_number","webhook_delivery_count","last_compatibility_status","last_error_message","metadata","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"github_app_installation_id":{"type":"string"},"ci_runner_pool_id":{"type":"string","nullable":true},"github_repository_id":{"type":"string"},"repository_owner":{"type":"string"},"repository_name":{"type":"string"},"repository_full_name":{"type":"string"},"default_branch":{"type":"string"},"status":{"type":"string","enum":["active","paused","archived"]},"adoption_mode":{"type":"string","enum":["shadow","reporting","required"]},"check_name_prefix":{"type":"string"},"permission_status":{"type":"string","enum":["unchecked","ok","missing"]},"last_webhook_delivery_id":{"type":"string","nullable":true},"last_webhook_event":{"type":"string","nullable":true},"last_webhook_action":{"type":"string","nullable":true},"last_webhook_at":{"type":"string","format":"date-time","nullable":true},"last_webhook_at_label":{"type":"string","nullable":true},"last_head_sha":{"type":"string","nullable":true},"last_ref":{"type":"string","nullable":true},"last_pull_request_number":{"type":"integer","nullable":true},"webhook_delivery_count":{"type":"integer"},"last_compatibility_status":{"type":"string","enum":["executable","warning","blocked","error"],"nullable":true},"last_error_message":{"type":"string","nullable":true},"metadata":{"type":"object","additionalProperties":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"ci_runner_pool_id":{"type":"string","nullable":true},"default_branch":{"type":"string"},"status":{"type":"string","enum":["active","paused","archived"]},"adoption_mode":{"type":"string","enum":["shadow","reporting","required"]},"check_name_prefix":{"type":"string"},"permission_status":{"type":"string","enum":["unchecked","ok","missing"]}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/github_onboarding":{"get":{"operationId":"api_v1_organization_github_onboarding","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"GitHub onboarding state","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/GithubOnboardingState"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/github_onboarding/branches":{"get":{"operationId":"api_v1_organization_github_onboarding_branches","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"github_app_installation_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"owner","in":"query","required":true,"schema":{"type":"string"}},{"name":"name","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"GitHub repository branches","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["branches"],"properties":{"branches":{"type":"array","items":{"type":"string"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/github_onboarding/import_batches/{github_import_batch_id}":{"get":{"operationId":"get_api_v1_organizations_organization_id_github_onboarding_import_batches_github_import_batch_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"github_import_batch_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"GitHub import batch","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["batch"],"properties":{"batch":{"$ref":"#/components/schemas/GithubImportBatch"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/github_onboarding/import_items/{github_import_batch_item_id}/retry":{"post":{"operationId":"post_api_v1_organizations_organization_id_github_onboarding_import_items_github_import_batch_item_id_retry","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"github_import_batch_item_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"GitHub import batch","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["batch"],"properties":{"batch":{"$ref":"#/components/schemas/GithubImportBatch"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/github_onboarding/imports":{"post":{"operationId":"api_v1_organization_github_onboarding_imports","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"GitHub import batch","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["batch"],"properties":{"batch":{"$ref":"#/components/schemas/GithubImportBatch"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"GitHub import batch","content":{"application/json":{"schema":{"type":"object","required":["batch"],"properties":{"batch":{"$ref":"#/components/schemas/GithubImportBatch"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["github_app_installation_id","repositories"],"properties":{"github_app_installation_id":{"type":"string"},"repositories":{"oneOf":[{"type":"string","enum":["all"]},{"type":"array","items":{"type":"object","required":["owner","name"],"properties":{"owner":{"type":"string"},"name":{"type":"string"},"source_branch":{"type":"string"}}}}]}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/github_runner_egress":{"get":{"operationId":"get_api_v1_organizations_organization_id_github_runner_egress","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current tenant-scoped routing status","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["github_runner_egress"],"properties":{"github_runner_egress":{"$ref":"#/components/schemas/GithubRunnerEgress"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read this organization's Gen2 static egress assignment and activation request"},"post":{"operationId":"post_api_v1_organizations_organization_id_github_runner_egress","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current tenant-scoped routing status","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["github_runner_egress"],"properties":{"github_runner_egress":{"$ref":"#/components/schemas/GithubRunnerEgress"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Organization owner or admin required"},"404":{"description":"Organization not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Request Composal admin activation of Gen2 static egress"}},"/api/v1/organizations/{organization_id}/github_runner_images":{"get":{"operationId":"get_api_v1_organizations_organization_id_github_runner_images","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Toolchains and preparation status","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["github_runner_images"],"properties":{"github_runner_images":{"type":"array","items":{"$ref":"#/components/schemas/GithubRunnerImage"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List organization GitHub runner images"},"post":{"operationId":"post_api_v1_organizations_organization_id_github_runner_images","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Organization administrator required"},"404":{"description":"Not found"},"422":{"description":"Invalid image or registry secret reference"},"502":{"description":"Bad gateway"},"202":{"description":"Runner image and preparation status","content":{"application/json":{"schema":{"type":"object","required":["github_runner_image"],"properties":{"github_runner_image":{"$ref":"#/components/schemas/GithubRunnerImage"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["name","image_reference"],"properties":{"name":{"type":"string"},"image_reference":{"type":"string"},"registry_secret_name":{"type":"string","nullable":true}}}}}},"security":[{"bearerAuth":[]}],"summary":"Import and prepare a customer Docker image for GitHub runners"}},"/api/v1/organizations/{organization_id}/github_runner_images/{id}":{"get":{"operationId":"get_api_v1_organizations_organization_id_github_runner_images_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runner image and preparation status","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["github_runner_image"],"properties":{"github_runner_image":{"$ref":"#/components/schemas/GithubRunnerImage"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Image not found in this organization"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Inspect a runner image by organization name or public ID"}},"/api/v1/organizations/{organization_id}/github_runner_images/{id}/prepare":{"post":{"operationId":"post_api_v1_organizations_organization_id_github_runner_images_id_prepare","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Organization administrator required"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Runner image and preparation status","content":{"application/json":{"schema":{"type":"object","required":["github_runner_image"],"properties":{"github_runner_image":{"$ref":"#/components/schemas/GithubRunnerImage"}}}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Retry failed image preparation"}},"/api/v1/organizations/{organization_id}/github_runner_pools":{"get":{"operationId":"get_api_v1_organizations_organization_id_github_runner_pools","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Repository runner pools","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["github_runner_pools"],"properties":{"github_runner_pools":{"type":"array","items":{"$ref":"#/components/schemas/GithubRunnerPool"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List organization GitHub runner pools"},"post":{"operationId":"post_api_v1_organizations_organization_id_github_runner_pools","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"GitHub Actions runner configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["github_runner_pool"],"properties":{"github_runner_pool":{"$ref":"#/components/schemas/GithubRunnerPool"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Organization administrator required"},"404":{"description":"Not found"},"422":{"description":"Invalid configuration or missing GitHub permissions"},"502":{"description":"Bad gateway"},"201":{"description":"GitHub Actions runner configuration","content":{"application/json":{"schema":{"type":"object","required":["github_runner_pool"],"properties":{"github_runner_pool":{"$ref":"#/components/schemas/GithubRunnerPool"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["github_app_installation_id","repository_full_name"],"properties":{"github_app_installation_id":{"type":"string"},"repository_full_name":{"type":"string"},"label":{"type":"string","enum":["composal","composal-x64-2x-8gb","composal-x64-2x","composal-x64-4x","composal-x64-8x","composal-x64-16x","composal-vm-x64-2x","composal-vm-x64-4x","composal-vm-x64-8x","composal-vm-x64-16x","composal-sandbox-x64-2x","composal-sandbox-x64-4x","composal-sandbox-x64-8x","composal-sandbox-x64-16x","composal-sandbox-x64","composal-sandbox-x64-0.5x","composal-boxmad-x64","composal-boxmad-x64-2x","composal-boxmad-x64-4x","composal-boxmad-x64-8x","composal-boxmad-x64-16x","composal-boxmad-x64-2x-8gb","composal-gen2","composal-gen2-x64","composal-gen2-x64-2x","composal-gen2-x64-2x-8gb","composal-gen2-x64-4x","composal-gen2-x64-8x","composal-gen2-x64-16x"],"default":"composal-x64-2x"},"image":{"type":"string","nullable":true,"description":"Organization image name or ID; null restores the standard image"},"provider":{"type":"string","enum":["modal","boxmad"]},"enabled":{"type":"boolean"},"max_concurrency":{"type":"integer"},"timeout_seconds":{"type":"integer"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/github_runner_pools/configure":{"put":{"operationId":"put_api_v1_organizations_organization_id_github_runner_pools_configure","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"GitHub Actions runner configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["github_runner_pool"],"properties":{"github_runner_pool":{"$ref":"#/components/schemas/GithubRunnerPool"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Organization administrator required"},"404":{"description":"Not found"},"422":{"description":"Invalid configuration"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["repository_full_name"],"properties":{"repository_full_name":{"type":"string"},"github_app_installation_id":{"type":"string"},"label":{"type":"string"},"image":{"type":"string","nullable":true},"provider":{"type":"string","enum":["modal","boxmad"]},"enabled":{"type":"boolean"},"max_concurrency":{"type":"integer"},"timeout_seconds":{"type":"integer"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Configure a repository runner pool by GitHub owner/name and label"}},"/api/v1/organizations/{organization_id}/github_runner_pools/{id}":{"patch":{"operationId":"patch_api_v1_organizations_organization_id_github_runner_pools_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"GitHub Actions runner configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["github_runner_pool"],"properties":{"github_runner_pool":{"$ref":"#/components/schemas/GithubRunnerPool"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Organization administrator required"},"404":{"description":"Not found"},"422":{"description":"Invalid configuration"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"image":{"type":"string","nullable":true,"description":"Organization image name or ID; null restores the standard image"},"provider":{"type":"string","enum":["modal","boxmad"]},"enabled":{"type":"boolean"},"max_concurrency":{"type":"integer"},"timeout_seconds":{"type":"integer"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/github_runner_setup":{"post":{"operationId":"post_api_v1_organizations_organization_id_github_runner_setup","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"CI setup queued","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CiRunnerMigration"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["github_repository_connection_id"],"properties":{"github_repository_connection_id":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Prepare a CI setup pull request for a connected repository using Roder"},"get":{"operationId":"get_api_v1_organizations_organization_id_github_runner_setup","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"CI setup progress","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/CiRunnerMigration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read CI setup progress"}},"/api/v1/organizations/{organization_id}/github_runner_setup/agent_session":{"post":{"operationId":"post_api_v1_organizations_organization_id_github_runner_setup_agent_session","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Read-only connection to the setup agent","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/AgentRoderSession"},{"type":"object","required":["thread_id"],"properties":{"thread_id":{"type":"string"}}}]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["id"],"properties":{"id":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Observe the CI setup agent stream"}},"/api/v1/organizations/{organization_id}/import_branch_policy":{"get":{"operationId":"api_v1_organization_import_branch_policy","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Organization settings page (organization summary plus import branch policy)","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"allOf":[{"$ref":"#/components/schemas/OrganizationImportBranchPolicy"},{"type":"object","required":["organization","sandbox_regions","can_manage_sandbox_region","can_manage_pr_scenario_writing","dedicated_outbound_ip_addresses"],"properties":{"organization":{"$ref":"#/components/schemas/OrganizationSummary"},"dedicated_outbound_ip_addresses":{"$ref":"#/components/schemas/DedicatedOutboundIpAddresses"},"can_manage_sandbox_region":{"type":"boolean"},"can_manage_pr_scenario_writing":{"type":"boolean"},"sandbox_regions":{"type":"array","items":{"type":"object","required":["value","label"],"properties":{"value":{"type":"string","enum":["us-was-1","us-pdx-1","eu-lon-1","eu-fra-1","auto"]},"label":{"type":"string"}}}}}}]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_organization_id_import_branch_policy","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated organization import branch policy","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OrganizationImportBranchPolicy"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OrganizationImportBranchPolicy"}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_import_branch_policy","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/invitations":{"get":{"operationId":"api_v1_organization_invitations","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Organization invitations page (organization summary plus invitations)","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization","invitations"],"properties":{"organization":{"$ref":"#/components/schemas/OrganizationSummary"},"invitations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationInvitation"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_invitations","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Organization invitation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["invitation"],"properties":{"invitation":{"$ref":"#/components/schemas/OrganizationInvitation"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Organization invitation","content":{"application/json":{"schema":{"type":"object","required":["invitation"],"properties":{"invitation":{"$ref":"#/components/schemas/OrganizationInvitation"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OrganizationInvitationCreatePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/invitations/{id}":{"delete":{"operationId":"api_v1_organization_invitation","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Organization invitation revoked"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/local_agent/decisions":{"post":{"operationId":"api_v1_organization_local_agent_decisions","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The provider's native Decisions answer","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Organization not accessible, or code decisions_disabled when the organization has no Decisions"},"422":{"description":"Request not admitted"},"502":{"description":"Bad gateway"},"429":{"description":"Per-user rate limit exceeded"},"503":{"description":"Decisions provider unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/LocalAgentDecisionsRequest"}}}},"security":[{"bearerAuth":[]}],"summary":"Relay a local agent's OpenAI Decisions request, recording its token usage against the organization"}},"/api/v1/organizations/{organization_id}/local_agent/parallel/v1/extract":{"post":{"operationId":"api_v1_organization_local_agent_parallel_v1_extract","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Parallel's extract response, unchanged","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Organization not accessible"},"422":{"description":"Request not admitted, or Parallel's own refusal with its body"},"502":{"description":"Bad gateway"},"429":{"description":"Per-user rate limit exceeded"},"503":{"description":"Web search unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Relay a local agent's Parallel Extract request, recording the URLs read and their cost against the organization","description":"Parallel's own Extract body with 1 to 20 http(s) URLs, authenticated as for search. At most 64 KiB."}},"/api/v1/organizations/{organization_id}/local_agent/parallel/v1/search":{"post":{"operationId":"api_v1_organization_local_agent_parallel_v1_search","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Parallel's search response, unchanged","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Organization not accessible"},"422":{"description":"Request not admitted, or Parallel's own refusal with its body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocalAgentInferenceError"}}}},"502":{"description":"Bad gateway"},"429":{"description":"Per-user rate limit, or Parallel's own refusal with its body"},"503":{"description":"Web search unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Relay a local agent's Parallel Search request, recording the search and its cost against the organization","description":"Parallel's own Search body, authenticated with the personal access token in `x-api-key` (as Parallel's client sends its key) or a bearer header. Mode must be turbo, basic or advanced, with at most 20 results, and an objective or search queries. At most 64 KiB."}},"/api/v1/organizations/{organization_id}/local_agent/responses":{"post":{"operationId":"api_v1_organization_local_agent_responses","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The provider's Responses event stream, unchanged. Usage from its terminal event is recorded for the organization.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"text/event-stream":{"schema":{"type":"string"}}}},"401":{"description":"Authentication required"},"403":{"description":"Forbidden"},"404":{"description":"Organization not accessible"},"422":{"description":"Request not admitted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocalAgentInferenceError"}}}},"502":{"description":"Bad gateway"},"429":{"description":"Per-user rate limit, or the provider's own refusal with its body"},"503":{"description":"Model access unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/LocalAgentResponsesRequest"}}}},"security":[{"bearerAuth":[]}],"summary":"Relay a local agent's OpenAI Responses request, recording its token usage against the organization"}},"/api/v1/organizations/{organization_id}/logo_image":{"put":{"operationId":"put_api_v1_organizations_organization_id_logo_image","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Organization","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization"],"properties":{"organization":{"$ref":"#/components/schemas/OrganizationSummary"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/ImageUploadPayload"}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_organizations_organization_id_logo_image","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Organization","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization"],"properties":{"organization":{"$ref":"#/components/schemas/OrganizationSummary"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/members":{"get":{"operationId":"api_v1_organization_members","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Organization team page (members plus invitations for admins and owners)","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization","members","invitations","google_workspace_join"],"properties":{"organization":{"$ref":"#/components/schemas/OrganizationSummary"},"members":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationMember"}},"google_workspace_join":{"type":"object","required":["domain","verified_domain","can_manage"],"properties":{"domain":{"type":"string","nullable":true},"verified_domain":{"type":"string","nullable":true,"description":"The owner's verified company Google Workspace domain."},"can_manage":{"type":"boolean"}}},"invitations":{"type":"array","description":"Invitation history for admins and owners; empty for other members.","items":{"$ref":"#/components/schemas/OrganizationInvitation"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/members/{id}":{"patch":{"operationId":"api_v1_organization_member","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated organization member","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["member"],"properties":{"member":{"$ref":"#/components/schemas/OrganizationMember"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OrganizationMemberUpdatePayload"}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_members_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated organization member","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["member"],"properties":{"member":{"$ref":"#/components/schemas/OrganizationMember"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OrganizationMemberUpdatePayload"}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_organizations_organization_id_members_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Organization member removed"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/pages/nodes":{"get":{"operationId":"get_api_v1_organizations_organization_id_pages_nodes","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Organization nodes page contract","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization","pool_catalogs","github_runner_pools","github_installations","github_runner_egress"],"properties":{"organization":{"$ref":"#/components/schemas/OrganizationSummary"},"github_runner_egress":{"$ref":"#/components/schemas/GithubRunnerEgress"},"github_runner_private_links":{"type":"array","items":{"$ref":"#/components/schemas/GithubRunnerPrivateLink"}},"github_runner_pools":{"type":"array","items":{"$ref":"#/components/schemas/GithubRunnerPool"}},"github_runner_repositories":{"type":"array","description":"GitHub runner pools grouped by repository, in display order","items":{"$ref":"#/components/schemas/GithubRunnerRepository"}},"github_installations":{"type":"array","items":{"$ref":"#/components/schemas/GithubAppInstallation"}},"pool_catalogs":{"type":"array","items":{"type":"object","required":["pool","enrollment_tokens"],"properties":{"pool":{"$ref":"#/components/schemas/CiRunnerPoolCatalog"},"enrollment_tokens":{"type":"array","items":{"$ref":"#/components/schemas/CiNodeEnrollmentToken"}}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/products":{"post":{"operationId":"api_v1_organization_products","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Organization","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization"],"properties":{"organization":{"$ref":"#/components/schemas/OrganizationSummary"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Only an organization admin can activate a product"},"404":{"description":"Not found"},"422":{"description":"Unknown product, or a request asking to deactivate one"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OrganizationProductActivationPayload"}}}},"security":[{"bearerAuth":[]}],"description":"Activate a product for the organization. Activation is idempotent, makes the product available without provisioning anything, and has no inverse: there is no deactivation route, and a request carrying `activated: false` is refused."}},"/api/v1/organizations/{organization_id}/repository_import_sessions":{"post":{"operationId":"api_v1_organization_repository_import_sessions","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Repository import session","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepositoryImportSession"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RepositoryImportSessionCreateRequest"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/sandbox_integrations":{"get":{"operationId":"agentSandboxIntegrationsIndex","tags":["organizations","Persistent Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"provider","in":"query","required":false,"schema":{"type":"string","enum":["namespace","freestyle","exe_dev","superserve","e2b","daytona","vercel","modal"]}}],"responses":{"200":{"description":"Sandbox configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSandboxIntegrations"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"agentSandboxIntegrationsCreate","tags":["organizations","Persistent Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Sandbox configuration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSandboxIntegration"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSandboxIntegrationInput"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/sandbox_integrations/{id}":{"patch":{"operationId":"agentSandboxIntegrationsUpdate","tags":["organizations","Persistent Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Sandbox configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSandboxIntegration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSandboxIntegrationUpdate"}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"agentSandboxIntegrationsUpdatePut","tags":["organizations","Persistent Agents"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Sandbox configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSandboxIntegration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/AgentSandboxIntegrationUpdate"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/signal_integrations":{"get":{"operationId":"api_v1_organization_signal_integrations","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The organization's signal integrations","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["signal_integrations"],"properties":{"signal_integrations":{"type":"array","items":{"$ref":"#/components/schemas/SignalIntegration"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List the organization's third-party signal sources (roadmap 138)","description":"Every configured Sentry/PlanetScale connection with its ingest health. Secret VALUES are never returned — only whether one is stored. `{organization_id}` is the organization's public id (`org_…`) or its slug."},"post":{"operationId":"post_api_v1_organizations_organization_id_signal_integrations","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The signal integration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["signal_integration"],"properties":{"signal_integration":{"$ref":"#/components/schemas/SignalIntegration"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"The caller is not an administrator of the organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalIntegrationError"}}}},"404":{"description":"Not found"},"422":{"description":"The request failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalIntegrationError"}}}},"502":{"description":"Bad gateway"},"201":{"description":"The signal integration","content":{"application/json":{"schema":{"type":"object","required":["signal_integration"],"properties":{"signal_integration":{"$ref":"#/components/schemas/SignalIntegration"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/SignalIntegrationCreatePayload"}}}},"security":[{"bearerAuth":[]}],"summary":"Connect a third-party signal source (organization admin only)","description":"Creates the integration and stores the supplied credentials as organization-scoped secrets. The response carries the `inbound_url` to paste into the provider's webhook configuration."}},"/api/v1/organizations/{organization_id}/signal_integrations/{id}":{"get":{"operationId":"api_v1_organization_signal_integration","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The signal integration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["signal_integration"],"properties":{"signal_integration":{"$ref":"#/components/schemas/SignalIntegration"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read one signal integration"},"patch":{"operationId":"patch_api_v1_organizations_organization_id_signal_integrations_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The signal integration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["signal_integration"],"properties":{"signal_integration":{"$ref":"#/components/schemas/SignalIntegration"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"The caller is not an administrator of the organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalIntegrationError"}}}},"404":{"description":"Not found"},"422":{"description":"The request failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalIntegrationError"}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/SignalIntegrationUpdatePayload"}}}},"security":[{"bearerAuth":[]}],"summary":"Update a signal integration (organization admin only)","description":"A blank `webhook_secret` or `api_token` leaves the stored value alone; it never erases one. `provider` is immutable."},"put":{"operationId":"put_api_v1_organizations_organization_id_signal_integrations_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The signal integration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["signal_integration"],"properties":{"signal_integration":{"$ref":"#/components/schemas/SignalIntegration"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"The caller is not an administrator of the organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalIntegrationError"}}}},"404":{"description":"Not found"},"422":{"description":"The request failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalIntegrationError"}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/SignalIntegrationUpdatePayload"}}}},"security":[{"bearerAuth":[]}],"summary":"Update a signal integration (organization admin only)"},"delete":{"operationId":"delete_api_v1_organizations_organization_id_signal_integrations_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"The caller is not an administrator of the organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalIntegrationError"}}}},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"The integration and its targets","receipts and cursors were deleted":null}},"security":[{"bearerAuth":[]}],"summary":"Disconnect a signal integration (organization admin only)"}},"/api/v1/organizations/{organization_id}/signal_integrations/{id}/regenerate_inbound_token":{"post":{"operationId":"regenerate_inbound_token_api_v1_organization_signal_integration","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The signal integration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["signal_integration"],"properties":{"signal_integration":{"$ref":"#/components/schemas/SignalIntegration"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"The caller is not an administrator of the organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalIntegrationError"}}}},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Rotate the inbound webhook token (organization admin only)","description":"Revokes the current inbound URL. The provider's webhook configuration must be updated with the new URL from the response, or deliveries stop."}},"/api/v1/organizations/{organization_id}/signal_integrations/{id}/verify":{"post":{"operationId":"verify_api_v1_organization_signal_integration","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The signal integration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["signal_integration"],"properties":{"signal_integration":{"$ref":"#/components/schemas/SignalIntegration"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"The caller is not an administrator of the organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalIntegrationError"}}}},"404":{"description":"Not found"},"422":{"description":"The request failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalIntegrationError"}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Verify the stored credential and discover targets (organization admin only)","description":"Calls the provider with the stored API token, upserts the resources it reports as targets, and marks the integration `active`. A provider whose adapter is not deployed yet answers 422 and records the reason on the integration."}},"/api/v1/organizations/{organization_id}/signal_integrations/{signal_integration_id}/deliveries":{"get":{"operationId":"api_v1_organization_signal_integration_deliveries","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"signal_integration_id","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"The integration's recent deliveries","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["signal_integration_deliveries"],"properties":{"signal_integration_deliveries":{"type":"array","items":{"$ref":"#/components/schemas/SignalIntegrationDelivery"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Recent inbound receipts for one integration","description":"Newest first, bounded (default 50, max 100). Carries no provider content — state, event kind, timings, error and the emitted signal's public id."}},"/api/v1/organizations/{organization_id}/signal_integrations/{signal_integration_id}/targets":{"get":{"operationId":"api_v1_organization_signal_integration_targets","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"signal_integration_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The integration's targets","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["signal_integration_targets"],"properties":{"signal_integration_targets":{"type":"array","items":{"$ref":"#/components/schemas/SignalIntegrationTarget"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List the provider resource to hosted app mapping"},"put":{"operationId":"put_api_v1_organizations_organization_id_signal_integrations_signal_integration_id_targets","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"signal_integration_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The integration's targets","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["signal_integration_targets"],"properties":{"signal_integration_targets":{"type":"array","items":{"$ref":"#/components/schemas/SignalIntegrationTarget"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"The caller is not an administrator of the organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalIntegrationError"}}}},"404":{"description":"Not found"},"422":{"description":"The request failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalIntegrationError"}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/SignalIntegrationTargetsPayload"}}}},"security":[{"bearerAuth":[]}],"summary":"Replace the target mapping (organization admin only)","description":"The submitted list is the whole mapping — a target it omits is deleted. Use `enabled: false` to keep a target while stopping attribution."}},"/api/v1/organizations/{organization_id}/signal_subscriptions":{"get":{"operationId":"api_v1_organization_signal_subscriptions","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_signal_subscriptions","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/signal_subscriptions/{id}":{"get":{"operationId":"api_v1_organization_signal_subscription","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_organization_id_signal_subscriptions_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_signal_subscriptions_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_organizations_organization_id_signal_subscriptions_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/signals":{"get":{"operationId":"api_v1_organization_signals","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"after_id","required":false,"description":"Exclusive cursor (`sig_…`). Ascending: return signals newer than it. Descending: alias for `before_id`.","schema":{"type":"string"}},{"in":"query","name":"before_id","required":false,"description":"Exclusive cursor (`sig_…`) for `order=desc` — return signals older than it.","schema":{"type":"string"}},{"in":"query","name":"order","required":false,"description":"Scan direction over the id cursor. Defaults to `asc` (oldest-first).","schema":{"type":"string","enum":["asc","desc"]}},{"in":"query","name":"limit","required":false,"description":"Signals per page (default 50, capped at 100).","schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"kind","required":false,"description":"Exact kind filter from the frozen taxonomy (§1); a single kind or a comma-separated list.","schema":{"type":"string"}},{"in":"query","name":"severity","required":false,"description":"Exact severity filter; a single level or a comma-separated list.","schema":{"type":"string"}},{"in":"query","name":"min_severity","required":false,"description":"Severity floor — this level and everything more severe (§2).","schema":{"$ref":"#/components/schemas/OpsSignalSeverity"}},{"in":"query","name":"hosted_app_id","required":false,"description":"Hosted app filter; accepts an `app_…` public id, a raw id, or the app slug.","schema":{"type":"string"}},{"in":"query","name":"since","required":false,"description":"ISO8601 lower bound on `occurred_at`.","schema":{"type":"string"}},{"in":"query","name":"unacked","required":false,"description":"When true, return only signals with no `acked_at`.","schema":{"type":"boolean"}},{"in":"query","name":"source","required":false,"description":"Signal source provider filter (docs §6e) — a single provider or a comma-separated list. An unrecognized provider is a 422 rather than an empty page.","schema":{"type":"string"}},{"in":"query","name":"integration_id","required":false,"description":"Narrow to one signal integration. Accepts the integration's raw id, and its `sint_…` public id once the integration model ships.","schema":{"type":"string"}},{"in":"query","name":"subscription_id","required":false,"description":"Resume a subscription (`sub_…`): its stored filters supply the defaults for any filter left blank, and its `last_acked_signal_id` becomes the default ascending `after_id`.","schema":{"type":"string"}}],"responses":{"200":{"description":"A page of signals, ordered by the id cursor.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OpsSignalPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"A supplied cursor or filter is invalid.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Page the organization's ops signals (docs/ops-signals.md §6)","description":"Cursor-paged signal feed, delegating to `Signals::Query` — the same read service the MCP tools use, so REST and agents never diverge. The cursor is the signal's monotonic id carried as its public id (`sig_…`): `asc` (default) pages forward with `after_id` (exclusive), `desc` pages newest-first with `before_id` (`after_id` is accepted as an alias for the `desc` boundary so a caller can flip `order` alone). In both directions `next_cursor` is the last returned signal's public id, fed straight back as the same-named boundary param. `{organization_id}` is the organization's public id (`org_…`) or its slug."}},"/api/v1/organizations/{organization_id}/signals/ack":{"post":{"operationId":"ack_api_v1_organization_signals","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The number of signals newly acked.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OpsSignalBulkAckResult"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"The request was neither `ids` nor explicitly scoped, or a supplied cursor or filter is invalid.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Bulk-ack signals (docs §6b)","description":"Two mutually exclusive shapes. Explicit `ids` acks exactly those and ignores every other key. Otherwise the request must be explicitly scoped — `before_id`, at least one filter, `recovered_only`, or an opt-in `all: true` — so a request the server did not understand can never silently ack the whole organization.","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpsSignalBulkAckRequest"}}}}}},"/api/v1/organizations/{organization_id}/signals/{id}":{"get":{"operationId":"api_v1_organization_signal","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The signal, with its additive resource envelopes.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OpsSignalEnvelope"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"One signal by public id"}},"/api/v1/organizations/{organization_id}/signals/{id}/ack":{"post":{"operationId":"ack_api_v1_organization_signal","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The acked signal.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OpsSignalEnvelope"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Ack one signal","description":"Idempotent — re-acking an already-acked signal is a no-op."}},"/api/v1/organizations/{organization_id}/signals/{id}/agent_prompt":{"get":{"operationId":"agent_prompt_api_v1_organization_signal","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The agent prompt text.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/OpsSignalAgentPrompt"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Copy-prompt text for one signal","description":"Git workspace investigation instructions for the \"Copy prompt\" action."}},"/api/v1/organizations/{organization_id}/static_sites":{"get":{"operationId":"api_v1_organization_static_sites","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Static sites in the organization","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["static_sites"],"properties":{"static_sites":{"type":"array","items":{"$ref":"#/components/schemas/StaticSite"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_static_sites","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Static site created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["static_site"],"properties":{"static_site":{"$ref":"#/components/schemas/StaticSite"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Static site request failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaticSiteError"}}}},"502":{"description":"Bad gateway"},"201":{"description":"Static site created","content":{"application/json":{"schema":{"type":"object","required":["static_site"],"properties":{"static_site":{"$ref":"#/components/schemas/StaticSite"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/StaticSiteCreatePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/tool_feedbacks":{"post":{"operationId":"api_v1_organization_tool_feedbacks","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Invalid feedback"},"502":{"description":"Bad gateway"},"201":{"description":"Feedback saved, including on an identical retry. Does not confirm Slack delivery.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolFeedback"}}}},"409":{"description":"The key was already used for a different report"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["feedback"],"properties":{"feedback":{"$ref":"#/components/schemas/ToolFeedbackInput"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Submit CLI, MCP, harness or Android feedback to Composal staff","description":"Saves feedback attributed to the authenticated user and organization and queues internal Slack delivery. Exclude secrets, credentials, raw transcripts and private customer data. Android AI-content reports include only the user-selected message excerpt and explanation. Retries must reuse the same idempotency key and report."}},"/api/v1/organizations/{organization_id}/tool_feedbacks/{id}":{"get":{"operationId":"api_v1_organization_tool_feedback","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Saved feedback","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ToolFeedback"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read back your own feedback in an accessible organization"}},"/api/v1/organizations/{organization_id}/verification/integrations":{"get":{"operationId":"api_v1_verification_integrations","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"VerificationIntegrations","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerificationIntegrations"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Integrations available to Verify and their state for the current user"}},"/api/v1/organizations/{organization_id}/verification/projects":{"get":{"operationId":"api_v1_verification_projects","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ProjectCollection","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectCollection"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_verification_projects","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectCreate"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{id}":{"get":{"operationId":"api_v1_verification_project","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"overview","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"scenario_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"view","in":"query","required":false,"schema":{"type":"string","enum":["groups","runs"]}},{"name":"page","in":"query","required":false,"schema":{"type":"integer"}},{"name":"verify_environment_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"query","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"ProjectPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_organization_id_verification_projects_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Project","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/Project"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectUpdate"}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_verification_projects_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Project","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/Project"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectUpdate"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{id}/archive":{"post":{"operationId":"archive_api_v1_verification_project","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Project","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/Project"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RecordVersion"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{id}/icon_image":{"put":{"operationId":"icon_image_api_v1_verification_project","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Project with the uploaded icon","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/Project"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Only organization administrators can upload icons"},"404":{"description":"Not found"},"422":{"description":"Invalid image or archived project"},"502":{"description":"Bad gateway"},"409":{"description":"Stale project version"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","required":["image","version"],"properties":{"image":{"type":"string","format":"binary"},"version":{"type":"integer","minimum":0}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/agent":{"get":{"operationId":"api_v1_verification_project_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectWorkflowAgent"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"404":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}},"field_errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"502":{"description":"Bad gateway"},"409":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Project workflows /agent get"},"post":{"operationId":"post_api_v1_organizations_organization_id_verification_projects_project_id_agent","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectWorkflowAgent"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"404":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}},"field_errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"502":{"description":"Bad gateway"},"201":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectWorkflowAgent"}}}},"409":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":[],"properties":{}}}}},"security":[{"bearerAuth":[]}],"summary":"Project workflows /agent post"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/agent/page":{"get":{"operationId":"api_v1_verification_project_agent_page","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"view","in":"query","schema":{"type":"string"}},{"name":"before","in":"query","schema":{"type":"string"}},{"name":"run_id","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"workflow_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"revision_page","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Project page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectAgentPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Shared Project agent page"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/android_apks":{"post":{"operationId":"api_v1_verification_project_android_apks","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Pinned Android configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DesktopConfiguration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Pinned Android configuration for a new environment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DesktopConfiguration"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","required":["apk"],"properties":{"apk":{"type":"string","format":"binary"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Upload an Android APK for a Computer use project"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/credentials":{"get":{"operationId":"api_v1_verification_project_credentials","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ProjectCredentialCollection","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectCredentialCollection"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_verification_projects_project_id_credentials","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"ProjectCredential","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCredential"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"allOf":[{"$ref":"#/components/schemas/ProjectCredentialInput"},{"required":["name","login_method"]}]}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/credentials/{credential_id}/sign_in_checks":{"post":{"operationId":"api_v1_verification_project_credential_sign_in_checks","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"credential_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The sign-in check this Idempotency-Key already started","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExploration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"The new sign-in check","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyExploration"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["environment_id"],"properties":{"environment_id":{"type":"string","description":"The project environment (app) to sign in to"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Start a live browser in which our agent signs in to the app with this test account","description":"One browser signs in with the saved account and reports the goal achieved or blocked. Watch, message and stop it through the exploration endpoints. A confirmed sign-in sets the account's sign_in_verified_at, unless its sign-in settings changed after the browser started. Each account gets a few checks a day."}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/credentials/{credential_id}/sign_in_checks/try_again":{"post":{"operationId":"try_again_api_v1_verification_project_credential_sign_in_checks","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"credential_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"The sign-in check this Idempotency-Key already started","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExploration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"The check that continued or started","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyExploration"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["environment_id"],"properties":{"environment_id":{"type":"string","description":"The project environment (app) to sign in to"},"text":{"type":"string","description":"The person's answer or note for the agent; a plain retry without it."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Try this test account's sign-in again","description":"Today's latest sign-in check for the account continues with the message, so an agent waiting in its browser reads the person's answer there. Otherwise, when it has used its attempts or none ran today, a new check starts, as POST sign_in_checks does. The Idempotency-Key must be a UUID, because it also identifies the message."}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/credentials/{id}":{"get":{"operationId":"api_v1_verification_project_credential","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ProjectCredential","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectCredential"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_organization_id_verification_projects_project_id_credentials_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ProjectCredential","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectCredential"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectCredentialInput"}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_verification_projects_project_id_credentials_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ProjectCredential","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectCredential"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectCredentialInput"}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_organizations_organization_id_verification_projects_project_id_credentials_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"permanent","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Credential is in use or inbox cleanup is unavailable"},"502":{"description":"Bad gateway"},"204":{"description":"Credential disabled, or permanently deleted with its inbox when permanent=true"}},"security":[{"bearerAuth":[]}],"description":"Permanently delete with permanent=true. Without the flag, legacy clients disable the credential."}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/credentials/{id}/disable":{"post":{"operationId":"disable_api_v1_verification_project_credential","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Credential disabled; its inbox is retained"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/credentials/{id}/inbox":{"get":{"operationId":"inbox_api_v1_verification_project_credential","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ProjectCredentialInbox","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectCredentialInbox"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/discovery":{"post":{"operationId":"api_v1_verification_project_discovery","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"A replay of a discovery this key already started","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectDiscovery"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"No ready environment, or browser testing is unavailable"},"502":{"description":"Bad gateway"},"402":{"description":"The organization's billing limit refuses this usage; see `error.upgrade_path`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingLimitExceededError"}}}},"202":{"description":"The discovery started","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectDiscovery"}}}},"409":{"description":"Idempotency conflict"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Start a project's first discovery with the settings setup chooses"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/environments":{"get":{"operationId":"api_v1_verification_project_environments","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"EnvironmentCollection","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/EnvironmentCollection"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_verification_projects_project_id_environments","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Environment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentDetail"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/EnvironmentCreate"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/environments/directory":{"get":{"operationId":"directory_api_v1_verification_project_environments","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"query","in":"query","required":false,"schema":{"type":"string"}},{"name":"archived","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"environments_page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"previews_page","in":"query","required":false,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"ProjectEnvironmentDirectory","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectEnvironmentDirectory"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/environments/{environment_id}/explorations":{"post":{"operationId":"api_v1_verification_project_environment_explorations","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"environment_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Exploratory run with agent reports and protected recordings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExploration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"402":{"description":"The organization's billing limit refuses this usage; see `error.upgrade_path`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingLimitExceededError"}}}},"202":{"description":"Exploratory run with agent reports and protected recordings","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyExploration"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"persona_id":{"type":["string","null"]},"account_id":{"type":"string","nullable":true},"goal":{"type":"string","minLength":1,"maxLength":4000},"max_seconds":{"type":"integer","minimum":60,"maximum":43200,"default":14400},"max_testers":{"type":"integer","minimum":1,"maximum":200,"default":40},"concurrency":{"type":"integer","minimum":1,"maximum":96,"default":20},"idempotency_key":{"type":"string"}},"required":["goal"]}}}},"security":[{"bearerAuth":[]}],"summary":"Explore a project environment with a goal-driven browser team and map what it finds"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/environments/{id}":{"get":{"operationId":"api_v1_verification_project_environment","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Environment","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/EnvironmentDetail"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_organization_id_verification_projects_project_id_environments_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Environment","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/EnvironmentDetail"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/EnvironmentUpdate"}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_verification_projects_project_id_environments_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Environment","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/EnvironmentDetail"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/EnvironmentUpdate"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/environments/{id}/archive":{"post":{"operationId":"archive_api_v1_verification_project_environment","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Environment","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/EnvironmentDetail"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RecordVersion"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/fixtures":{"get":{"operationId":"api_v1_verification_project_fixtures","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"q","in":"query","schema":{"type":"string","maxLength":200}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1}},{"name":"persona_id","in":"query","description":"Only files assigned to this persona","schema":{"type":"string"}},{"name":"credential_id","in":"query","description":"Only files assigned to this credential","schema":{"type":"string"}},{"name":"environment_id","in":"query","description":"Only files assigned to this environment","schema":{"type":"string"}}],"responses":{"200":{"description":"Files, assignment choices and permissions","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectFixturesPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Browse the project's fixture library"},"post":{"operationId":"post_api_v1_organizations_organization_id_verification_projects_project_id_fixtures","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The project already held these bytes","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyFixture"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Only organization administrators can upload fixtures"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Stored new bytes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyFixture"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary","description":"At most 25 MiB"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Upload fixture bytes for this project's Scenarios","description":"Bytes are stored once per project and named by their sha256. Uploading bytes the project already holds returns the stored fixture."}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/fixtures/{id}":{"get":{"operationId":"api_v1_verification_project_fixture","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The fixture and a signed URL that expires within minutes","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyFixtureDownload"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"This project holds no bytes with that sha256"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"A project's fixture bytes by sha256 (the id), with a short-lived download URL"},"patch":{"operationId":"patch_api_v1_organizations_organization_id_verification_projects_project_id_fixtures_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated file","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyLibraryFixture"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"Reload the changed file before editing"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyFixtureUpdate"}}}},"security":[{"bearerAuth":[]}],"summary":"Rename a library file or replace its assignments"},"put":{"operationId":"put_api_v1_organizations_organization_id_verification_projects_project_id_fixtures_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated file","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyLibraryFixture"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyFixtureUpdate"}}}},"security":[{"bearerAuth":[]}],"summary":"Rename a library file or replace its assignments"},"delete":{"operationId":"delete_api_v1_organizations_organization_id_verification_projects_project_id_fixtures_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"version","in":"query","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"Archived; existing Scenario and run attachments remain"},"409":{"description":"Reload the changed file before archiving"}},"security":[{"bearerAuth":[]}],"summary":"Archive a library file, retaining bytes Scenarios and runs attach"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/ios_apps":{"post":{"operationId":"api_v1_verification_project_ios_apps","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Pinned iOS configuration","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/DesktopConfiguration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Pinned iOS configuration for a new environment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DesktopConfiguration"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","required":["app"],"properties":{"app":{"type":"string","format":"binary"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Upload a zipped iOS simulator app for a Computer use project"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/messaging_conversations":{"post":{"operationId":"api_v1_verification_project_messaging_conversations","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Conversation created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyMessagingSetup"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyMessagingNumbersCreate"}}}},"security":[{"bearerAuth":[]}],"summary":"Configure a tester and assistant number for an environment"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/messaging_conversations/{id}":{"get":{"operationId":"api_v1_verification_project_messaging_conversation","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Manual messages and send eligibility","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyMessagingManual"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read the manual conversation"},"patch":{"operationId":"patch_api_v1_organizations_organization_id_verification_projects_project_id_messaging_conversations_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated conversation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyMessagingSetup"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyMessagingNumbers"}}}},"security":[{"bearerAuth":[]}],"summary":"Update unused conversation numbers"},"put":{"operationId":"put_api_v1_organizations_organization_id_verification_projects_project_id_messaging_conversations_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated conversation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyMessagingSetup"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyMessagingNumbers"}}}},"security":[{"bearerAuth":[]}],"summary":"Update unused conversation numbers"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/messaging_conversations/{id}/mark_read":{"post":{"operationId":"mark_read_api_v1_verification_project_messaging_conversation","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Read request accepted"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Mark the viewed manual conversation read"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/messaging_conversations/{id}/messages":{"post":{"operationId":"messages_api_v1_verification_project_messaging_conversation","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Manual conversation after sending","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyMessagingManual"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["client_operation_id","content"],"properties":{"client_operation_id":{"type":"string"},"content":{"type":"string"},"media":{"$ref":"#/components/schemas/VerifyMessagingMediaInput"},"media_upload_ids":{"type":"array","maxItems":6,"items":{"type":"string"},"description":"Ordered staged upload IDs; six on Photon, one on Sendblue. Mutually exclusive with media."},"retry_attachment":{"type":"boolean","description":"Retry an already recorded attachment when its file bytes are no longer on this page."},"reply_to":{"type":"string","description":"Public ID of a visible message"},"send_style":{"type":["string","null"],"enum":["celebration","shooting_star","fireworks","lasers","love","confetti","balloons","spotlight","echo","invisible","gentle","loud","slam",null]}}}}}},"security":[{"bearerAuth":[]}],"summary":"Send a manual message as the signed-in operator"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/messaging_conversations/{id}/messages/{message_id}/reaction":{"post":{"operationId":"post_api_v1_organizations_organization_id_verification_projects_project_id_messaging_conversations_id_messages_message_id_reaction","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Manual conversation after Sendblue accepts the Tapback","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyMessagingManual"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["reaction"],"properties":{"reaction":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"React to an incoming iMessage in the manual conversation"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/messaging_conversations/{id}/retire":{"post":{"operationId":"retire_api_v1_verification_project_messaging_conversation","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Retired conversation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyMessagingSetup"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Retire a conversation"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/messaging_conversations/{id}/typing":{"post":{"operationId":"typing_api_v1_verification_project_messaging_conversation","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Typing state accepted"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["typing"],"properties":{"typing":{"type":"boolean"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Send the operator's typing state"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/messaging_conversations/{id}/uploads":{"post":{"operationId":"uploads_api_v1_verification_project_messaging_conversation","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Attachment staged","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyMessagingUpload"}}}},"401":{"description":"Session required"},"403":{"description":"Origin, CSRF or permission refused"},"404":{"description":"Not found"},"422":{"description":"Invalid attachment or conversation unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyMessagingError"}}}},"502":{"description":"Bad gateway"},"201":{"description":"Attachment staged for this actor and conversation for one day","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyMessagingUpload"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Stage a private attachment without sending a message"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/credentials":{"get":{"operationId":"api_v1_verification_project_pages_credentials","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ProjectCredentialsPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectCredentialsPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/environment":{"get":{"operationId":"api_v1_verification_project_pages_environment","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"environment_id","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ProjectEnvironmentPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectEnvironmentPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/findings":{"get":{"operationId":"api_v1_verification_project_pages_findings","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"state","in":"query","description":"Active by default; deferred lists postponed issues; closed lists resolved and ignored ones","schema":{"type":"string","enum":["active","closed","deferred"]}},{"name":"query","in":"query","description":"Search finding titles and summaries; counts reflect the search across all pages","schema":{"type":"string","maxLength":200}},{"name":"source","in":"query","description":"Workflow that reported the finding, including earlier sightings","schema":{"type":"string","enum":["all","scenario_run","exploration","deep_scan"]}},{"name":"run_id","in":"query","description":"Discovery, Deep Scan or scenario execution public ID","schema":{"type":"string"}},{"name":"priority","in":"query","schema":{"type":"string","enum":["all","P0","P1","P2","P3","P4"]}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"ProjectFindingsPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectFindingsPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/header":{"get":{"operationId":"api_v1_verification_project_pages_header","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ProjectHeaderPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectHeaderPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/overview":{"get":{"operationId":"api_v1_verification_project_pages_overview","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ProjectOverviewPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectOverviewPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/overview_activity":{"get":{"operationId":"api_v1_verification_project_pages_overview_activity","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ProjectOverviewActivityPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectOverviewActivityPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Independently loaded project overview activity"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/overview_discovery":{"get":{"operationId":"api_v1_verification_project_pages_overview_discovery","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ProjectOverviewDiscoveryPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectOverviewDiscoveryPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Independently loaded project overview discovery"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/overview_history":{"get":{"operationId":"api_v1_verification_project_pages_overview_history","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ProjectOverviewHistoryPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectOverviewHistoryPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Independently loaded project overview history"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/overview_metrics":{"get":{"operationId":"api_v1_verification_project_pages_overview_metrics","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ProjectOverviewMetricsPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectOverviewMetricsPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Independently loaded project overview metrics"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/overview_pull_requests":{"get":{"operationId":"api_v1_verification_project_pages_overview_pull_requests","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ProjectOverviewPullRequestsPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectOverviewPullRequestsPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Independently loaded project overview pull requests"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/persona":{"get":{"operationId":"api_v1_verification_project_pages_persona","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"persona_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"ProjectPersonaPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectPersonaPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/personas":{"get":{"operationId":"api_v1_verification_project_pages_personas","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ProjectPersonasPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectPersonasPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/pr_testing":{"get":{"operationId":"api_v1_verification_project_pages_pr_testing","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"repository_id","in":"query","schema":{"type":"string"}},{"name":"source_repository","in":"query","description":"Source namespace and repository name, scoped to this project; repository_id disambiguates identical source paths","schema":{"type":"string"}},{"name":"repository_search","in":"query","schema":{"type":"string","maxLength":200}},{"name":"provider","in":"query","required":false,"schema":{"type":"string","enum":["github","gitlab"]}}],"responses":{"200":{"description":"ProjectPrTestingPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectPrTestingPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/product_map":{"get":{"operationId":"api_v1_verification_project_pages_product_map","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"journey_query","in":"query","description":"Search canonical journey titles and goals before pagination without filtering screen captures.","schema":{"type":"string","maxLength":800}},{"name":"compact","in":"query","schema":{"type":"boolean","default":false}},{"name":"revision_id","in":"query","schema":{"type":"string"}},{"name":"persona_id","in":"query","schema":{"type":"string"}},{"name":"account_id","in":"query","schema":{"type":"string"}},{"name":"query","in":"query","schema":{"type":"string"}},{"name":"area","in":"query","schema":{"type":"string"}},{"name":"since","in":"query","schema":{"type":"string"}},{"name":"before","in":"query","schema":{"type":"string"}},{"name":"after","in":"query","schema":{"type":"string"}},{"name":"include_connections","in":"query","description":"Load screens first without reconstructing action receipts. Defaults to true.","schema":{"type":"boolean","default":true}}],"responses":{"200":{"description":"Persistent shared project map with optional revision and account filters","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProductMapPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/product_map_comparison":{"get":{"operationId":"api_v1_verification_project_pages_product_map_comparison","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"revision_id","in":"query","schema":{"type":"string"}},{"name":"compare_revision_id","in":"query","schema":{"type":"string"}},{"name":"persona_id","in":"query","schema":{"type":"string"}},{"name":"account_id","in":"query","schema":{"type":"string"}},{"name":"query","in":"query","schema":{"type":"string"}},{"name":"area","in":"query","schema":{"type":"string"}},{"name":"since","in":"query","schema":{"type":"string"}},{"name":"before","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Matching-scope observation comparison with bounded retained evidence","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProductMapComparisonPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/recorder":{"get":{"operationId":"api_v1_verification_project_pages_recorder","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Recorder Project options","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RecorderProjectOptions"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Project choices for the Chrome recorder"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/runs":{"get":{"operationId":"api_v1_verification_project_pages_runs","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1}},{"name":"status","in":"query","schema":{"type":"string","enum":["all","active","passed","failed","blocked","cancelled","timed_out","skipped","cleanup_blocked","archived"]}},{"name":"trigger","in":"query","schema":{"type":"string","enum":["all","pull_request","writer","rerun","direct"]}},{"name":"environment_id","in":"query","schema":{"type":"string"}},{"name":"query","in":"query","schema":{"type":"string","maxLength":200}},{"name":"environment_query","in":"query","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"ProjectRunsPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectRunsPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/scenario":{"get":{"operationId":"api_v1_verification_project_pages_scenario","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"scenario_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"ProjectScenarioPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectScenarioPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/scenario_editor":{"get":{"operationId":"api_v1_verification_project_pages_scenario_editor","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"scenario_id","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"ProjectScenarioEditorPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectScenarioEditorPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/scenario_options":{"get":{"operationId":"api_v1_verification_project_pages_scenario_options","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ProjectScenarioOptions","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectScenarioOptions"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/scenario_rows":{"get":{"operationId":"api_v1_verification_project_pages_scenario_rows","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1}},{"name":"sort","in":"query","schema":{"type":"string","enum":["name","last_run","recently_added"]}},{"name":"state","in":"query","schema":{"type":"string","enum":["passing","failing","blocked","cancelled","running","not_run"]}}],"responses":{"200":{"description":"ProjectScenarioRowsPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectScenarioRowsPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/scenarios":{"get":{"operationId":"api_v1_verification_project_pages_scenarios","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"sort","in":"query","description":"Name by default; last_run puts the most recently run first and never-run last","schema":{"type":"string","enum":["name","last_run","recently_added"]}},{"name":"limit","in":"query","description":"List at most this many scenarios; state counts then cover only those","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"ProjectScenariosPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectScenariosPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/pages/settings":{"get":{"operationId":"api_v1_verification_project_pages_settings","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ProjectSettingsPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectSettingsPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/personas":{"get":{"operationId":"api_v1_verification_project_personas","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"PersonaCollection","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersonaCollection"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_verification_projects_project_id_personas","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Persona","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Persona"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersonaCreate"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/personas/{id}":{"get":{"operationId":"api_v1_verification_project_persona","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Persona","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/Persona"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_organization_id_verification_projects_project_id_personas_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Persona","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/Persona"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersonaUpdate"}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_verification_projects_project_id_personas_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Persona","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/Persona"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/PersonaUpdate"}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_organizations_organization_id_verification_projects_project_id_personas_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Persona deleted; historical reports retained"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordVersion"}}}}}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/personas/{id}/archive":{"post":{"operationId":"archive_api_v1_verification_project_persona","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Persona","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/Persona"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RecordVersion"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/product_map/brief":{"get":{"operationId":"api_v1_verification_project_product_map_brief","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"revision_id","in":"query","schema":{"type":"string"}},{"name":"persona_id","in":"query","schema":{"type":"string"}},{"name":"account_id","in":"query","schema":{"type":"string"}},{"name":"query","in":"query","schema":{"type":"string"}},{"name":"area","in":"query","schema":{"type":"string"}},{"name":"since","in":"query","schema":{"type":"string"}},{"name":"before","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Bounded evidence-backed product map retrieval","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProductMapBrief"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/product_map/compare":{"get":{"operationId":"api_v1_verification_project_product_map_compare","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"revision_id","in":"query","schema":{"type":"string"}},{"name":"persona_id","in":"query","schema":{"type":"string"}},{"name":"account_id","in":"query","schema":{"type":"string"}},{"name":"query","in":"query","schema":{"type":"string"}},{"name":"area","in":"query","schema":{"type":"string"}},{"name":"since","in":"query","schema":{"type":"string"}},{"name":"before","in":"query","schema":{"type":"string"}},{"name":"compare_revision_id","in":"query","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Bounded evidence-backed product map retrieval","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProductMapComparison"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/product_map/frontier":{"get":{"operationId":"api_v1_verification_project_product_map_frontier","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"revision_id","in":"query","schema":{"type":"string"}},{"name":"persona_id","in":"query","schema":{"type":"string"}},{"name":"account_id","in":"query","schema":{"type":"string"}},{"name":"query","in":"query","schema":{"type":"string"}},{"name":"area","in":"query","schema":{"type":"string"}},{"name":"since","in":"query","schema":{"type":"string"}},{"name":"before","in":"query","schema":{"type":"string"}},{"name":"after","in":"query","schema":{"type":"string"},"required":false}],"responses":{"200":{"description":"Bounded evidence-backed product map retrieval","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProductMapFrontier"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/product_map/identity_decisions":{"post":{"operationId":"api_v1_verification_project_product_map_identity_decisions","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Atomic operator correction; immutable evidence retained","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductMapIdentityDecision"}}}},"409":{"description":"Reviewed identity changed; reload before retrying"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["operation","reason","observations"],"properties":{"operation":{"type":"string","enum":["merge","split"]},"reason":{"type":"string","minLength":1,"maxLength":1000},"observations":{"type":"array","minItems":1,"maxItems":100,"items":{"$ref":"#/components/schemas/ProductMapIdentitySnapshot"}},"target":{"$ref":"#/components/schemas/ProductMapIdentitySnapshot"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/product_map/journey_replays/{replay_id}":{"get":{"operationId":"api_v1_verification_project_product_map_journey_replay","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"replay_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current preparation receipt; preparation is not qualification","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProductMapJourneyReplay"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/product_map/journey_replays/{replay_id}/qualification":{"post":{"operationId":"api_v1_verification_project_product_map_journey_qualification","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"replay_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Retained qualification request; check the replay receipt for its result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductMapJourneyReplay"}}}},"401":{"description":"Authentication is required"},"403":{"description":"An active administrator is required"},"404":{"description":"Qualification or its replay is unavailable"},"422":{"description":"The replay is not prepared"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/product_map/journey_variants/{variant_id}/replays":{"post":{"operationId":"api_v1_verification_project_product_map_journey_replays","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"variant_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Reviewed replay request; existing Run approval remains required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductMapJourneyReplay"}}}},"409":{"description":"Idempotency key belongs to another reviewed request"},"400":{"description":"A required replay field is missing"},"401":{"description":"Authentication is required"},"403":{"description":"An active administrator is required"},"404":{"description":"Replay preparation or its source is unavailable"},"422":{"description":"The reviewed file or request failed validation"},"502":{"description":"The request result could not be delivered"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["scenario_file","review_reason","idempotency_key"],"properties":{"scenario_file":{"type":"object","additionalProperties":true},"review_reason":{"type":"string","minLength":1,"maxLength":1000},"idempotency_key":{"type":"string","minLength":1,"maxLength":128},"actor_id":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,39}$"},"max_seconds":{"type":"integer","minimum":60,"maximum":7200,"default":600}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/product_map/journeys":{"get":{"operationId":"api_v1_verification_project_product_map_journeys","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"journey_query","in":"query","description":"Search canonical journey titles and goals before pagination without filtering screen captures.","schema":{"type":"string","maxLength":800}},{"name":"revision_id","in":"query","schema":{"type":"string"}},{"name":"persona_id","in":"query","schema":{"type":"string"}},{"name":"account_id","in":"query","schema":{"type":"string"}},{"name":"query","in":"query","schema":{"type":"string"}},{"name":"area","in":"query","schema":{"type":"string"}},{"name":"since","in":"query","schema":{"type":"string"}},{"name":"before","in":"query","schema":{"type":"string"}},{"name":"after","in":"query","schema":{"type":"string"}},{"name":"include_coverage","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Bounded evidence-backed product map retrieval","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProductMapJourneyPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/product_map/journeys/{journey_id}":{"get":{"operationId":"api_v1_verification_project_product_map_journey","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"journey_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"revision_id","in":"query","schema":{"type":"string"}},{"name":"persona_id","in":"query","schema":{"type":"string"}},{"name":"account_id","in":"query","schema":{"type":"string"}},{"name":"query","in":"query","schema":{"type":"string"}},{"name":"area","in":"query","schema":{"type":"string"}},{"name":"since","in":"query","schema":{"type":"string"}},{"name":"before","in":"query","schema":{"type":"string"}},{"name":"after","in":"query","schema":{"type":"string"}},{"name":"variant_id","in":"query","schema":{"type":"string"}},{"name":"include_tree","in":"query","schema":{"type":"boolean","default":true}}],"responses":{"200":{"description":"Bounded evidence-backed product map retrieval","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProductMapJourneyDetail"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/product_map/observations/{observation_id}":{"get":{"operationId":"api_v1_verification_project_product_map_observation","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"observation_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"revision_id","in":"query","schema":{"type":"string"}},{"name":"persona_id","in":"query","schema":{"type":"string"}},{"name":"account_id","in":"query","schema":{"type":"string"}},{"name":"query","in":"query","schema":{"type":"string"}},{"name":"area","in":"query","schema":{"type":"string"}},{"name":"since","in":"query","schema":{"type":"string"}},{"name":"before","in":"query","schema":{"type":"string"}},{"name":"observation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Bounded evidence-backed product map retrieval","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProductMapObservation"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/product_map/observations/{observation_id}/identity_history":{"get":{"operationId":"api_v1_verification_project_product_map_identity_history","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"observation_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"revision_id","in":"query","schema":{"type":"string"}},{"name":"persona_id","in":"query","schema":{"type":"string"}},{"name":"account_id","in":"query","schema":{"type":"string"}},{"name":"query","in":"query","schema":{"type":"string"}},{"name":"area","in":"query","schema":{"type":"string"}},{"name":"since","in":"query","schema":{"type":"string"}},{"name":"before","in":"query","schema":{"type":"string"}},{"name":"observation_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"interpretations_before","in":"query","schema":{"type":"string"}},{"name":"decisions_before","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Bounded immutable model and operator identity history","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProductMapIdentityHistory"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/product_map/overview":{"get":{"operationId":"api_v1_verification_project_product_map_overview","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"view_id","in":"query","schema":{"type":"string"}},{"name":"revision_id","in":"query","schema":{"type":"string"}},{"name":"account_id","in":"query","schema":{"type":"string"}},{"name":"persona_id","in":"query","schema":{"type":"string"}},{"name":"query","in":"query","schema":{"type":"string"}},{"name":"area","in":"query","schema":{"type":"string"}},{"name":"since","in":"query","schema":{"type":"string"}},{"name":"before","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Compact whole-app screen inventory and retained connections; coalesces a stale projection refresh","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProductMapOverview"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_verification_projects_project_id_product_map_overview","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Coalesced background graph refresh intent","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["refreshing"],"properties":{"refreshing":{"type":"boolean"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/product_map/path":{"get":{"operationId":"api_v1_verification_project_product_map_path","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"revision_id","in":"query","schema":{"type":"string"}},{"name":"persona_id","in":"query","schema":{"type":"string"}},{"name":"account_id","in":"query","schema":{"type":"string"}},{"name":"query","in":"query","schema":{"type":"string"}},{"name":"area","in":"query","schema":{"type":"string"}},{"name":"since","in":"query","schema":{"type":"string"}},{"name":"before","in":"query","schema":{"type":"string"}},{"name":"source","in":"query","schema":{"type":"string"},"required":true},{"name":"target","in":"query","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Bounded evidence-backed product map retrieval","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProductMapPath"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/product_map/questions":{"post":{"operationId":"api_v1_verification_project_product_map_questions","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"A bounded historical map answer with server-resolved evidence citations","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProductMapAnswer"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Administrator access required"},"404":{"description":"Project, selected state or question feature unavailable"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"400":{"description":"Invalid question or map scope"},"503":{"description":"Model answer unavailable or unsupported"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["question"],"properties":{"question":{"type":"string","minLength":1,"maxLength":2000},"state_id":{"type":"string"},"revision_id":{"type":"string"},"account_id":{"type":"string"},"persona_id":{"type":"string"},"query":{"type":"string"},"area":{"type":"string"},"since":{"type":"string"},"before":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/product_map/states":{"get":{"operationId":"api_v1_verification_project_product_map_states","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"revision_id","in":"query","schema":{"type":"string"}},{"name":"persona_id","in":"query","schema":{"type":"string"}},{"name":"account_id","in":"query","schema":{"type":"string"}},{"name":"query","in":"query","schema":{"type":"string"}},{"name":"area","in":"query","schema":{"type":"string"}},{"name":"since","in":"query","schema":{"type":"string"}},{"name":"before","in":"query","schema":{"type":"string"}},{"name":"after","in":"query","schema":{"type":"string"},"required":false}],"responses":{"200":{"description":"Bounded evidence-backed product map retrieval","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProductMapSearch"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/product_map/states/{state_id}":{"get":{"operationId":"api_v1_verification_project_product_map_state","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"state_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"observation_id","in":"query","description":"Select an exact retained capture within the requested state and authorized scope.","schema":{"type":"string"}},{"name":"include_connections","in":"query","schema":{"type":"boolean","default":true}},{"name":"revision_id","in":"query","schema":{"type":"string"}},{"name":"persona_id","in":"query","schema":{"type":"string"}},{"name":"account_id","in":"query","schema":{"type":"string"}},{"name":"query","in":"query","schema":{"type":"string"}},{"name":"area","in":"query","schema":{"type":"string"}},{"name":"since","in":"query","schema":{"type":"string"}},{"name":"before","in":"query","schema":{"type":"string"}},{"name":"state_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Bounded evidence-backed product map retrieval","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProductMapStateDetail"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/product_map/version":{"get":{"operationId":"api_v1_verification_project_product_map_version","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Cheap project change watermark without reconstructing the map","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["map_version"],"properties":{"map_version":{"type":"string"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/recordings":{"post":{"operationId":"api_v1_verification_project_recordings","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"The recording, with its browser starting","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioRecording"}}}},"401":{"description":"Not signed in"},"403":{"description":"Only organization admins record"},"404":{"description":"Recording is not enabled","or the project":null,"persona or environment is not found":null},"422":{"description":"Refused, with a code such as recording_target_unsupported or browser_session_busy, or an archived persona or environment"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ScenarioRecordingCreate"}}}},"security":[{"bearerAuth":[]}],"summary":"Open a recording browser where an admin acts out a journey to draft a Scenario","description":"Admins only, while recording is enabled for the organization. Recording browsers share the organization's limit of 3 live owner browsers and open only environments at a public HTTPS address (code recording_target_unsupported otherwise)."}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/recordings/{id}":{"get":{"operationId":"api_v1_verification_project_recording","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The recording; only its creator can read it","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ScenarioRecording"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read a recording you started, its browser and its draft"},"delete":{"operationId":"delete_api_v1_organizations_organization_id_verification_projects_project_id_recordings_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The discarded recording","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ScenarioRecording"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Discard a recording, close its browser and forget the journey"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/recordings/{id}/finish":{"post":{"operationId":"finish_api_v1_verification_project_recording","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"The recording, now drafting","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioRecording"}}}},"401":{"description":"Not signed in"},"403":{"description":"Only organization admins record"},"404":{"description":"Recording is not enabled","or this admin has no such recording in the project":null},"422":{"description":"Refused with code recording_unavailable (the recording browser ended) or invalid_recording"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ScenarioRecordingFinish"}}}},"security":[{"bearerAuth":[]}],"summary":"Save the recorded journey, close the browser and start drafting a Scenario"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/recordings/{id}/redraft":{"post":{"operationId":"redraft_api_v1_verification_project_recording","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"The recording, drafting again","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioRecording"}}}},"401":{"description":"Not signed in"},"403":{"description":"Only organization admins record"},"404":{"description":"Recording is not enabled","or this admin has no such recording in the project":null},"422":{"description":"Refused with code recording_not_redraftable or redraft_limit_reached"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Draft again from a saved recording whose draft failed or stopped (at most 3 times)"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/run_plans":{"get":{"operationId":"api_v1_verification_project_run_plans","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"page","schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Run Plan authoring page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunPlansPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Run Plans and project-wide Scenario choices"},"post":{"operationId":"post_api_v1_organizations_organization_id_verification_projects_project_id_run_plans","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Saved Run Plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlan"}}}},"400":{"description":"Missing parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}},"409":{"description":"Source or version changed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}},"422":{"description":"Invalid plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunPlanInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Compose reusable Scenarios with checkpoint handoffs"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/run_plans/{id}":{"get":{"operationId":"api_v1_verification_project_run_plan","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Run Plan","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunPlan"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_organization_id_verification_projects_project_id_run_plans_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated Run Plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlan"}}}},"400":{"description":"Missing parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}},"409":{"description":"Source or version changed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}},"422":{"description":"Invalid plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunPlanUpdate"}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_verification_projects_project_id_run_plans_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated Run Plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlan"}}}},"400":{"description":"Missing parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}},"409":{"description":"Source or version changed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}},"422":{"description":"Invalid plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunPlanUpdate"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/run_plans/{id}/archive":{"post":{"operationId":"archive_api_v1_verification_project_run_plan","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Archived Run Plan","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunPlan"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}},"422":{"description":"Invalid plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}},"502":{"description":"Bad gateway"},"400":{"description":"Missing parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}},"409":{"description":"Source or version changed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPlanError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["version"],"properties":{"version":{"type":"integer"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/run_schedules":{"get":{"operationId":"api_v1_verification_project_run_schedules","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","additionalProperties":true,"items":{"$ref":"#/components/schemas/RunSchedule"}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_verification_projects_project_id_run_schedules","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunSchedule"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunScheduleCreate"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/run_schedules/lookup":{"get":{"operationId":"lookup_api_v1_verification_project_run_schedules","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"query","required":true,"schema":{"type":"string"},"description":"Exact schedule name; ambiguous names require a public ID."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunSchedule"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/run_schedules/options":{"get":{"operationId":"options_api_v1_verification_project_run_schedules","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunScheduleSetupOptions"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/run_schedules/preview":{"post":{"operationId":"preview_api_v1_verification_project_run_schedules","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current matching scenarios and credential requirements","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunSchedulePreview"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunScheduleSelection"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/run_schedules/{id}":{"get":{"operationId":"api_v1_verification_project_run_schedule","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunSchedule"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_organization_id_verification_projects_project_id_run_schedules_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunSchedule"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunScheduleUpdate"}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_verification_projects_project_id_run_schedules_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunSchedule"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunScheduleUpdate"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/runs":{"get":{"operationId":"api_v1_verification_project_runs","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"status","in":"query","description":"Archived runs are hidden by default. Select archived to list them.","schema":{"type":"string","enum":["all","active","passed","failed","blocked","cancelled","timed_out","skipped","cleanup_blocked","archived"]}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1},"description":"Page of saved history, newest first, with 100 runs per page."}],"responses":{"200":{"description":"RunCollection","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunCollection"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/runs/prepare":{"post":{"operationId":"prepare_api_v1_verification_project_runs","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"RunPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Invalid selection, unavailable access, or denied policy"},"502":{"description":"Bad gateway"},"202":{"description":"RunPage","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPage"}}}},"409":{"description":"Stale approval or idempotency conflict"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunPrepare"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/runs/{id}":{"get":{"operationId":"api_v1_verification_project_run","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"diagnostics","in":"query","required":false,"description":"false leaves out each scenario's full console and network log (result_json.browser_events and recording.browser_events); browser_errors still lists the errors and failed requests.","schema":{"type":"boolean","default":true}}],"responses":{"200":{"description":"RunPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/runs/{id}/archive":{"post":{"operationId":"archive_api_v1_verification_project_run","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Run","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Run"}}}},"403":{"description":"Organization administrator required"},"404":{"description":"Run not found in this project"},"422":{"description":"Run has not finished"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Archive a finished Run from ordinary history","description":"Requires organization administrator access. Retains outcomes, recordings, billing and cleanup records. Archived runs remain accessible by ID and can be restored."}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/runs/{id}/cancel":{"post":{"operationId":"cancel_api_v1_verification_project_run","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"RunPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Cancel this Run and its unfinished ScenarioRuns"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/runs/{id}/card":{"get":{"operationId":"card_api_v1_verification_project_run","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Run chat card","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunChatCard"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Verify run status for a chat card"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/runs/{id}/launch":{"post":{"operationId":"launch_api_v1_verification_project_run","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"RunPage","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Invalid selection, unavailable access, or denied policy"},"502":{"description":"Bad gateway"},"409":{"description":"Stale approval or idempotency conflict"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunLaunch"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/runs/{id}/page":{"get":{"operationId":"page_api_v1_verification_project_run","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1}},{"name":"browser","in":"query","description":"ScenarioRun public ID to open, scoped to this run.","schema":{"type":"string"}},{"name":"details","in":"query","description":"false returns only summaries for the agent handoff page.","schema":{"type":"boolean","default":true}}],"responses":{"200":{"description":"Run browser page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunBrowserPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Paginated execution summaries and the selected browser's report"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/runs/{id}/rerun":{"post":{"operationId":"rerun_api_v1_verification_project_run","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Invalid selection, unavailable access, or denied policy"},"502":{"description":"Bad gateway"},"202":{"description":"RunPage","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPage"}}}},"409":{"description":"Stale approval or idempotency conflict"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RunRerun"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/runs/{id}/restore":{"post":{"operationId":"restore_api_v1_verification_project_run","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Run","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Run"}}}},"403":{"description":"Organization administrator required"},"404":{"description":"Run not found in this project"},"422":{"description":"Run has not finished"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Restore an archived Run to ordinary history","description":"Requires organization administrator access. Retains outcomes, recordings, billing and cleanup records. Archived runs remain accessible by ID and can be restored."}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/runs/{id}/scenario_runs/{scenario_run_id}/lessons":{"post":{"operationId":"post_api_v1_organizations_organization_id_verification_projects_project_id_runs_id_scenario_runs_scenario_run_id_lessons","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"scenario_run_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Lesson saved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyMemory"}}}},"403":{"description":"Organization administrator required"},"404":{"description":"Run or ScenarioRun not found in this project"},"422":{"description":"The ScenarioRun did not fail or get blocked, or the lesson is invalid"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ScenarioRunLessonInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Teach Verify how later runs of a failed or blocked Scenario should act","description":"Organization administrators save an advisory operator note in the run's environment, attributed to this ScenarioRun. Later runs of the same Scenario recall it before other notes. It does not change the Scenario's steps, outcomes or account grants."}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/runs/{id}/scenario_runs/{scenario_run_id}/live_frame":{"get":{"operationId":"get_api_v1_organizations_organization_id_verification_projects_project_id_runs_id_scenario_runs_scenario_run_id_live_frame","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"scenario_run_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"JPEG frame","content":{"image/jpeg":{"schema":{"type":"string","format":"binary"}}}},"404":{"description":"No live frame; the scenario is not running or has not captured one"}},"security":[{"bearerAuth":[]}],"summary":"The newest masked browser frame of a running ScenarioRun"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/runs/{id}/scenario_runs/{scenario_run_id}/scenario_edit":{"get":{"operationId":"get_api_v1_organizations_organization_id_verification_projects_project_id_runs_id_scenario_runs_scenario_run_id_scenario_edit","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"scenario_run_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The current scenario and the environment for a new run; admins only","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioRunEdit"}}}}},"security":[{"bearerAuth":[]}],"summary":"Read the latest saved scenario before proposing an edit from a run"},"patch":{"operationId":"patch_api_v1_organizations_organization_id_verification_projects_project_id_runs_id_scenario_runs_scenario_run_id_scenario_edit","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"scenario_run_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Saved scenario; the original run remains unchanged","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioRunEdit"}}}},"409":{"description":"The scenario changed since this draft was opened"},"422":{"description":"Invalid steps or outcomes, or the saved scenario is unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ScenarioRunEditSave"}}}},"security":[{"bearerAuth":[]}],"summary":"Save reviewed steps and outcomes as a new scenario revision"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/runs/{id}/scenario_runs/{scenario_run_id}/scenario_edit/run":{"post":{"operationId":"post_api_v1_organizations_organization_id_verification_projects_project_id_runs_id_scenario_runs_scenario_run_id_scenario_edit_run","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"scenario_run_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"New run, with the normal preparation and admission checks","content":{"application/json":{"schema":{"type":"object","required":["web_path"],"properties":{"web_path":{"type":"string"}}}}}},"409":{"description":"The reviewed scenario version changed"},"422":{"description":"The target or scenario is unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["version","idempotency_key"],"properties":{"version":{"type":"integer"},"idempotency_key":{"type":"string"},"viewer_time_zone":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Start just the reviewed scenario at its saved version in the original environment"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/runs/{id}/scenario_runs/{scenario_run_id}/scenario_edit/suggest":{"post":{"operationId":"post_api_v1_organizations_organization_id_verification_projects_project_id_runs_id_scenario_runs_scenario_run_id_scenario_edit_suggest","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"scenario_run_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Validated proposal ready for review","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioEditProposal"}}}},"409":{"description":"The saved scenario changed"},"422":{"description":"Invalid draft or edit request"},"503":{"description":"Suggestion could not be completed"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ScenarioEditSuggestionRequest"}}}},"security":[{"bearerAuth":[]}],"summary":"Propose validated scenario edits in one model call without saving"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/runs/{id}/scenario_runs/{scenario_run_id}/scenario_edit/validate":{"post":{"operationId":"post_api_v1_organizations_organization_id_verification_projects_project_id_runs_id_scenario_runs_scenario_run_id_scenario_edit_validate","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"scenario_run_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Valid proposed steps and outcomes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioEditContent"}}}},"409":{"description":"The saved scenario changed"},"422":{"description":"Invalid proposal"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ScenarioRunEditSave"}}}},"security":[{"bearerAuth":[]}],"summary":"Validate a proposed draft without saving or starting a run"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/scenarios":{"get":{"operationId":"api_v1_verification_project_scenarios","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ScenarioCollection","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ScenarioCollection"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_verification_projects_project_id_scenarios","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Scenario","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Scenario"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ScenarioCreate"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/scenarios/export":{"get":{"operationId":"export_api_v1_verification_project_scenarios","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"file_schema_version","in":"query","required":false,"schema":{"type":"integer","enum":[1,2],"default":1},"description":"Version 2 clients retain named actors; older clients refuse actor journeys."}],"responses":{"200":{"description":"ScenarioFileExport","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ScenarioFileExport"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"The project's active Scenarios as Scenario files"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/scenarios/from_exploration":{"post":{"operationId":"from_exploration_api_v1_verification_project_scenarios","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Scenario saved earlier from the same check","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/Scenario"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Scenario","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Scenario"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["exploration_id","agent_id","check_index","persona_id"],"properties":{"exploration_id":{"type":"string"},"agent_id":{"type":"string","description":"Id of the exploration agent that reported the check"},"check_index":{"type":"integer","minimum":0,"description":"Position of the check in that agent's report"},"persona_id":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Save a check a finished exploration of this project reported as a scenario for one persona; saving the same check again returns its scenario"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/scenarios/import":{"post":{"operationId":"import_api_v1_verification_project_scenarios","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Every file was accepted; nothing is saved on a dry run","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ScenarioFileImportResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Only organization administrators can import Scenarios"},"404":{"description":"Not found"},"422":{"description":"Nothing was saved. Either at least one file was refused and results lists every file, or scenarios was not a list and error says so.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ScenarioFileImportResponse"},{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}]}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ScenarioFileImport"}}}},"security":[{"bearerAuth":[]}],"summary":"Check every Scenario file, then create and update Scenarios in one transaction","description":"A file with an id updates that Scenario when its version is current. A file without an id creates a Scenario, or, when an earlier import stored its key, matches the Scenario it created. Nothing is saved on a dry run or when any file is refused."}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/scenarios/{id}":{"get":{"operationId":"api_v1_verification_project_scenario","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Scenario","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/Scenario"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_organization_id_verification_projects_project_id_scenarios_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Scenario","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/Scenario"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ScenarioUpdate"}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_verification_projects_project_id_scenarios_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Scenario","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/Scenario"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ScenarioUpdate"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/scenarios/{id}/archive":{"post":{"operationId":"archive_api_v1_verification_project_scenario","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Scenario","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/Scenario"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RecordVersion"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/scenarios/{id}/duplicate":{"post":{"operationId":"duplicate_api_v1_verification_project_scenario","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Scenario","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Scenario"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ScenarioDuplicate"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/scenarios/{id}/revisions":{"get":{"operationId":"revisions_api_v1_verification_project_scenario","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"ScenarioRevisionCollection","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ScenarioRevisionCollection"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List who saved each version of a scenario, newest first, with the definition each saved"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/workflow_repositories/{repository_id}/head":{"get":{"operationId":"get_api_v1_organizations_organization_id_verification_projects_project_id_workflow_repositories_repository_id_head","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"repository_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"repository_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["sha"],"properties":{"sha":{"type":"string"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"404":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}},"field_errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"502":{"description":"Bad gateway"},"409":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Project workflows /workflow_repositories/{repository_id}/head get"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/workflow_runs":{"get":{"operationId":"api_v1_verification_project_workflow_runs","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["runs","pagination"],"properties":{"runs":{"type":"array","items":{"$ref":"#/components/schemas/ProjectWorkflowRun"}},"pagination":{"$ref":"#/components/schemas/ProjectWorkflowPagination"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"404":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}},"field_errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"502":{"description":"Bad gateway"},"409":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Project workflows /workflow_runs get"},"post":{"operationId":"post_api_v1_organizations_organization_id_verification_projects_project_id_workflow_runs","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectWorkflowRun"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"404":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}},"field_errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"502":{"description":"Bad gateway"},"201":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectWorkflowRun"}}}},"409":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["workflow_id","repository_id","expected_revision_id","expected_base_sha","request"],"properties":{"workflow_id":{"type":"string"},"repository_id":{"type":"string"},"expected_revision_id":{"type":"string"},"expected_base_sha":{"type":"string"},"request":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Project workflows /workflow_runs post"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/workflow_runs/{id}":{"get":{"operationId":"get_api_v1_organizations_organization_id_verification_projects_project_id_workflow_runs_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectWorkflowRun"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"404":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}},"field_errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"502":{"description":"Bad gateway"},"409":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Project workflows /workflow_runs/{id} get"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/workflow_runs/{id}/cancel":{"post":{"operationId":"post_api_v1_organizations_organization_id_verification_projects_project_id_workflow_runs_id_cancel","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectWorkflowRun"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"404":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}},"field_errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"502":{"description":"Bad gateway"},"409":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["cancel_token"],"properties":{"cancel_token":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Project workflows /workflow_runs/{id}/cancel post"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/workflows":{"get":{"operationId":"api_v1_verification_project_workflows","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectWorkflowsPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"404":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}},"field_errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"502":{"description":"Bad gateway"},"409":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Project workflows /workflows get"},"post":{"operationId":"post_api_v1_organizations_organization_id_verification_projects_project_id_workflows","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectWorkflow"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"404":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}},"field_errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"502":{"description":"Bad gateway"},"201":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectWorkflow"}}}},"409":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["name","configuration"],"properties":{"name":{"type":"string"},"configuration":{"$ref":"#/components/schemas/ProjectWorkflowConfiguration"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Project workflows /workflows post"}},"/api/v1/organizations/{organization_id}/verification/projects/{project_id}/workflows/{id}":{"get":{"operationId":"api_v1_verification_project_workflow","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectWorkflowDetail"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"404":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}},"field_errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"502":{"description":"Bad gateway"},"409":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Project workflows /workflows/{id} get"},"patch":{"operationId":"patch_api_v1_organizations_organization_id_verification_projects_project_id_workflows_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectWorkflow"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"404":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}},"field_errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"502":{"description":"Bad gateway"},"409":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["expected_revision_id","configuration"],"properties":{"expected_revision_id":{"type":"string"},"configuration":{"$ref":"#/components/schemas/ProjectWorkflowConfiguration"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Project workflows /workflows/{id} patch"},"put":{"operationId":"put_api_v1_organizations_organization_id_verification_projects_project_id_workflows_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_organizations_organization_id_verification_projects_project_id_workflows_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ProjectWorkflow"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"404":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}},"422":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}},"field_errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"502":{"description":"Bad gateway"},"409":{"description":"Operation refused","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Project workflows /workflows/{id} delete","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["expected_revision_id"],"properties":{"expected_revision_id":{"type":"string"}}}}}}}},"/api/v1/organizations/{organization_id}/verification/recorder":{"get":{"operationId":"api_v1_verification_recorder","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Recorder setup","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RecorderSetup"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Chrome recorder setup for an enabled organization"}},"/api/v1/organizations/{organization_id}/verify/binaries":{"get":{"operationId":"api_v1_binaries","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Safe project-scoped binary response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyBinaryDirectory"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_verify_binaries","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Safe project-scoped binary response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyBinaryRegistration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Safe project-scoped binary response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyBinaryRegistration"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyBinaryCreate"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/binaries/{binary_id}/versions":{"get":{"operationId":"api_v1_binary_versions","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"binary_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Safe project-scoped binary response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyBinaryVersionsPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_verify_binaries_binary_id_versions","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"binary_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Safe project-scoped binary response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyBinaryVersionRegistration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Safe project-scoped binary response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyBinaryVersionRegistration"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyBinaryVersionCreate"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/binaries/{binary_id}/versions/{id}":{"get":{"operationId":"api_v1_binary_version","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"binary_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Safe project-scoped binary response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyBinaryVersionPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_organizations_organization_id_verify_binaries_binary_id_versions_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"binary_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Unreferenced version and owned resources deleted"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/binaries/{binary_id}/versions/{id}/cancel":{"post":{"operationId":"cancel_api_v1_binary_version","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"binary_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Safe project-scoped binary response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyBinaryVersionPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/binaries/{binary_id}/versions/{id}/logs":{"get":{"operationId":"logs_api_v1_binary_version","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"binary_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Safe project-scoped binary response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyBinaryLogs"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/binaries/{binary_id}/versions/{id}/retry":{"post":{"operationId":"retry_api_v1_binary_version","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"binary_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Safe project-scoped binary response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyBinaryVersionRegistration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/binaries/{id}":{"get":{"operationId":"api_v1_binary","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Safe project-scoped binary response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyBinaryPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/binaries/{id}/archive":{"post":{"operationId":"archive_api_v1_binary","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Safe project-scoped binary response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyBinarySummaryPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/browser_sessions":{"post":{"operationId":"api_v1_browser_sessions","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Expiring owner browser session metadata","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyBrowserSession"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Expiring owner browser session metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyBrowserSession"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["url","project_id"],"properties":{"account_id":{"type":"string","description":"The project's active credential to refresh; omit to create a credential."},"name":{"type":"string","description":"Required when opening a browser for a new credential."},"project_id":{"type":"string","description":"The project (slug or ID) whose credential receives the session."},"url":{"type":"string","format":"uri"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Open a temporary owner-controlled browser for app login and MFA"}},"/api/v1/organizations/{organization_id}/verify/browser_sessions/{id}":{"get":{"operationId":"api_v1_browser_session","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Owner-only metadata; no application cookies or storage values","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyBrowserSession"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read an owner browser status and expiring viewer link"},"delete":{"operationId":"delete_api_v1_organizations_organization_id_verify_browser_sessions_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Browser closure requested"}},"security":[{"bearerAuth":[]}],"summary":"Close the temporary login browser without saving"}},"/api/v1/organizations/{organization_id}/verify/browser_sessions/{id}/save":{"post":{"operationId":"save_api_v1_browser_session","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Account metadata; browser cookies and storage remain write-only","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyLoginAccount"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["confirm_account"],"properties":{"confirm_account":{"type":"boolean","enum":[true]}}}}}},"security":[{"bearerAuth":[]}],"summary":"Confirm the selected app account and save its scoped authenticated state"}},"/api/v1/organizations/{organization_id}/verify/bug_hunts":{"get":{"operationId":"api_v1_bug_hunts","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Deep scan history and active scans","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExplorationList"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Deprecated alias of verify/deep_scans: List focused deep scans in this organization","deprecated":true},"post":{"operationId":"post_api_v1_organizations_organization_id_verify_bug_hunts","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Previously accepted scan","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExploration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Accepted scan with its report URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyExploration"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["environment_id","goal"],"properties":{"environment_id":{"type":"string"},"account_id":{"type":"string","nullable":true},"goal":{"type":"string","minLength":1,"maxLength":4000},"max_seconds":{"type":"integer","minimum":60,"maximum":43200,"default":7200},"max_testers":{"type":"integer","minimum":1,"maximum":100,"default":20},"concurrency":{"type":"integer","minimum":1,"maximum":48,"default":10},"idempotency_key":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Deprecated alias of verify/deep_scans: Start a parallel team of browser scanners","deprecated":true}},"/api/v1/organizations/{organization_id}/verify/bug_hunts/flows":{"post":{"operationId":"flows_api_v1_bug_hunts","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"The started scans","content":{"application/json":{"schema":{"type":"object","required":["explorations"],"properties":{"explorations":{"type":"array","items":{"$ref":"#/components/schemas/VerifyExplorationSummary"}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["flow_names"],"description":"Supply exploration_id to scan that exploration's flows on its environment, or environment_id to scan the environment's newest discovery map.","properties":{"environment_id":{"type":"string"},"exploration_id":{"type":"string"},"account_id":{"type":"string","nullable":true},"flow_names":{"type":"array","minItems":1,"items":{"type":"string"}},"note":{"type":"string","nullable":true,"maxLength":1000},"max_seconds":{"type":"integer","minimum":60,"maximum":43200,"default":7200},"max_testers":{"type":"integer","minimum":1,"maximum":100,"default":20},"concurrency":{"type":"integer","minimum":1,"maximum":48,"default":10},"idempotency_key":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Deprecated alias of verify/deep_scans: Start one focused deep scan per chosen flow from a finished exploration or the environment's discovery map","deprecated":true}},"/api/v1/organizations/{organization_id}/verify/bug_hunts/options":{"get":{"operationId":"options_api_v1_bug_hunts","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Launch form choices and permissions","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyDeepScanOptions"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Deprecated alias of verify/deep_scans: Ready environments and their eligible saved credentials","deprecated":true}},"/api/v1/organizations/{organization_id}/verify/bug_hunts/{id}":{"get":{"operationId":"api_v1_bug_hunt","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deep scan","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExploration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Deprecated alias of verify/deep_scans: Read a deep scan report and protected evidence","deprecated":true}},"/api/v1/organizations/{organization_id}/verify/bug_hunts/{id}/reproduce":{"post":{"operationId":"reproduce_api_v1_bug_hunt","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"The rerun scan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyExploration"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["finding_index"],"properties":{"finding_index":{"type":"integer","minimum":0},"idempotency_key":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Deprecated alias of verify/deep_scans: Rerun one reported bug of a finished scan in a fresh browser","deprecated":true}},"/api/v1/organizations/{organization_id}/verify/bug_hunts/{id}/stop":{"post":{"operationId":"stop_api_v1_bug_hunt","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Stopped deep scan","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExploration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Deprecated alias of verify/deep_scans: Stop a deep scan while retaining its saved report","deprecated":true}},"/api/v1/organizations/{organization_id}/verify/deep_scans":{"get":{"operationId":"api_v1_deep_scans","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1}},{"name":"query","in":"query","schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","schema":{"type":"string","enum":["all","active","completed","partial","canceled"]}},{"name":"findings","in":"query","schema":{"type":"string","enum":["all","with_findings"]}}],"responses":{"200":{"description":"Deep scan history and active scans","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExplorationList"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List focused deep scans in this organization"},"post":{"operationId":"post_api_v1_organizations_organization_id_verify_deep_scans","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Previously accepted scan","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExploration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"402":{"description":"The organization's billing limit refuses this usage; see `error.upgrade_path`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingLimitExceededError"}}}},"202":{"description":"Accepted scan with its report URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyExploration"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["environment_id","goal"],"properties":{"environment_id":{"type":"string"},"account_id":{"type":"string","nullable":true},"goal":{"type":"string","minLength":1,"maxLength":4000},"max_seconds":{"type":"integer","minimum":60,"maximum":43200,"default":14400},"max_testers":{"type":"integer","minimum":1,"maximum":200,"default":40},"concurrency":{"type":"integer","minimum":1,"maximum":96,"default":20},"idempotency_key":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Start a parallel team of browser scanners"}},"/api/v1/organizations/{organization_id}/verify/deep_scans/flows":{"post":{"operationId":"flows_api_v1_deep_scans","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"402":{"description":"The organization's billing limit refuses this usage; see `error.upgrade_path`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingLimitExceededError"}}}},"202":{"description":"The started scans","content":{"application/json":{"schema":{"type":"object","required":["explorations"],"properties":{"explorations":{"type":"array","items":{"$ref":"#/components/schemas/VerifyExplorationSummary"}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["flow_names"],"description":"Supply exploration_id to scan that exploration's flows on its environment, or environment_id to scan the environment's newest discovery map.","properties":{"environment_id":{"type":"string"},"exploration_id":{"type":"string"},"account_id":{"type":"string","nullable":true},"flow_names":{"type":"array","minItems":1,"items":{"type":"string"}},"note":{"type":"string","nullable":true,"maxLength":1000},"max_seconds":{"type":"integer","minimum":60,"maximum":43200,"default":14400},"max_testers":{"type":"integer","minimum":1,"maximum":200,"default":40},"concurrency":{"type":"integer","minimum":1,"maximum":96,"default":20},"idempotency_key":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Start one focused deep scan per chosen flow from a finished exploration or the environment's discovery map"}},"/api/v1/organizations/{organization_id}/verify/deep_scans/mapped_flows":{"get":{"operationId":"mapped_flows_api_v1_deep_scans","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","schema":{"type":"string"}},{"name":"environment_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"account_id","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Selected-scope flow choices","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyDeepScanMappedFlows"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Flow choices for one environment and credential, including compatible qualified shared journeys"}},"/api/v1/organizations/{organization_id}/verify/deep_scans/options":{"get":{"operationId":"options_api_v1_deep_scans","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"environment_query","in":"query","required":false,"description":"Matches environment names, addresses, types, branches and pull request numbers, and limits the list to 25 configured environments and 25 previews; send it empty for the first page. Omit it to list every ready environment.","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Launch form choices and permissions","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyDeepScanOptions"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Ready environments and their eligible saved credentials"}},"/api/v1/organizations/{organization_id}/verify/deep_scans/{id}":{"get":{"operationId":"api_v1_deep_scan","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidence","in":"query","description":"Use selected to include evidence file metadata only for the selected agent. Recordings remain available for every agent; report sources are omitted until the full report is requested.","schema":{"type":"string","enum":["selected"]}},{"name":"agent_id","in":"query","description":"Agent whose evidence files to include with evidence=selected. Defaults to the first agent in working, attention, queued, completed, stopped, setup order.","schema":{"type":"string"}},{"name":"finding_id","in":"query","description":"Finding report ID whose tester's evidence files to include with evidence=selected, taking precedence over agent_id.","schema":{"type":"string"}}],"responses":{"200":{"description":"Deep scan","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExploration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read a deep scan report and protected evidence"}},"/api/v1/organizations/{organization_id}/verify/deep_scans/{id}/agent":{"get":{"operationId":"agent_api_v1_deep_scan","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","schema":{"type":"string"}},{"name":"agent_id","in":"query","schema":{"type":"string"}},{"name":"finding_id","in":"query","description":"Select the tester that owns this finding, taking precedence over agent_id.","schema":{"type":"string"}}],"responses":{"200":{"description":"The selected tester","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExplorationAgent"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"One tester's recording, activity and evidence, loaded when opened"}},"/api/v1/organizations/{organization_id}/verify/deep_scans/{id}/context":{"get":{"operationId":"context_api_v1_deep_scan","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Deep Scan navigation context","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyDeepScanContext"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Compact run instructions, status and navigation without reports or recordings"}},"/api/v1/organizations/{organization_id}/verify/deep_scans/{id}/findings":{"get":{"operationId":"findings_api_v1_deep_scan","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","schema":{"type":"string"}},{"name":"priority","in":"query","description":"List only findings at this priority. Ignored when the scan has none at it.","schema":{"type":"string","enum":["high","medium","low"]}}],"responses":{"200":{"description":"Deep Scan findings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyDeepScanFindings"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"All findings and the complete agent fix prompt for one Deep Scan"}},"/api/v1/organizations/{organization_id}/verify/deep_scans/{id}/reproduce":{"post":{"operationId":"reproduce_api_v1_deep_scan","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"402":{"description":"The organization's billing limit refuses this usage; see `error.upgrade_path`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingLimitExceededError"}}}},"202":{"description":"The rerun scan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyExploration"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["finding_index"],"properties":{"finding_index":{"type":"integer","minimum":0},"idempotency_key":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Rerun one reported bug of a finished scan in a fresh browser"}},"/api/v1/organizations/{organization_id}/verify/deep_scans/{id}/stop":{"post":{"operationId":"stop_api_v1_deep_scan","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Stopped deep scan","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExploration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Stop a deep scan while retaining its saved report"}},"/api/v1/organizations/{organization_id}/verify/dreams":{"get":{"operationId":"api_v1_dreams","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":true,"description":"Project slug or public id","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"One page of 25 dreams for the project, newest first","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyDreamsPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Project not found in this organization"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List a project's nightly dreams, newest first, with the schedule and the runs waiting for the next one"}},"/api/v1/organizations/{organization_id}/verify/dreams/{id}":{"get":{"operationId":"api_v1_dream","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":true,"description":"Project slug or public id that owns the dream","schema":{"type":"string"}},{"name":"tab","in":"query","required":false,"description":"Which list to populate; defaults to changes","schema":{"type":"string","enum":["changes","runs"],"default":"changes"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"The dream, its counts, and one page of the selected tab's list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyDreamPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Dream not found for this organization and project"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Inspect what one nightly dream reviewed and changed"}},"/api/v1/organizations/{organization_id}/verify/dreams/{id}/resume":{"post":{"operationId":"resume_api_v1_dream","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":true,"description":"Project slug or public id that owns the dream","schema":{"type":"string"}}],"responses":{"200":{"description":"The dream as it is after the review job was queued; its status is pending","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyDreamDetail"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Organization administrator required"},"404":{"description":"Dream not found for this organization and project"},"422":{"description":"The dream already finished, is already queued, or a worker still holds it","content":{"application/json":{"schema":{"type":"object","required":["error","code"],"properties":{"error":{"type":"string"},"code":{"type":"string","enum":["dream_not_resumable"]}}}}}},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Resume an interrupted or failed dream now instead of waiting for the next sweep","description":"Organization administrators only. Queues the dream's review job and marks the dream pending, so it is no longer resumable until a worker claims it; repeating the request meanwhile is refused."}},"/api/v1/organizations/{organization_id}/verify/environments":{"get":{"operationId":"api_v1_verify_environments","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_verify_environments","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Existing environment returned for an idempotent replay","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyEnvironment"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Verify environment created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyEnvironment"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyEnvironmentCreateInput"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/environments/{id}":{"get":{"operationId":"api_v1_verify_environment","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Combined Verify environment detail snapshot","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyEnvironmentDetail"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_organization_id_verify_environments_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated Verify environment","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyEnvironment"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string"},"verify_network_connection_id":{"type":"string","nullable":true},"allowed_actions":{"type":"string","enum":["read_only","writes"],"description":"read_only only looks around; writes may create, change and delete data."},"target_url":{"type":["string","null"]},"imessage_number":{"type":["string","null"]},"messaging_tester_number":{"type":["string","null"]},"version":{"type":"integer","description":"Required for target or tester changes; use lock_version from the environment."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Update a Verify environment and its selected private network connection"},"put":{"operationId":"put_api_v1_organizations_organization_id_verify_environments_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_organizations_organization_id_verify_environments_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/environments/{verify_environment_id}/discovery_runs":{"post":{"operationId":"api_v1_verify_environment_discovery_runs","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"verify_environment_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Existing discovery run","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyDiscoveryRun"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Discovery admitted; exploration can change application data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyDiscoveryRun"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"account_id":{"type":"string","nullable":true,"description":"Omit for anonymous exploration"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Run a short anonymous smoke pass over a saved environment, with no goal or run page. For goal-driven discovery with testers, start an exploration instead"}},"/api/v1/organizations/{organization_id}/verify/environments/{verify_environment_id}/discovery_runs/{id}":{"get":{"operationId":"api_v1_verify_environment_discovery_run","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"verify_environment_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Discovery status and saved report","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyDiscoveryRun"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/environments/{verify_environment_id}/discovery_runs/{id}/stop":{"post":{"operationId":"stop_api_v1_verify_environment_discovery_run","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"verify_environment_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Discovery stopped; sandbox cleanup follows runner cancellation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyDiscoveryRun"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/environments/{verify_environment_id}/first_run":{"put":{"operationId":"api_v1_verify_environment_first_run","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"verify_environment_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The saved choice and, once started, the discovery to open","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyFirstRun"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"account_id":{"type":"string","nullable":true,"description":"Test account the discovery signs in with; null tests public pages only."},"no_sign_in":{"type":"boolean","description":"The app has no sign-in. With no account it gets the workspace's included Deep Scan of public pages. Ignored with an account; omitted keeps the saved choice."},"finish":{"type":"boolean","description":"Setup is finished. Rails starts the discovery now if billing allows, otherwise when billing is confirmed. Repeating it retries a refused start."},"finish_if_waiting":{"type":"boolean","description":"Finish setup only when the workspace's included Deep Scan waits for the chosen account's sign-in check (`starts_after_sign_in_check`); otherwise only save the choice, since finishing would start a run at once."},"keep_chosen":{"type":"boolean","description":"Save the account only while no test access is chosen, for an account adopted automatically; a choice already saved stays and is returned unchanged."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Save the setup wizard's test access choice; when setup is finished, start the first discovery once billing allows"},"delete":{"operationId":"delete_api_v1_organizations_organization_id_verify_environments_verify_environment_id_first_run","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"verify_environment_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"The choice is cleared, or was already settled"}},"security":[{"bearerAuth":[]}],"summary":"Clear the setup wizard's test access choice until its discovery has started; a started first run is kept"}},"/api/v1/organizations/{organization_id}/verify/environments/{verify_environment_id}/first_run/start":{"post":{"operationId":"api_v1_verify_environment_first_run_start","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"verify_environment_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The included discovery to open","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["discovery_id"],"properties":{"discovery_id":{"type":"string"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"The free scan did not start; the app stays saved and the rest of setup can continue","content":{"application/json":{"schema":{"type":"object","required":["error","code"],"properties":{"error":{"type":"string","description":"The refusal, written for the person"},"code":{"type":"string","enum":["payment_required","included_discovery_unavailable","included_discovery_used","website_required","test_account_required","runner_unavailable","scan_unavailable"]}}}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Start the workspace's free first discovery of this app's public pages, from the URL-first setup screen","description":"Starts only the included discovery (10 minutes, public pages, no card); it never starts a metered run. Repeating it returns the same discovery. A refusal is a 422 whose message is written for the person and whose code says why."}},"/api/v1/organizations/{organization_id}/verify/environments/{verify_environment_id}/first_run/test_user":{"post":{"operationId":"api_v1_verify_environment_first_run_test_user","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"verify_environment_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The app page with the saved choice, waiting for the sign-up check","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyEnvironmentDetail"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"No test user can be created for this app now","content":{"application/json":{"schema":{"type":"object","required":["error","code"],"properties":{"error":{"type":"string","description":"The refusal, written for the person"},"code":{"type":"string"}}}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Have Verify's agent create a test user on the app for the included Deep Scan","description":"While `agent_sign_up_available`: Rails makes a test account on a Composal address with a generated password, starts a sign-up check in which the agent signs up, verifies the address from its inbox and signs in, and chooses the account for the first run, so the included Deep Scan starts once the check passes. Repeating it while the check runs returns the same choice and check; after a check whose browser failed it starts another. A refusal is a 422 whose message is written for the person."}},"/api/v1/organizations/{organization_id}/verify/environments/{verify_environment_id}/revisions":{"post":{"operationId":"api_v1_verify_environment_revisions","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"verify_environment_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Blueprint dry-run or idempotent replay","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"oneOf":[{"$ref":"#/components/schemas/VerifyBlueprintValidation"},{"$ref":"#/components/schemas/VerifyEnvironmentRevision"}]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Immutable environment revision imported","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyEnvironmentRevision"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyEnvironmentRevisionImportInput"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/environments/{verify_environment_id}/revisions/{id}":{"post":{"operationId":"api_v1_verify_environment_revision","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"verify_environment_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Existing destroy operation returned for an idempotent replay","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyEnvironmentRevision"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Teardown accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyEnvironmentRevision"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"get":{"operationId":"get_api_v1_organizations_organization_id_verify_environments_verify_environment_id_revisions_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"verify_environment_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/environments/{verify_environment_id}/revisions/{id}/provision":{"post":{"operationId":"provision_api_v1_verify_environment_revision","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"verify_environment_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Existing provision operation returned for an idempotent replay","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyEnvironmentRevision"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Provision operation accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyEnvironmentRevision"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/environments/{verify_environment_id}/revisions/{id}/revoke":{"post":{"operationId":"revoke_api_v1_verify_environment_revision","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"verify_environment_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Existing revoke operation returned for an idempotent replay","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyEnvironmentRevision"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Revocation accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyEnvironmentRevision"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/environments/{verify_environment_id}/revisions/{id}/validate":{"post":{"operationId":"validate_api_v1_verify_environment_revision","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"verify_environment_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Environment revision validated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyEnvironmentRevision"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/environments/{verify_environment_id}/test_accounts":{"get":{"operationId":"api_v1_verify_environment_test_accounts","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"verify_environment_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Login personas and write-only credential configuration status","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyTestAccountCollection"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/environments/{verify_environment_id}/test_accounts/{persona}":{"patch":{"operationId":"api_v1_verify_environment_test_account","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"verify_environment_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"persona","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Test account credentials configured without returning values","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyTestAccount"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyTestAccountUpdateInput"}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_verify_environments_verify_environment_id_test_accounts_persona_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"verify_environment_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"persona","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/evidence":{"get":{"operationId":"api_v1_evidence_index","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/evidence/archive":{"get":{"operationId":"archive_api_v1_evidence_index","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"scenario_run_id","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"A zip of the scenario run's evidence in capture order","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"application/zip":{"schema":{"type":"string","format":"binary"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"The scenario run is not visible, or has no readable evidence"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Download every readable evidence item of one scenario run as a zip"}},"/api/v1/organizations/{organization_id}/verify/evidence/{id}":{"get":{"operationId":"api_v1_evidence","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/evidence/{id}/download":{"get":{"operationId":"download_api_v1_evidence","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"inline","in":"query","schema":{"type":"boolean"}},{"name":"Range","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Evidence bytes with the recorded content type","content":{"*/*":{"schema":{"type":"string","format":"binary"}}}},"206":{"description":"Requested byte range","content":{"*/*":{"schema":{"type":"string","format":"binary"}}},"headers":{"Content-Range":{"schema":{"type":"string"}}}},"302":{"description":"Authorized inline recording at an exact object version; the signed URL expires within five minutes and never outlives retention","headers":{"Location":{"schema":{"type":"string","format":"uri"}}}},"401":{"description":"Authentication required"},"403":{"description":"Organization access denied"},"404":{"description":"Evidence is not visible to this organization"},"422":{"description":"Evidence is expired or unavailable"},"416":{"description":"Unsatisfiable byte range"}},"security":[{"bearerAuth":[]}],"summary":"Download protected evidence or play an authorized recording","description":"Inline versioned recordings may redirect to a short-lived signed CDN URL. Follow redirects and preserve the Range header. Ordinary downloads retain checksum-verified bytes."}},"/api/v1/organizations/{organization_id}/verify/explorations":{"get":{"operationId":"api_v1_explorations","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"launch","in":"query","required":false,"description":"Also return launch_options, for admins, so a new run can start from this page","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Running discovery teams and one page of all discovery runs","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExplorationList"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List the organization's discovery runs, newest first, with running teams kept separately"},"post":{"operationId":"post_api_v1_organizations_organization_id_verify_explorations","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Exploratory run with agent reports and protected recordings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExploration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"402":{"description":"The organization's billing limit refuses this usage; see `error.upgrade_path`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingLimitExceededError"}}}},"202":{"description":"Exploratory run with agent reports and protected recordings","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyExploration"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"environment_id":{"type":"string"},"account_id":{"type":"string","nullable":true},"persona_id":{"type":"string","nullable":true,"description":"Project persona whose role and observed access this discovery maps."},"goal":{"type":"string","minLength":1,"maxLength":4000},"max_seconds":{"type":"integer","minimum":60,"maximum":43200,"default":14400},"max_testers":{"type":"integer","minimum":1,"maximum":200,"default":40},"concurrency":{"type":"integer","minimum":1,"maximum":96,"default":20},"idempotency_key":{"type":"string"}},"required":["environment_id","goal"]}}}},"security":[{"bearerAuth":[]}],"summary":"Start goal-driven discovery with an exploratory browser team; the response's web_url is the run page to share"}},"/api/v1/organizations/{organization_id}/verify/explorations/{id}":{"get":{"operationId":"api_v1_exploration","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"evidence","in":"query","schema":{"type":"string","enum":["selected"]}},{"name":"agent_id","in":"query","schema":{"type":"string"}},{"name":"finding_id","in":"query","description":"Finding report ID whose tester's evidence files to include with evidence=selected, taking precedence over agent_id.","schema":{"type":"string"}}],"responses":{"200":{"description":"Exploratory run with agent reports and protected recordings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExploration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read every explorer charter, checkpoint, finding and recording"}},"/api/v1/organizations/{organization_id}/verify/explorations/{id}/create_project":{"post":{"operationId":"create_project_api_v1_exploration","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Project Scenario saved without launching a run","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["project_id","scenario_id","web_url"],"properties":{"project_id":{"type":"string"},"scenario_id":{"type":"string"},"web_url":{"type":"string","description":"The project's Scenario page in the Composal web app"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["agent_id","check_index"],"properties":{"agent_id":{"type":"string"},"check_index":{"type":"integer","minimum":0}}}}}},"security":[{"bearerAuth":[]}],"summary":"Save a reported discovery check as a project Scenario"}},"/api/v1/organizations/{organization_id}/verify/explorations/{id}/messages":{"post":{"operationId":"messages_api_v1_exploration","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Previously saved message","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExploration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Message saved and orchestration scheduled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyExploration"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["text"],"properties":{"text":{"type":"string","minLength":1,"maxLength":2000}}}}}},"security":[{"bearerAuth":[]}],"summary":"Steer an active Discovery or Deep Scan, or continue a finished Discovery"}},"/api/v1/organizations/{organization_id}/verify/explorations/{id}/progress":{"get":{"operationId":"progress_api_v1_exploration","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Exploration progress","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExplorationProgress"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read exploration progress without reports, browser activity or evidence"}},"/api/v1/organizations/{organization_id}/verify/explorations/{id}/report":{"post":{"operationId":"report_api_v1_exploration","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Existing report generation","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExploration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Report queued; poll the exploration for the completed document","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyExploration"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"source_ids":{"type":"array","maxItems":10,"items":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Write a fresh report from all testers in selected completed explorations"},"get":{"operationId":"report_page_api_v1_exploration","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Compact report page; recording timelines load separately","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExplorationReportPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read the report document and cited file metadata without tester activity or replay archives"}},"/api/v1/organizations/{organization_id}/verify/explorations/{id}/report/document":{"get":{"operationId":"report_document_api_v1_exploration","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deep Scan document; Discovery runs return not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyDeepScanDocumentPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read the detailed Deep Scan document, complete test appendix and protected evidence library"}},"/api/v1/organizations/{organization_id}/verify/explorations/{id}/report/refresh":{"post":{"operationId":"refresh_report_api_v1_exploration","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Compact report page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExplorationReportPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Report generation queued; previous published report remains readable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyExplorationReportPage"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"source_ids":{"type":"array","maxItems":10,"items":{"type":"string"}}}}}}},"security":[{"bearerAuth":[]}],"summary":"Request report regeneration and return its compact page state"}},"/api/v1/organizations/{organization_id}/verify/explorations/{id}/report/replay/{agent_id}":{"get":{"operationId":"report_replay_api_v1_exploration","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"generated_at","in":"query","required":true,"description":"Publication timestamp shown in the report; stale publications are rejected.","schema":{"type":"string"}}],"responses":{"200":{"description":"Recording groups and step timing for one cited tester","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExplorationReportReplay"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read one cited tester's recording timelines independently of the report document"}},"/api/v1/organizations/{organization_id}/verify/explorations/{id}/report/scenarios":{"post":{"operationId":"report_scenarios_api_v1_exploration","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Compact report page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExplorationReportPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Scenario authoring queued; poll the compact report page","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyExplorationReportPage"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Request scenario authoring and return compact report page state"}},"/api/v1/organizations/{organization_id}/verify/explorations/{id}/retry_startup":{"post":{"operationId":"retry_startup_api_v1_exploration","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Exploration after a replayed startup recovery","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExploration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"One replacement coordinator scheduled, or the same retry replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyExploration"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Retry failed browser startup within the exploration's original deadline and budget"}},"/api/v1/organizations/{organization_id}/verify/explorations/{id}/scenarios":{"post":{"operationId":"scenarios_api_v1_exploration","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Scenarios already saved","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExploration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Scenario authoring queued or already saved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyExploration"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Retry authoring repeatable scenarios from a finished project discovery"}},"/api/v1/organizations/{organization_id}/verify/explorations/{id}/sign_in_browser":{"get":{"operationId":"sign_in_browser_api_v1_exploration","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Latest attempt with live media and retained recording","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifySignInBrowser"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Latest sign-in browser for the setup preview"}},"/api/v1/organizations/{organization_id}/verify/explorations/{id}/stop":{"post":{"operationId":"stop_api_v1_exploration","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Exploratory run with agent reports and protected recordings","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyExploration"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Stop the whole exploratory team and retain saved observations"}},"/api/v1/organizations/{organization_id}/verify/findings":{"get":{"operationId":"api_v1_findings","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Findings observed in the organization, newest first","content":{"application/json":{"schema":{"type":"array","additionalProperties":true,"items":{"$ref":"#/components/schemas/VerifyFindingRecord"}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/findings/{id}":{"get":{"operationId":"api_v1_finding","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"repository_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"repository_id","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Combined Verify finding detail snapshot","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyFindingDetail"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_organizations_organization_id_verify_findings_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"repository_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"repository_id","in":"query","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Finding status updated","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyFindingRecord"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["status","status"],"properties":{"status":{"type":"string","enum":["open","resolved","ignored"],"$ref":"#/components/schemas/SettableFindingStatus"},"reason":{"type":"string","maxLength":1000,"description":"Why the finding was resolved or ignored, such as \"Expected for trial accounts\". Dreaming learns from it."},"deferred_until":{"type":"string","format":"date-time","description":"Required future time when status is deferred"}}}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_organizations_organization_id_verify_findings_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/github_connections":{"get":{"operationId":"api_v1_github_connections","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"in":"query","name":"github_app_installation_id","required":false,"schema":{"type":"string"},"description":"List this account's repositories."},{"in":"query","name":"project_id","required":false,"schema":{"type":"string"},"description":"Mark only this project's repositories as connected."}],"responses":{"200":{"description":"GitHub verification connection","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyGithubConnectionOptions"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List GitHub accounts and repositories to connect for PR testing"},"post":{"operationId":"post_api_v1_organizations_organization_id_verify_github_connections","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"GitHub verification connection","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyGithubConnection"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyGithubConnectionInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Connect a GitHub repository for PR testing"}},"/api/v1/organizations/{organization_id}/verify/knowledge":{"get":{"operationId":"api_v1_knowledge_index","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"q","in":"query","schema":{"type":"string","maxLength":500}},{"name":"project_id","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Project selection and most recent 50 matching knowledge documents","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyKnowledgePage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Browse maintained project knowledge"},"post":{"operationId":"post_api_v1_organizations_organization_id_verify_knowledge","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Document saved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyKnowledgeDocument"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["project_id","title","markdown"],"properties":{"project_id":{"type":"string"},"title":{"type":"string","maxLength":160},"markdown":{"type":"string","maxLength":200000}}}}}},"security":[{"bearerAuth":[]}],"summary":"Add an attributed product knowledge document"}},"/api/v1/organizations/{organization_id}/verify/knowledge/{id}":{"get":{"operationId":"api_v1_knowledge","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Markdown document and viewer permissions","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyKnowledgeDocumentPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read a project knowledge document"},"patch":{"operationId":"patch_api_v1_organizations_organization_id_verify_knowledge_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Markdown document saved","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyKnowledgeDocument"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"409":{"description":"Document changed since editing began"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["title","markdown","expected_digest"],"properties":{"title":{"type":"string","maxLength":160},"markdown":{"type":"string","maxLength":200000},"expected_digest":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Edit a project knowledge Markdown document"},"put":{"operationId":"put_api_v1_organizations_organization_id_verify_knowledge_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_organizations_organization_id_verify_knowledge_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Document archived"}},"security":[{"bearerAuth":[]}],"summary":"Archive knowledge so future runners no longer use it"}},"/api/v1/organizations/{organization_id}/verify/memories":{"get":{"operationId":"api_v1_memories","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"include_environments","in":"query","description":"Also browse memories from this project's environments","schema":{"type":"boolean"}},{"name":"q","in":"query","schema":{"type":"string","maxLength":500}},{"name":"tag","in":"query","schema":{"type":"string","maxLength":40}},{"name":"environment_id","in":"query","description":"Include exact environment and explicitly scoped project notes","schema":{"type":"string"}},{"name":"project_id","in":"query","description":"Include only notes explicitly scoped to this project","schema":{"type":"string"}}],"responses":{"200":{"description":"Most recent or 50 best matching memories, with indexing health","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyMemoryPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Browse or search verification memories in an environment or project scope"},"post":{"operationId":"post_api_v1_organizations_organization_id_verify_memories","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Organization administrator required"},"404":{"description":"Scope does not belong to this organization"},"422":{"description":"Invalid scope or note"},"502":{"description":"Bad gateway"},"201":{"description":"Scoped operator note saved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyMemory"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyMemoryNoteInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Save an attributed operator note in exactly one environment or project scope","description":"Organization administrators can save secret-free facts. Notes are advisory and do not alter test authority or account grants."}},"/api/v1/organizations/{organization_id}/verify/memories/{id}":{"get":{"operationId":"api_v1_memory","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","schema":{"type":"string"}},{"name":"environment_id","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Current lesson and latest ten revisions","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["memory","history"],"properties":{"memory":{"$ref":"#/components/schemas/VerifyMemory"},"history":{"type":"array","items":{"$ref":"#/components/schemas/VerifyLearningHistory"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Memory is outside the selected active scope"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read a scoped memory and its learning history"},"delete":{"operationId":"delete_api_v1_organizations_organization_id_verify_memories_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Memory archived"}},"security":[{"bearerAuth":[]}],"summary":"Archive a memory so future verifier agents no longer retrieve it"}},"/api/v1/organizations/{organization_id}/verify/merge_requests":{"post":{"operationId":"api_v1_merge_requests","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"PR verification response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"allOf":[{"$ref":"#/components/schemas/VerifyPullRequest"},{"type":"object","required":["requested_run_id"],"properties":{"requested_run_id":{"type":"string","nullable":true}}}]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"PR verification response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/VerifyPullRequest"},{"type":"object","required":["requested_run_id"],"properties":{"requested_run_id":{"type":"string","nullable":true}}}]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["number","idempotency_key"],"properties":{"repository_id":{"type":"string"},"number":{"type":"integer"},"idempotency_key":{"type":"string"},"head_sha":{"type":"string","description":"If supplied, refuse to create a run unless this is the current PR head."},"project_id":{"type":"string","description":"Composal project slug or public ID for PR preview environments. Defaults to the configured template project. Cannot reassign a tracked PR."},"branch":{"type":"string","description":"Exact deployed source branch; refused if it differs from the canonical request branch."}},"anyOf":[{"required":["project_id"]},{"required":["repository_id"]}]}}}},"security":[{"bearerAuth":[]}],"summary":"Configure or request MR verification"}},"/api/v1/organizations/{organization_id}/verify/merge_requests/preview":{"post":{"operationId":"preview_api_v1_merge_requests","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"PR verification response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyPullRequestRun"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"PR verification response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyPullRequestRun"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["number","head_sha"],"properties":{"repository_id":{"type":"string"},"number":{"type":"integer"},"head_sha":{"type":"string"},"environment":{"type":"string"},"preview_url":{"type":"string","format":"uri","description":"Deployed URL for this exact PR head. Requires an external Verify template. Mutually exclusive with environment."},"project_id":{"type":"string","description":"Composal project slug or public ID for PR preview environments. Defaults to the configured template project. Cannot reassign a tracked PR."},"branch":{"type":"string","description":"Exact deployed source branch; refused if it differs from the canonical request branch."},"no_preview":{"type":"boolean","enum":[true],"description":"CI built no preview because this commit changes nothing a preview serves. The commit's waiting run is skipped instead of timing out as blocked."},"imessage_number":{"type":"string","description":"International destination of this exact deployed commit. May accompany preview_url."}},"oneOf":[{"required":["environment"]},{"anyOf":[{"required":["preview_url"]},{"required":["imessage_number"]}]},{"required":["no_preview"]}],"anyOf":[{"required":["project_id"]},{"required":["repository_id"]}]}}}},"security":[{"bearerAuth":[]}],"summary":"Configure or request MR verification"}},"/api/v1/organizations/{organization_id}/verify/merge_requests/{id}":{"get":{"operationId":"api_v1_merge_request","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"PR verification response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyPullRequestPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Inspect MR verification"}},"/api/v1/organizations/{organization_id}/verify/merge_requests/{id}/rerun":{"post":{"operationId":"rerun_api_v1_merge_request","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"PR verification response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"allOf":[{"$ref":"#/components/schemas/VerifyPullRequest"},{"type":"object","required":["requested_run_id"],"properties":{"requested_run_id":{"type":"string","nullable":true}}}]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"PR verification response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/VerifyPullRequest"},{"type":"object","required":["requested_run_id"],"properties":{"requested_run_id":{"type":"string","nullable":true}}}]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["idempotency_key"],"properties":{"idempotency_key":{"type":"string"},"head_sha":{"type":"string","description":"If supplied, refuse to create a run unless this is the current PR head."},"scenario_ids":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Manually run these available project scenarios instead of automatic relevance selection."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Configure or request MR verification"}},"/api/v1/organizations/{organization_id}/verify/network_connections":{"post":{"operationId":"api_v1_network_connections","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Private network connection saved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyNetworkConnection"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"allOf":[{"$ref":"#/components/schemas/VerifyNetworkConnectionInput"},{"required":["name"]}]}}}},"security":[{"bearerAuth":[]}],"summary":"Create a private network connection for Verify browser sandboxes"}},"/api/v1/organizations/{organization_id}/verify/network_connections/{id}":{"patch":{"operationId":"api_v1_network_connection","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Private network connection metadata without its secret","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyNetworkConnection"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyNetworkConnectionInput"}}}},"security":[{"bearerAuth":[]}],"summary":"Update or disable a private network connection; omitted credentials are preserved"},"put":{"operationId":"put_api_v1_organizations_organization_id_verify_network_connections_id_","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/page":{"get":{"operationId":"api_v1_page","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1}},{"name":"section","in":"query","schema":{"type":"string","enum":["runs","environments"]}},{"name":"verify_environment_id","in":"query","schema":{"type":"string"}},{"name":"project_id","in":"query","description":"Limits the page to one project, by slug or public ID.","schema":{"type":"string"}},{"name":"query","in":"query","schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","schema":{"type":"string","enum":["all","active","passed","failed","cancelled","timed_out","blocked","skipped","cleanup_blocked"]}}],"responses":{"200":{"description":"Combined Verify dashboard snapshot","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/projects/{project_id}/code_maps":{"get":{"operationId":"get_api_v1_organizations_organization_id_verify_projects_project_id_code_maps","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"repository_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"ref","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Project-linked repository choices and selected commit map","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization","project","repositories","selected_repository_id","source","map"],"properties":{"organization":{"type":"object","required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"}}},"project":{"type":"object","required":["id","slug","name"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}}},"repositories":{"type":"array","items":{"type":"object","required":["id","slug","name"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}}}},"selected_repository_id":{"type":"string","nullable":true},"source":{"allOf":[{"$ref":"#/components/schemas/RepositorySourceStatus"}],"nullable":true},"map":{"allOf":[{"$ref":"#/components/schemas/RepositoryCodeMap"}],"nullable":true}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read repository maps in project Knowledge"},"post":{"operationId":"post_api_v1_organizations_organization_id_verify_projects_project_id_code_maps","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Existing or newly started scan","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RepositoryCodeMap"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["repository_id"],"properties":{"repository_id":{"type":"string"},"ref":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Scan a project-linked repository commit (organization admins only)"}},"/api/v1/organizations/{organization_id}/verify/projects/{project_id}/code_maps/session":{"post":{"operationId":"post_api_v1_organizations_organization_id_verify_projects_project_id_code_maps_session","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Signed URL scoped to the authorized project repository and browser origin","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["url","expires_at"],"properties":{"url":{"type":"string"},"expires_at":{"type":"string"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["repository_id"],"properties":{"repository_id":{"type":"string"},"ref":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}],"summary":"View a completed project repository map through a short-lived session"}},"/api/v1/organizations/{organization_id}/verify/pull_request_settings":{"get":{"operationId":"api_v1_pull_request_settings","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"provider","in":"query","required":false,"description":"Limit repositories to one source provider","schema":{"type":"string","enum":["github","gitlab"]}},{"in":"query","name":"project_id","schema":{"type":"string"},"description":"Scope configuration options to this Composal project."},{"in":"query","name":"repository_id","schema":{"type":"string"},"description":"Select the configured repository in a multi-repository project."}],"responses":{"200":{"description":"PR verification response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyPullRequestOptions"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Read PR testing setup and its choices"},"post":{"operationId":"post_api_v1_organizations_organization_id_verify_pull_request_settings","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"PR verification response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"allOf":[{"$ref":"#/components/schemas/VerifyPullRequestSetting"},{"$ref":"#/components/schemas/VerifyPullRequestSetup"}]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"anyOf":[{"$ref":"#/components/schemas/VerifyPullRequestSetupInput"},{"$ref":"#/components/schemas/VerifyPullRequestSettingInput"}]}}}},"security":[{"bearerAuth":[]}],"summary":"Save PR testing setup","description":"Saves the setup answers. Omitted answers keep their saved values; on first setup, previews is required and the repository and environment default to the only choice. Errors are keyed by answer name and list the choices. New setups stay off until enabled is true. The stored-setting fields (target_mode, verify_environment_id, max_seconds and so on) that released CLIs send are still accepted, and the response carries both shapes. Each project can configure multiple repositories independently while sharing scenarios, personas and credentials. Supply a repository when several are configured; saving another repository creates a new binding without changing existing history. Legacy preview mode with comment rules is treated as comments mode."}},"/api/v1/organizations/{organization_id}/verify/pull_request_settings/add_repositories":{"post":{"operationId":"add_repositories_api_v1_pull_request_settings","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Repositories associated with this project","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["repositories"],"properties":{"repositories":{"type":"array","items":{"$ref":"#/components/schemas/VerifyProjectPrRepository"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["project_id","repositories"],"properties":{"project_id":{"type":"string"},"repositories":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"string"}},"replace":{"type":"boolean","description":"Make these the project's only repositories. Refused when another of its repositories has PR testing set up."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Add repositories to a shared Verify project","description":"Adds one or more connected organization repositories without changing existing settings, scenarios, access or verification history. Configure a preview source separately for each added repository. Repeated additions are idempotent."}},"/api/v1/organizations/{organization_id}/verify/pull_request_settings/detect_comments":{"post":{"operationId":"detect_comments_api_v1_pull_request_settings","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"What was found on recent requests","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyPreviewDetection"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["project_id"],"properties":{"project_id":{"type":"string","description":"Project slug or ID."},"repository_id":{"type":"string","description":"Repository slug, ID or owner/name. Defaults to the project's configured or only repository."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Compatibility alias for preview detection"}},"/api/v1/organizations/{organization_id}/verify/pull_request_settings/detect_preview":{"post":{"operationId":"detect_preview_api_v1_pull_request_settings","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"What was found on recent requests","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyPreviewDetection"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["project_id"],"properties":{"project_id":{"type":"string","description":"Project slug or ID."},"repository_id":{"type":"string","description":"Repository slug, ID or owner/name. Defaults to the project's configured or only repository."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Find how a repository's recent PRs or MRs get previews"}},"/api/v1/organizations/{organization_id}/verify/pull_requests":{"post":{"operationId":"api_v1_pull_requests","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"PR verification response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"oneOf":[{"allOf":[{"$ref":"#/components/schemas/VerifyPullRequest"},{"type":"object","required":["requested_run_id"],"properties":{"requested_run_id":{"type":"string","nullable":true}}}]},{"$ref":"#/components/schemas/VerifyBranchPreview"}]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"PR verification response","content":{"application/json":{"schema":{"oneOf":[{"allOf":[{"$ref":"#/components/schemas/VerifyPullRequest"},{"type":"object","required":["requested_run_id"],"properties":{"requested_run_id":{"type":"string","nullable":true}}}]},{"$ref":"#/components/schemas/VerifyBranchPreview"}]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["idempotency_key"],"properties":{"repository_id":{"type":"string"},"number":{"type":"integer"},"idempotency_key":{"type":"string"},"head_sha":{"type":"string","description":"If supplied, refuse to create a run unless this is the current PR head."},"project_id":{"type":"string","description":"Composal project slug or public ID for PR preview environments. Defaults to the configured template project. Cannot reassign a tracked PR."},"branch":{"type":"string","description":"Exact deployed source branch; refused if it differs from the canonical request branch."},"preview_url":{"type":"string","format":"uri","description":"Required for a branch preview when no open PR exists."},"cleanup_only":{"type":"boolean","description":"Refresh canonical PR state and cancel closed-preview work without preparing a new verification request, including when its PR record is missing."},"imessage_number":{"type":"string","description":"International destination of this exact deployed commit. May accompany preview_url."}},"anyOf":[{"required":["number"]},{"required":["branch"]}],"allOf":[{"anyOf":[{"required":["project_id"]},{"required":["repository_id"]}]}]}}}},"security":[{"bearerAuth":[]}],"summary":"Configure or request PR verification"}},"/api/v1/organizations/{organization_id}/verify/pull_requests/lookup":{"get":{"operationId":"lookup_api_v1_pull_requests","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer"}},{"in":"query","name":"project_id","required":true,"schema":{"type":"string"}},{"in":"query","name":"source_repository","required":true,"schema":{"type":"string"}},{"in":"query","name":"number","required":true,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"PR verification response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyPullRequestPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Inspect project PR verification by source repository and request number"}},"/api/v1/organizations/{organization_id}/verify/pull_requests/preview":{"post":{"operationId":"preview_api_v1_pull_requests","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"PR verification response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyPullRequestRun"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"PR verification response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyPullRequestRun"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["number","head_sha"],"properties":{"repository_id":{"type":"string"},"number":{"type":"integer"},"head_sha":{"type":"string"},"environment":{"type":"string"},"preview_url":{"type":"string","format":"uri","description":"Deployed URL for this exact PR head. Requires an external Verify template. Mutually exclusive with environment."},"project_id":{"type":"string","description":"Composal project slug or public ID for PR preview environments. Defaults to the configured template project. Cannot reassign a tracked PR."},"branch":{"type":"string","description":"Exact deployed source branch; refused if it differs from the canonical request branch."},"no_preview":{"type":"boolean","enum":[true],"description":"CI built no preview because this commit changes nothing a preview serves. The commit's waiting run is skipped instead of timing out as blocked."},"imessage_number":{"type":"string","description":"International destination of this exact deployed commit. May accompany preview_url."}},"oneOf":[{"required":["environment"]},{"anyOf":[{"required":["preview_url"]},{"required":["imessage_number"]}]},{"required":["no_preview"]}],"anyOf":[{"required":["project_id"]},{"required":["repository_id"]}]}}}},"security":[{"bearerAuth":[]}],"summary":"Configure or request PR verification"}},"/api/v1/organizations/{organization_id}/verify/pull_requests/{id}":{"get":{"operationId":"api_v1_pull_request","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"PR verification response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyPullRequestPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Inspect PR verification"}},"/api/v1/organizations/{organization_id}/verify/pull_requests/{id}/demo_share":{"post":{"operationId":"demo_share_api_v1_pull_request","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"The current attempt has no recorded demo"},"502":{"description":"Bad gateway"},"201":{"description":"Demo share link","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["share_url"],"properties":{"share_url":{"type":"string","description":"Anyone holding this URL can watch the demo."}}}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Issue a new share link for the PR's current demo","description":"Project admins only. Replaces any earlier link for this demo."},"delete":{"operationId":"delete_api_v1_organizations_organization_id_verify_pull_requests_id_demo_share","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Revoked"}},"security":[{"bearerAuth":[]}],"summary":"Revoke every demo share link the PR has published","description":"Project admins only. Links for earlier commits' demos end too; each then returns 404."}},"/api/v1/organizations/{organization_id}/verify/pull_requests/{id}/rerun":{"post":{"operationId":"rerun_api_v1_pull_request","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"PR verification response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"allOf":[{"$ref":"#/components/schemas/VerifyPullRequest"},{"type":"object","required":["requested_run_id"],"properties":{"requested_run_id":{"type":"string","nullable":true}}}]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"PR verification response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/VerifyPullRequest"},{"type":"object","required":["requested_run_id"],"properties":{"requested_run_id":{"type":"string","nullable":true}}}]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["idempotency_key"],"properties":{"idempotency_key":{"type":"string"},"head_sha":{"type":"string","description":"If supplied, refuse to create a run unless this is the current PR head."},"scenario_ids":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Manually run these available project scenarios instead of automatic relevance selection."}}}}}},"security":[{"bearerAuth":[]}],"summary":"Configure or request PR verification"}},"/api/v1/organizations/{organization_id}/verify/run_search":{"get":{"operationId":"api_v1_run_search","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"query","in":"query","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"The newest runs whose scenario name or pull request matches the search","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyRunSearch"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/run_updates":{"get":{"operationId":"api_v1_run_updates","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1}},{"name":"verify_environment_id","in":"query","schema":{"type":"string"}},{"name":"query","in":"query","schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","schema":{"type":"string","enum":["all","active","passed","failed","cancelled","timed_out","blocked","skipped","cleanup_blocked"]}}],"responses":{"200":{"description":"Compact Verify run updates","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyRunUpdates"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/verify/site_preview":{"get":{"operationId":"api_v1_site_preview","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"url","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"What the site calls itself, and its icon","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["url","title","icon_data_url"],"properties":{"url":{"type":"string","description":"The address as it will be saved"},"title":{"type":"string","nullable":true},"icon_data_url":{"type":"string","nullable":true,"description":"The site's icon as a data: URL, up to 256 KB"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"The address is not a website","content":{"application/json":{"schema":{"type":"object","required":["error","code"],"properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"Preview the name and icon of a site before it is saved and scanned","description":"Fetches the site's homepage from a public address only and returns its title and icon. Results are cached for a few hours per address. A missing title or icon is null."}},"/api/v1/organizations/{organization_id}/workspace_spaces":{"get":{"operationId":"api_v1_organization_workspace_spaces","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Workspace spaces visible to the current member","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["spaces"],"properties":{"spaces":{"type":"array","items":{"type":"object","required":["id","organization_id","repository_id","repository_slug","slug","name","description","icon_name","status","import_status","hidden","position","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"repository_id":{"type":"string"},"repository_slug":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"icon_name":{"type":"string","enum":["book-open","boxes","briefcase-business","code-xml","file-text","folder","folder-code","globe-2","lightbulb","panel-top","rocket","server","shield-check","sparkles","terminal"]},"status":{"type":"string","enum":["active","archived"]},"import_status":{"type":"string","nullable":true,"enum":["queued","running","succeeded","failed","canceled"]},"hidden":{"type":"boolean"},"position":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_organizations_organization_id_workspace_spaces","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Created workspace space","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["space"],"properties":{"space":{"type":"object","required":["id","organization_id","repository_id","repository_slug","slug","name","description","icon_name","status","import_status","hidden","position","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"repository_id":{"type":"string"},"repository_slug":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"icon_name":{"type":"string","enum":["book-open","boxes","briefcase-business","code-xml","file-text","folder","folder-code","globe-2","lightbulb","panel-top","rocket","server","shield-check","sparkles","terminal"]},"status":{"type":"string","enum":["active","archived"]},"import_status":{"type":"string","nullable":true,"enum":["queued","running","succeeded","failed","canceled"]},"hidden":{"type":"boolean"},"position":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Created workspace space","content":{"application/json":{"schema":{"type":"object","required":["space"],"properties":{"space":{"type":"object","required":["id","organization_id","repository_id","repository_slug","slug","name","description","icon_name","status","import_status","hidden","position","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"repository_id":{"type":"string"},"repository_slug":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"icon_name":{"type":"string","enum":["book-open","boxes","briefcase-business","code-xml","file-text","folder","folder-code","globe-2","lightbulb","panel-top","rocket","server","shield-check","sparkles","terminal"]},"status":{"type":"string","enum":["active","archived"]},"import_status":{"type":"string","nullable":true,"enum":["queued","running","succeeded","failed","canceled"]},"hidden":{"type":"boolean"},"position":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["slug","name","icon_name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"default_branch":{"type":"string"},"icon_name":{"type":"string","enum":["book-open","boxes","briefcase-business","code-xml","file-text","folder","folder-code","globe-2","lightbulb","panel-top","rocket","server","shield-check","sparkles","terminal"]}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/workspace_spaces/github_import":{"post":{"operationId":"github_import_api_v1_organization_workspace_spaces","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"410":{"description":"Retired workspace import; use GitHub onboarding batches."}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/organizations/{organization_id}/workspace_spaces/preferences":{"patch":{"operationId":"preferences_api_v1_organization_workspace_spaces","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated workspace space preferences","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["spaces"],"properties":{"spaces":{"type":"array","items":{"type":"object","required":["id","organization_id","repository_id","repository_slug","slug","name","description","icon_name","status","import_status","hidden","position","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"repository_id":{"type":"string"},"repository_slug":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"icon_name":{"type":"string","enum":["book-open","boxes","briefcase-business","code-xml","file-text","folder","folder-code","globe-2","lightbulb","panel-top","rocket","server","shield-check","sparkles","terminal"]},"status":{"type":"string","enum":["active","archived"]},"import_status":{"type":"string","nullable":true,"enum":["queued","running","succeeded","failed","canceled"]},"hidden":{"type":"boolean"},"position":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["preferences"],"properties":{"preferences":{"type":"array","items":{"type":"object","required":["space_public_id","hidden","position"],"properties":{"space_public_id":{"type":"string"},"hidden":{"type":"boolean"},"position":{"type":"integer","nullable":true}}}}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/workspace_spaces/{id}":{"get":{"operationId":"api_v1_organization_workspace_space","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Workspace space","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["space"],"properties":{"space":{"type":"object","required":["id","organization_id","repository_id","repository_slug","slug","name","description","icon_name","status","import_status","hidden","position","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"repository_id":{"type":"string"},"repository_slug":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"icon_name":{"type":"string","enum":["book-open","boxes","briefcase-business","code-xml","file-text","folder","folder-code","globe-2","lightbulb","panel-top","rocket","server","shield-check","sparkles","terminal"]},"status":{"type":"string","enum":["active","archived"]},"import_status":{"type":"string","nullable":true,"enum":["queued","running","succeeded","failed","canceled"]},"hidden":{"type":"boolean"},"position":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/organizations/{organization_id}/workspace_spaces/{id}/failed_import":{"delete":{"operationId":"failed_import_api_v1_organization_workspace_space","tags":["organizations"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"410":{"description":"Native failed-import cleanup is retired."}},"security":[{"bearerAuth":[]}],"deprecated":true}},"/api/v1/otel_ingest/authorize":{"post":{"operationId":"api_v1_otel_ingest_authorize","tags":["otel_ingest"],"parameters":[{"in":"header","name":"X-Vex-Organization","required":true,"description":"Organization slug that will own every telemetry resource in this request.","schema":{"type":"string"}}],"responses":{"200":{"description":"Short-lived organization identity for the managed OTLP gateway","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["organization_id","organization_public_id","organization_slug","user_id"],"properties":{"organization_id":{"type":"integer"},"organization_public_id":{"type":"string"},"organization_slug":{"type":"string"},"user_id":{"type":"string"}}}}},"headers":{"X-Vex-Organization-Id":{"description":"Public id of the authorized organization.","schema":{"type":"string"}},"X-Vex-Authorization-Expires-At":{"description":"Absolute Unix timestamp after which the gateway must authorize again.","schema":{"type":"string","pattern":"^[1-9][0-9]*$"}}}},"401":{"description":"Personal access token invalid or missing"},"403":{"description":"Forbidden"},"404":{"description":"Organization is not accessible to the token user"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"400":{"description":"Organization header missing"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"summary":"Authorize managed OpenTelemetry ingestion for one organization","description":"Internal data-plane exchange. Requires a Composal personal access token and current membership in the organization named by X-Vex-Organization. Session authentication is not accepted."}},"/api/v1/personal_access_tokens":{"get":{"operationId":"api_v1_personal_access_tokens","tags":["personal_access_tokens"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_personal_access_tokens","tags":["personal_access_tokens"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/personal_access_tokens/{id}":{"delete":{"operationId":"api_v1_personal_access_token","tags":["personal_access_tokens"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/proactive_agent_waitlist_entries":{"post":{"operationId":"api_v1_proactive_agent_waitlist_entries","tags":["proactive_agent_waitlist_entries"],"parameters":[],"responses":{"200":{"description":"The email was already on the waitlist; its current place.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProactiveAgentWaitlistStatus"}}}},"201":{"description":"Joined (or silently discarded as spam).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProactiveAgentWaitlistStatus"}}}},"400":{"description":"The email was missing from the request body."},"422":{"description":"A field failed validation."},"429":{"description":"Too many requests from this IP."}},"security":[],"summary":"Join the proactive-agents waitlist","description":"Unauthenticated and CSRF-exempt: composal.com/proactive-agents posts this straight from a browser. Rate limited per IP (5 per minute). One entry per mailbox: a returning email gets its existing place back with a 200, and an invite code only credits a new entry. `website` is a honeypot; when it is filled in the reply is an ordinary 201 and nothing is stored.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProactiveAgentWaitlistJoinRequest"}}}}}},"/api/v1/proactive_agent_waitlist_entries/{referral_code}":{"get":{"operationId":"api_v1_proactive_agent_waitlist_entry","tags":["proactive_agent_waitlist_entries"],"parameters":[{"name":"referral_code","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The entry's current place.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProactiveAgentWaitlistStatus"}}}},"404":{"description":"No entry has this referral code."},"429":{"description":"Too many requests from this IP."}},"security":[],"summary":"Current waitlist place for a referral code","description":"Unauthenticated. The referral code is already public in invite links, so the reply carries no email. Rate limited per IP (60 per minute)."}},"/api/v1/registry/namespace":{"get":{"operationId":"api_v1_registry_namespace","tags":["registry"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/registry/token":{"get|post":{"operationId":"api_v1_registry_token","tags":["registry"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/registry/v2/authorize":{"post":{"operationId":"api_v1_registry_v2_authorize","tags":["registry"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/registry/v2/token":{"get|post":{"operationId":"api_v1_registry_v2_token","tags":["registry"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/relay/pairings":{"get":{"operationId":"api_v1_pairings","tags":["relay"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_relay_pairings","tags":["relay"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/relay/pairings/claim":{"post":{"operationId":"claim_api_v1_pairings","tags":["relay"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/relay/pairings/{id}":{"get":{"operationId":"api_v1_pairing","tags":["relay"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/relay/pairings/{id}/events":{"get":{"operationId":"events_api_v1_pairing","tags":["relay"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/relay/signals":{"post":{"operationId":"api_v1_signals","tags":["relay"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/repositories/{repository}/sandbox_environments/validate":{"post":{"operationId":"post_api_v1_repositories_repository_sandbox_environments_validate","tags":["repositories"],"parameters":[{"name":"repository","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/repositories/{repository}/sandbox_environments/{profile}":{"get":{"operationId":"get_api_v1_repositories_repository_sandbox_environments_profile_","tags":["repositories"],"parameters":[{"name":"repository","in":"path","required":true,"schema":{"type":"string"}},{"name":"profile","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/repository_access/authorize":{"post":{"operationId":"api_v1_repository_access_authorize","tags":["repository_access"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/repository_access/authorize_git":{"post":{"operationId":"api_v1_repository_access_authorize_git","tags":["repository_access"],"parameters":[{"in":"header","name":"X-Vex-Git-Read-Grant-Protocol","required":false,"description":"Value 1 advertises absolute-deadline enforcement; other values do not enable reuse.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}},"headers":{"X-Vex-Git-Read-Grant-Expires-At":{"description":"Optional absolute Unix timestamp in seconds for a completed retained-import read grant. Absent means no reuse. Hits must not renew this deadline. Generic HTTP caches must continue honoring Cache-Control no-store.","schema":{"type":"string","pattern":"^[1-9][0-9]*$"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"402":{"description":"The organization's billing limit refuses this usage; see `error.upgrade_path`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingLimitExceededError"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}],"description":"Authorize an authenticated Git request for a physical repository, isolated import, or swarm runner. Ordinary repository grants require current Git authority and gateway backend fencing version 1. Anonymous/public-source, COM mirror, Home-view and component credentials are not supported. With server rollout enabled, a retained immutable import read may negotiate read-grant protocol 1 and receive a bounded reusable decision whose deadline never exceeds token expiry. Ordinary repository grants and import transfer capabilities do not receive a reusable deadline."}},"/api/v1/repository_access/catalog":{"get":{"operationId":"api_v1_repository_access_catalog","tags":["repository_access"],"parameters":[{"name":"organization_slug","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Physical Git repositories accessible to the authenticated user","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["repositories"],"properties":{"repositories":{"type":"array","items":{"type":"object","required":["organization_id","organization_slug","organization_name","membership_role","repository_id","repository_slug","repository_name","default_branch","git_https_clone_url","git_https_supported","git_auth_username"],"properties":{"organization_id":{"type":"string"},"organization_slug":{"type":"string"},"organization_name":{"type":"string"},"membership_role":{"type":"string"},"repository_id":{"type":"string"},"repository_slug":{"type":"string"},"repository_name":{"type":"string"},"default_branch":{"type":"string"},"git_https_clone_url":{"type":"string","format":"uri","nullable":true},"git_https_supported":{"type":"boolean"},"git_auth_username":{"type":"string"},"github_access_warnings":{"type":"array","items":{"$ref":"#/components/schemas/GithubRepositoryAccessHealth"}}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/repository_access/resolve/{org_slug}/{repo_slug}":{"get":{"operationId":"get_api_v1_repository_access_resolve_org_slug_repo_slug_","tags":["repository_access"],"parameters":[{"name":"org_slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"repo_slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Exact physical repository address and access contract","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["repository"],"properties":{"repository":{"type":"object","required":["organization_id","organization_slug","organization_name","membership_role","repository_id","repository_slug","repository_name","default_branch","git_https_clone_url","git_https_supported","git_auth_username"],"properties":{"organization_id":{"type":"string"},"organization_slug":{"type":"string"},"organization_name":{"type":"string"},"membership_role":{"type":"string"},"repository_id":{"type":"string"},"repository_slug":{"type":"string"},"repository_name":{"type":"string"},"default_branch":{"type":"string"},"git_https_clone_url":{"type":"string","format":"uri","nullable":true},"git_https_supported":{"type":"boolean"},"git_auth_username":{"type":"string"},"github_access_warnings":{"type":"array","items":{"$ref":"#/components/schemas/GithubRepositoryAccessHealth"}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/repository_events/walgit":{"post":{"operationId":"api_v1_repository_events_walgit","tags":["repository_events"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/repository_import_sessions/{id}":{"get":{"operationId":"api_v1_repository_import_session","tags":["repository_import_sessions"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Repository import session","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RepositoryImportSession"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/repository_import_sessions/{id}/authorization":{"post":{"operationId":"authorization_api_v1_repository_import_session","tags":["repository_import_sessions"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"One-time GitHub App installation continuation URL. Never contains API bearer credentials.","content":{"application/json":{"schema":{"type":"object","required":["installation_url"],"properties":{"installation_url":{"type":"string","format":"uri","description":"Short-lived signed browser URL. Treat as sensitive and do not log."}}}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/repository_import_sessions/{id}/cancel":{"post":{"operationId":"cancel_api_v1_repository_import_session","tags":["repository_import_sessions"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Repository import session","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RepositoryImportSession"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"message":{"type":"string","maxLength":500}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/repository_import_sessions/{id}/repositories":{"get":{"operationId":"repositories_api_v1_repository_import_session","tags":["repository_import_sessions"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Session-scoped GitHub App repository inventory","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RepositoryImportInventory"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/repository_import_sessions/{id}/selections":{"post":{"operationId":"selections_api_v1_repository_import_session","tags":["repository_import_sessions"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"201":{"description":"Repository import session","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepositoryImportSession"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/RepositoryImportSelectionRequest"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/signals":{"post":{"operationId":"post_api_v1_signals","tags":["signals"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/signals/inbound/{provider}/{inbound_token}":{"post":{"operationId":"post_api_v1_signals_inbound_provider_inbound_token_","tags":["signals"],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string"}},{"name":"inbound_token","in":"path","required":true,"schema":{"type":"string"}},{"in":"path","name":"provider","required":true,"schema":{"type":"string","enum":["sentry","planetscale"]}},{"in":"path","name":"inbound_token","required":true,"description":"The integration's random inbound token. Not a public id.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"The signature is missing or does not match the stored webhook secret","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalIntegrationError"}}}},"403":{"description":"Forbidden"},"404":{"description":"No usable integration for this token — unknown, provider mismatch, or disabled. The three are deliberately indistinguishable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalIntegrationError"}}}},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Recorded. `state` is `pending` for an event that will become a signal and `ignored` for one the adapter recognizes and does not act on (a provider test ping, an installation notice).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalIntegrationInboundAccepted"}}}},"409":{"description":"The same delivery id was replayed with different content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalIntegrationError"}}}},"413":{"description":"The request body exceeds 1 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalIntegrationError"}}}},"429":{"description":"Too many deliveries for this integration in the current minute","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalIntegrationError"}}}},"503":{"description":"Signal integrations are disabled (VEX_SIGNAL_INTEGRATIONS_DISABLED)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalIntegrationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}},"description":"The provider's raw event body, capped at 1 MB."},"security":[{"bearerAuth":[]}],"summary":"Provider webhook ingest (no user authentication)","description":"The endpoint Sentry and PlanetScale post to. There is no user session and no CSRF: the random `inbound_token` addresses the integration and the provider's HMAC-SHA256 over the RAW request body authenticates it. The response is returned before any normalization work, inside PlanetScale's two-second budget."}},"/api/v1/source_connections/{id}/refresh":{"post":{"operationId":"post_api_v1_source_connections_id_refresh","tags":["source_connections"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"202":{"description":"Source refresh queued","content":{"application/json":{"schema":{"type":"object","required":["queued"],"properties":{"queued":{"type":"boolean","enum":[true]}}}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/spark/devices/enterprise_admission":{"post":{"operationId":"api_v1_spark_devices_enterprise_admission","tags":["spark"],"parameters":[],"responses":{"200":{"description":"Current selected native route and physical enrollment","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["authorized","execution_available","binding","gateway_url","device"],"properties":{"authorized":{"type":"boolean","enum":[true]},"execution_available":{"type":"boolean","enum":[false]},"binding":{"$ref":"#/components/schemas/DeviceAgentConnectionBinding"},"gateway_url":{"type":"string","description":"The observed private OCE gateway endpoint, returned only to the dedicated ingress service."},"transport_cleanup_ms":{"type":["integer","null"],"minimum":1,"maximum":30000,"description":"Remaining bounded cleanup lifetime for existing transports after a grant change. Null for current consent; this never authorizes execution."},"device":{"type":"object","additionalProperties":false,"required":["device_id","native_device_id","pairing_generation","public_key","environment","channel"],"properties":{"device_id":{"type":"string"},"native_device_id":{"type":"string","pattern":"^[a-f0-9]{64}$"},"pairing_generation":{"type":"integer","minimum":1},"public_key":{"type":"string"},"environment":{"type":"string"},"channel":{"type":"string","enum":["dev","alpha","release"]}}}}}}}},"401":{"description":"Dedicated ingress credential required"},"403":{"description":"Computer, agent runtime or consent changed"},"422":{"description":"Invalid request fields"},"503":{"description":"Ingress admission is not configured"}},"security":[{"DeviceIngressServiceKey":[]}],"summary":"Read current OCE native device routing admission","description":"Namespace-scoped ingress-service protocol. A relay credential may read the currently authorized computer and selected OCE runtime only inside its current organization and namespace generation. Only established socket renewals may request a bounded cancellation-settlement window after a grant changes; new sockets, transfers and execution remain strictly admitted. It cannot mint a native bootstrap, execute commands or use an operator bridge. Native device, worker and transfer credentials remain mandatory.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["connection","device_id","native_device_id","pairing_generation"],"properties":{"connection":{"type":"string","maxLength":1800},"renewal":{"type":"boolean","enum":[true],"description":"Internal relay flag for an already-admitted socket renewal only; never set for initial admission, native hello or transfers."},"device_id":{"type":"string"},"native_device_id":{"type":"string","pattern":"^[a-f0-9]{64}$"},"pairing_generation":{"type":"integer","minimum":1}}}}}}}},"/api/v1/spark/devices/enterprise_relays":{"get":{"operationId":"api_v1_spark_devices_enterprise_relays","tags":["spark"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/spark/harness_proxy/anthropic/v1/messages":{"post":{"operationId":"post_api_v1_spark_harness_proxy_anthropic_v1_messages","tags":["spark"],"parameters":[],"responses":{"200":{"description":"The provider's response, streamed unchanged.","content":{"text/event-stream":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Invalid or expired stand-in token"},"403":{"description":"The turn ended, the thread, bot or credential no longer allows model access, or the path does not take this credential"},"413":{"description":"Request body over 24 MB"},"502":{"description":"The provider could not be reached"},"503":{"description":"The proxy is busy, or the subscription is refreshing (with Retry-After)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"clawderHarnessProxy":[]}],"description":"Private model proxy for a sandbox thread's coding-agent CLI. Its only credential is the turn's stand-in token (comharness_), sent as x-api-key or a bearer token; browser sessions, personal tokens and bridge tokens are not accepted. Rails adds the bot's model credential and forwards the request to the provider; the provider's status, retry and rate-limit headers and body come back unchanged.","x-internal":true,"summary":"Forward a coding agent's Anthropic Messages request"}},"/api/v1/spark/harness_proxy/anthropic/v1/messages/count_tokens":{"post":{"operationId":"post_api_v1_spark_harness_proxy_anthropic_v1_messages_count_tokens","tags":["spark"],"parameters":[],"responses":{"200":{"description":"The provider's response, streamed unchanged.","content":{"text/event-stream":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Invalid or expired stand-in token"},"403":{"description":"The turn ended, the thread, bot or credential no longer allows model access, or the path does not take this credential"},"413":{"description":"Request body over 24 MB"},"502":{"description":"The provider could not be reached"},"503":{"description":"The proxy is busy, or the subscription is refreshing (with Retry-After)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"clawderHarnessProxy":[]}],"description":"Private model proxy for a sandbox thread's coding-agent CLI. Its only credential is the turn's stand-in token (comharness_), sent as x-api-key or a bearer token; browser sessions, personal tokens and bridge tokens are not accepted. Rails adds the bot's model credential and forwards the request to the provider; the provider's status, retry and rate-limit headers and body come back unchanged.","x-internal":true,"summary":"Forward a coding agent's Anthropic token count request"}},"/api/v1/spark/harness_proxy/chatgpt/codex/responses":{"post":{"operationId":"post_api_v1_spark_harness_proxy_chatgpt_codex_responses","tags":["spark"],"parameters":[],"responses":{"200":{"description":"The provider's response, streamed unchanged.","content":{"text/event-stream":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Invalid or expired stand-in token"},"403":{"description":"The turn ended, the thread, bot or credential no longer allows model access, or the path does not take this credential"},"413":{"description":"Request body over 24 MB"},"502":{"description":"The provider could not be reached"},"503":{"description":"The proxy is busy, or the subscription is refreshing (with Retry-After)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"clawderHarnessProxy":[]}],"description":"Private model proxy for a sandbox thread's coding-agent CLI. Its only credential is the turn's stand-in token (comharness_), sent as x-api-key or a bearer token; browser sessions, personal tokens and bridge tokens are not accepted. Rails adds the bot's model credential and forwards the request to the provider; the provider's status, retry and rate-limit headers and body come back unchanged.","x-internal":true,"summary":"Forward a coding agent's ChatGPT sign-in Responses request"}},"/api/v1/spark/harness_proxy/openai/v1/responses":{"post":{"operationId":"post_api_v1_spark_harness_proxy_openai_v1_responses","tags":["spark"],"parameters":[],"responses":{"200":{"description":"The provider's response, streamed unchanged.","content":{"text/event-stream":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Invalid or expired stand-in token"},"403":{"description":"The turn ended, the thread, bot or credential no longer allows model access, or the path does not take this credential"},"413":{"description":"Request body over 24 MB"},"502":{"description":"The provider could not be reached"},"503":{"description":"The proxy is busy, or the subscription is refreshing (with Retry-After)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"clawderHarnessProxy":[]}],"description":"Private model proxy for a sandbox thread's coding-agent CLI. Its only credential is the turn's stand-in token (comharness_), sent as x-api-key or a bearer token; browser sessions, personal tokens and bridge tokens are not accepted. Rails adds the bot's model credential and forwards the request to the provider; the provider's status, retry and rate-limit headers and body come back unchanged.","x-internal":true,"summary":"Forward a coding agent's OpenAI Responses request"}},"/api/v1/spark/organizations/{organization_id}/admission":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_admission","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current native execution authority","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"authorized":{"type":"boolean","const":true},"subscription_allowed":{"type":"boolean"},"device_requester":{"type":["object","null"],"properties":{"principal_id":{"type":"string"},"membership_id":{"type":"string"},"input_run_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"execution_available":{"type":"boolean","const":false}},"required":["principal_id","membership_id","input_run_id","execution_available"],"additionalProperties":false},"device_consent":{"type":"object","properties":{"device_id":{"type":"string"},"grant_id":{"type":"string"},"grant_revision":{"type":"integer","minimum":1},"pairing_generation":{"type":"integer","minimum":1},"capability":{"type":"string","enum":["browser","computer","files","harnesses","processes"]},"execution_available":{"type":"boolean","const":false}},"required":["device_id","grant_id","grant_revision","pairing_generation","capability","execution_available"],"additionalProperties":false},"sandbox_authorized":{"type":"boolean"},"sandbox_generation":{"type":"integer","minimum":1},"device_targets":{"type":"object","additionalProperties":false,"required":["devices","next_cursor"],"properties":{"devices":{"type":"array","maxItems":50,"items":{"type":"object","properties":{"device_id":{"type":"string"},"native_device_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"name":{"type":"string"},"platform":{"type":"string"},"pairing_generation":{"type":"integer","minimum":1},"grant_revision":{"type":["integer","null"],"description":"Null only for an unselected owned computer with no saved grant.","minimum":1}},"required":["device_id","native_device_id","name","platform","pairing_generation","grant_revision"],"additionalProperties":false}},"next_cursor":{"type":["string","null"]}}}},"required":["authorized","subscription_allowed","device_requester","sandbox_authorized","sandbox_generation"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"native_agent_id":{"type":"string"},"job_id":{"type":"string","minLength":1,"maxLength":200},"input_run_id":{"type":"string","minLength":1,"maxLength":200},"device":{"type":"object","properties":{"device_id":{"type":"string","minLength":1,"maxLength":200},"native_device_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"capability":{"type":"string","enum":["browser","computer","files","harnesses","processes"]},"grant_revision":{"type":"integer","minimum":1,"maximum":9223372036854775807},"pairing_generation":{"type":"integer","minimum":1,"maximum":9223372036854775807}},"required":["device_id","native_device_id","capability","grant_revision","pairing_generation"],"additionalProperties":false},"device_targets":{"oneOf":[{"type":"boolean","const":true},{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"include_owned":{"type":"boolean","description":"Include the sender's paired computers; selecting an owned computer initializes its default grant only when no saved policy exists."},"device_id":{"type":"string","minLength":1,"maxLength":200},"cursor":{"type":"string","minLength":1,"maxLength":200},"capability":{"type":"string","enum":["processes","harnesses","computer"]}},"not":{"required":["device_id","cursor"]}}]},"subscription_account_id":{"type":"string","maxLength":200,"description":"Selected personal account; rechecked on every run and tool admission."}},"required":["native_agent_id"]}}}},"security":[{"clawderTenantBridge":[]}],"description":"Private native admission hook. Tenant bridge credentials and host-supplied native identities are required; background jobs recheck their persisted subscription. An optional canonical input run ID resolves the live web requester membership. This metadata does not authorize device execution; unknown inputs and background jobs have no device requester. An optional device request checks the bound sender against the exact device, native key, grant revision, capability, pairing generation and server environment. Device consent is a current product check only; it issues no execution credential and does not replace native invocation authority, leases or local consent.","x-internal":true}},"/api/v1/spark/organizations/{organization_id}/apps":{"get":{"operationId":"get_api_v1_spark_organizations_organization_id_apps","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"native_agent_id","in":"query","required":true,"schema":{"type":"string"},"description":"The calling agent's native id"},{"name":"installed","in":"query","required":false,"schema":{"type":"boolean"},"description":"List manual installs when context is omitted"},{"name":"context","in":"query","required":false,"schema":{"type":"boolean"},"description":"Return a bounded list of recently published and manually installed team apps for agent context"}],"responses":{"200":{"description":"Team app catalog or agent context","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"oneOf":[{"required":["apps"],"properties":{"apps":{"type":"array","items":{"type":"object","additionalProperties":true}}}},{"required":["context_apps"],"properties":{"context_apps":{"type":"array","items":{"type":"object","required":["name","mcp_path"],"properties":{"name":{"type":"string"},"mcp_path":{"type":["string","null"]}}}}}}]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List team apps for the calling agent"}},"/api/v1/spark/organizations/{organization_id}/apps/{name}/install":{"put":{"operationId":"put_api_v1_spark_organizations_organization_id_apps_name_install","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_spark_organizations_organization_id_apps_name_install","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/spark/organizations/{organization_id}/control/admission":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_control_admission","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current authorized local agent control result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ControlAdmissionResponse"}}}},"400":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"401":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"403":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"404":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"409":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"422":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}},"503":{"description":"Request refused or computer unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEnrollmentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ControlAdmissionInput"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/spark/organizations/{organization_id}/devices/admission":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_devices_admission","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current registration is eligible for native bootstrap","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"authorized":{"type":"boolean","const":true},"device":{"type":"object","properties":{"device_id":{"type":"string","pattern":"^device_registration_","maxLength":200},"native_device_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"pairing_generation":{"type":"integer","minimum":1,"maximum":9007199254740991},"public_key":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"environment":{"type":"string","pattern":"^[a-z0-9][a-z0-9._-]{0,63}$"},"channel":{"type":"string","enum":["dev","alpha","release"]}},"required":["device_id","native_device_id","pairing_generation","public_key","environment","channel"],"additionalProperties":false},"execution_available":{"type":"boolean","const":false}},"required":["authorized","device","execution_available"]}}}},"401":{"description":"Tenant bridge authentication required"},"403":{"description":"Current device registration required"},"404":{"description":"Device transport rollout is unavailable"},"422":{"description":"Invalid device identity request"},"502":{"description":"Bad gateway"},"503":{"description":"Server device environment is unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"device_id":{"type":"string","pattern":"^device_registration_","maxLength":200},"native_device_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"pairing_generation":{"type":"integer","minimum":1,"maximum":9007199254740991}},"required":["device_id","native_device_id","pairing_generation"]}}}},"security":[{"clawderTenantBridge":[]}],"description":"Private native-node bootstrap admission. Only the ready organization tenant bridge may resolve the current registered native public key. Requires enrollment and transport rollout flags, current owner account and exact enrollment membership, native identity, server environment and pairing generation. Returns no credential or execution grant; callers recheck before disclosing native bootstrap authority. Transport remains disabled by default."}},"/api/v1/spark/organizations/{organization_id}/devices/browser_operations":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_devices_browser_operations","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Queued for the desktop","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderDeviceBrowserOperationResponse"}}}},"400":{"description":"Request refused","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderDeviceBrowserOperationError"}}}},"403":{"description":"Not the sender's current turn, or the agent is not authorized"},"409":{"description":"Request refused","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderDeviceBrowserOperationError"}}}},"422":{"description":"Request refused","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderDeviceBrowserOperationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/ClawderDeviceBrowserOperationInput"}}}},"security":[{"clawderTenantBridge":[]}],"summary":"Ask the sender's Composal Desktop to use its in-app browser","description":"Only on a turn a person sent. Rails selects the sender's computer whose desktop is listening, unless device_id names one of theirs, and checks the agent's browser grant."}},"/api/v1/spark/organizations/{organization_id}/devices/browser_operations/{operation_id}":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_devices_browser_operations_operation_id_","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current state, with the desktop's answer once it has one","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClawderDeviceBrowserOperationResponse"}}}},"403":{"description":"Not the sender's current turn, or the agent is not authorized"},"404":{"description":"No such request for this turn"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["native_agent_id","input_run_id"],"properties":{"native_agent_id":{"type":"string","minLength":1,"maxLength":512},"input_run_id":{"type":"string","minLength":1,"maxLength":512}}}}}},"security":[{"clawderTenantBridge":[]}],"summary":"Read an in-app browser request this turn made"}},"/api/v1/spark/organizations/{organization_id}/devices/command_events":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_devices_command_events","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Completion telemetry acknowledgement; never an execution permit","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["recorded"],"properties":{"recorded":{"type":"boolean"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["native_agent_id","input_run_id","device_id","operation_key","outcome"],"properties":{"native_agent_id":{"type":"string","minLength":1,"maxLength":200},"input_run_id":{"type":"string","minLength":1,"maxLength":200},"device_id":{"type":"string","minLength":1,"maxLength":200},"operation_key":{"type":"string","pattern":"^[0-9a-f]{64}$"},"outcome":{"type":"string","enum":["completed","failed"]}}}}}},"security":[{"clawderTenantBridge":[]}],"summary":"Record reported computer command completion"}},"/api/v1/spark/organizations/{organization_id}/inference/responses":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_inference_responses","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Provider Responses events streamed unchanged. Provider failures after handoff use sanitized SSE error events.","content":{"text/event-stream":{"schema":{"type":"string"}}}},"401":{"description":"Invalid tenant worker credential"},"403":{"description":"Tenant runtime authority revoked"},"404":{"description":"Unknown organization"},"422":{"description":"Invalid stateless Responses request"},"503":{"description":"Model access unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"model":{"type":"string","enum":["openrouter/auto","gpt-6.1-sol","gpt-6.1-terra","gpt-6-luna","minimax/minimax-m3.1-flash","moonshotai/kimi-k3","moonshotai/kimi-k3.1-pro","z-ai/glm-5.3-flash","deepseek/deepseek-v4.1-flash-1017","deepseek/deepseek-v4.1-flash-abliterated"]},"stream":{"type":"boolean","const":true},"store":{"type":"boolean","const":false}},"required":["model","stream","store"]}}}},"security":[{"clawderTenantBridge":[]}],"summary":"Stream a native tenant harness model request","description":"Private managed-worker transport. Requires the exact ready tenant's bridge credential and an active member-owned V2 runtime. Browser sessions and personal tokens do not authorize this operation. Native hooks independently admit every agent run.","x-internal":true}},"/api/v1/spark/organizations/{organization_id}/interactions":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_interactions","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/spark/organizations/{organization_id}/library":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_library","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Published file","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"artifact":{"$ref":"#/components/schemas/ClawderLibraryItem"}},"required":["artifact"]}}}},"401":{"description":"Invalid tenant worker credential"},"403":{"description":"Agent runtime authority revoked"},"404":{"description":"Unknown agent or organization"},"422":{"description":"Invalid generated file"},"502":{"description":"Bad gateway"},"409":{"description":"Publication identity already used for another file"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"native_agent_id":{"type":"string"},"publication_key":{"type":"string"},"filename":{"type":"string"},"title":{"type":"string"},"content_type":{"type":"string"},"content_base64":{"type":"string"},"conversation_id":{"type":"string"}},"required":["native_agent_id","publication_key","filename","content_type","content_base64"]}}}},"security":[{"clawderTenantBridge":[]}],"summary":"Save an agent generated file","description":"Private managed-worker upload. Requires the ready tenant bridge credential and active native agent identity.","x-internal":true}},"/api/v1/spark/organizations/{organization_id}/parallel/v1/search":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_parallel_v1_search","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Parallel search results, including source URLs and excerpts, session identity and provider usage.","content":{"application/json":{"schema":{"type":"object","required":["results"],"properties":{"results":{"type":"array","items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}}}},"401":{"description":"Invalid tenant worker credential"},"403":{"description":"Tenant runtime authority revoked"},"404":{"description":"Unknown organization"},"422":{"description":"Invalid search request"},"429":{"description":"Tenant or provider search rate limit"},"503":{"description":"Search access unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"objective":{"type":"string"},"search_queries":{"type":"array","items":{"type":"string"}},"mode":{"type":"string","enum":["turbo","basic","advanced"],"default":"advanced"},"session_id":{"type":"string"},"client_model":{"type":"string"},"advanced_settings":{"type":"object","properties":{"max_results":{"type":"integer","minimum":1,"maximum":40}},"additionalProperties":true}}}}}},"security":[{"clawderSearchBridge":[]}],"summary":"Search the web for a managed V2 tenant","description":"Private Parallel-compatible transport. Requires a ready tenant's bridge credential in x-api-key and an active member-owned V2 runtime. Rails supplies the Parallel API key and records organization usage. Omitted mode defaults to advanced.","x-internal":true}},"/api/v1/spark/organizations/{organization_id}/relay/files/{operation_id}":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_relay_files_operation_id_","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current authority for this exact file and direction","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["authorized"],"properties":{"authorized":{"type":"boolean","const":true}}}}}},"401":{"description":"Invalid worker credential"},"403":{"description":"Receipt, file, direction, payload or authority is unavailable"},"404":{"description":"Receipt does not belong to this organization"},"422":{"description":"Invalid bounded admission request"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["file_id","direction"],"properties":{"file_id":{"type":"string","pattern":"^[0-9]{1,30}$"},"direction":{"type":"string","enum":["put","get"]}}}}}},"security":[{"clawderTenantBridge":[]}],"summary":"Recheck one receipt-bound Relay file transfer","description":"Private tenant-worker admission after file capability verification. Reads the completed file tool receipt and current requester or native source authority. Does not dispatch another tool or retry a write.","x-internal":true}},"/api/v1/spark/organizations/{organization_id}/relay/integrations/{operation_id}":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_relay_integrations_operation_id_","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"clawderTenantBridge":[]}],"summary":"Recheck current source integration authority","description":"Private worker transport verifies the original integration creator, requester, source and consent before integration delivery.","x-internal":true}},"/api/v1/spark/organizations/{organization_id}/relay/native-deliveries/{operation_id}":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_relay_native-deliveries_operation_id_","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Durable original capture receipt, including discarded or expired messages","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRelayDeliveryReceipt"}}}},"401":{"description":"Invalid worker credential"},"404":{"description":"Unknown source in this organization"},"409":{"description":"This message already has different captured bytes"},"422":{"description":"Invalid bounded native message representation"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["scope","message","sender_operation_id"],"properties":{"sender_operation_id":{"type":["string","null"],"pattern":"^device_control_operation_[A-Za-z0-9_-]{1,160}$"},"scope":{"type":"string","pattern":"^[0-9a-f]{64}$"},"message":{"type":"object","additionalProperties":false,"required":["id","sender","channel_id","thread_id","text","text_bytes","text_digest","text_omitted","created_at"],"properties":{"id":{"type":"string","pattern":"^[0-9]{1,30}$"},"sender":{"type":"string","pattern":"^(v2-agent|operator-[0-9a-f]{16}|(codex|claude)-[0-9a-f]{16})$"},"channel_id":{"type":"string","pattern":"^([0-9]{1,30}|dmch_[0-9a-f]{24})$"},"thread_id":{"type":["string","null"],"pattern":"^[0-9]{1,30}$"},"text":{"type":["string","null"],"description":"Exact inline text up to 8192 UTF-8 bytes","or null when omitted. Fetch omitted text through the original Relay references.":null},"text_bytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"text_digest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"text_omitted":{"type":"boolean"},"created_at":{"type":"string","format":"date-time","maxLength":64}}}}}}}},"security":[{"clawderTenantBridge":[]}],"summary":"Capture one Relay message for its enrolled native conversation","description":"Private tenant-worker transport. Retains one durable message receipt before the worker advances its observation cursor. Current source, requester, membership, grant and pairing govern native delivery. Replaying the same message retains one original device-control receipt; uncertain native writes are never retried.","x-internal":true}},"/api/v1/spark/organizations/{organization_id}/relay/notifications/{operation_id}":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_relay_notifications_operation_id_","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Durable original capture receipt, including discarded or expired messages","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["id","state","input_run_id","retryable"],"properties":{"id":{"type":"string","pattern":"^agent_relay_notification_"},"state":{"type":"string","enum":["pending","dispatching","accepted","uncertain","discarded","expired"]},"input_run_id":{"type":["string","null"]},"retryable":{"type":"boolean","const":false}}}}}},"401":{"description":"Invalid worker credential"},"404":{"description":"Unknown source in this organization"},"409":{"description":"This message already has different captured bytes"},"422":{"description":"Invalid bounded native message representation"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["scope","message"],"properties":{"scope":{"type":"string","pattern":"^[0-9a-f]{64}$"},"message":{"type":"object","additionalProperties":false,"required":["id","sender","channel_id","thread_id","text","text_bytes","text_digest","text_omitted","created_at"],"properties":{"id":{"type":"string","pattern":"^[0-9]{1,30}$"},"sender":{"type":"string","pattern":"^(codex|claude)-[0-9a-f]{16}$"},"channel_id":{"type":"string","pattern":"^([0-9]{1,30}|dmch_[0-9a-f]{24})$"},"thread_id":{"type":["string","null"],"pattern":"^[0-9]{1,30}$"},"text":{"type":["string","null"],"description":"Exact inline text up to 8192 UTF-8 bytes","or null when omitted. Fetch omitted text through the original Relay references.":null},"text_bytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"text_digest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"text_omitted":{"type":"boolean"},"created_at":{"type":"string","format":"date-time","maxLength":64}}}}}}}},"security":[{"clawderTenantBridge":[]}],"summary":"Capture one native Relay message for its V2 conversation","description":"Private tenant-worker transport. Retains one durable message receipt before the worker advances its observation cursor. Current source, requester, membership, grant and pairing govern delivery and queued-run admission. Replaying the same message never starts another input; uncertain dispatch is reconciled by reading its original run.","x-internal":true}},"/api/v1/spark/organizations/{organization_id}/relay/peers/{operation_id}":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_relay_peers_operation_id_","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authorized MCP result or durable native Relay operation receipt","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Invalid worker credential"},"403":{"description":"Native source authority revoked"},"404":{"description":"Unknown source or receipt"},"409":{"description":"Stable call key belongs to different arguments"},"422":{"description":"Invalid bounded native Relay request"},"503":{"description":"Relay transport unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/NativeRelayPeerInput"}}}},"security":[{"clawderTenantBridge":[]}],"summary":"Admit a source-bound native Relay participant","description":"Private tenant-worker transport after native bearer authentication. Rechecks the exact thread-create receipt, provider consent, pairing and requester before dispatch and result release. Tool calls retain durable source-scoped receipts; uncertain writes are never retried automatically.","x-internal":true}},"/api/v1/spark/organizations/{organization_id}/run_outcomes":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_run_outcomes","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/spark/organizations/{organization_id}/sandbox":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_sandbox","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current sandbox authority and private provider configuration","content":{"application/json":{"schema":{"type":"object","properties":{"integration_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"generation":{"type":"integer"},"status":{"type":"string"},"provider":{"type":"string"},"workspace_key":{"type":"string"},"remote_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"account_id":{"type":["string","null"]},"credentials":{"type":["object","null"],"additionalProperties":{"type":"string"}},"configuration":{"type":"object","additionalProperties":true},"allocation_token":{"type":["string","null"]},"may_create":{"type":"boolean"}},"required":["integration_id","generation","status","provider","workspace_key","remote_id","account_id","credentials","configuration"],"additionalProperties":false}}}},"401":{"description":"Invalid tenant bridge credential"},"403":{"description":"Revoked runtime authority"},"404":{"description":"Unknown organization or native agent"},"409":{"description":"Disconnected or superseded sandbox selection"},"422":{"description":"Invalid sandbox request"}},"security":[{"clawderTenantBridge":[]}],"summary":"Resolve or record the current agent sandbox allocation","description":"Private tenant worker transport. Provider credentials are never returned to browser sessions or personal API tokens. Resolve reads configuration, claim admits at most one allocation creator, and complete records the provider receipt.","x-internal":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"native_agent_id":{"type":"string"},"operation":{"type":"string","const":"resolve"},"generation":{"type":"integer","minimum":1},"allocation_token":{"type":"string","minLength":48,"maxLength":48},"remote_id":{"type":"string","minLength":1,"maxLength":200}},"required":["native_agent_id","operation"]},{"type":"object","additionalProperties":false,"properties":{"native_agent_id":{"type":"string"},"operation":{"type":"string","const":"claim"},"generation":{"type":"integer","minimum":1},"allocation_token":{"type":"string","minLength":48,"maxLength":48},"remote_id":{"type":"string","minLength":1,"maxLength":200}},"required":["native_agent_id","operation","generation"]},{"type":"object","additionalProperties":false,"properties":{"native_agent_id":{"type":"string"},"operation":{"type":"string","const":"complete"},"generation":{"type":"integer","minimum":1},"allocation_token":{"type":"string","minLength":48,"maxLength":48},"remote_id":{"type":"string","minLength":1,"maxLength":200}},"required":["native_agent_id","operation","generation","allocation_token","remote_id"]}]}}}}}},"/api/v1/spark/organizations/{organization_id}/sites":{"get":{"operationId":"get_api_v1_spark_organizations_organization_id_sites","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"native_agent_id","in":"query","required":true,"schema":{"type":"string"},"description":"The calling agent's native id"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}],"summary":"List the organization's Composal Pages sites (tenant bridge token)"},"post":{"operationId":"post_api_v1_spark_organizations_organization_id_sites","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/spark/organizations/{organization_id}/sites/{name}":{"patch":{"operationId":"patch_api_v1_spark_organizations_organization_id_sites_name_","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_spark_organizations_organization_id_sites_name_","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/spark/organizations/{organization_id}/sites/{name}/access_keys":{"get":{"operationId":"get_api_v1_spark_organizations_organization_id_sites_name_access_keys","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_spark_organizations_organization_id_sites_name_access_keys","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/spark/organizations/{organization_id}/sites/{name}/access_keys/{key_id}":{"delete":{"operationId":"delete_api_v1_spark_organizations_organization_id_sites_name_access_keys_key_id_","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"key_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/spark/organizations/{organization_id}/sites/{name}/app":{"put":{"operationId":"put_api_v1_spark_organizations_organization_id_sites_name_app","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_spark_organizations_organization_id_sites_name_app","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/spark/organizations/{organization_id}/sites/{name}/marketplace_template":{"put":{"operationId":"put_api_v1_spark_organizations_organization_id_sites_name_marketplace_template","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/spark/organizations/{organization_id}/sites/{name}/secrets/{secret_name}":{"put":{"operationId":"put_api_v1_spark_organizations_organization_id_sites_name_secrets_secret_name_","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"secret_name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["native_agent_id","value"],"properties":{"native_agent_id":{"type":"string"},"value":{"type":"string","maxLength":5120}}}}}},"security":[{"bearerAuth":[]}],"summary":"Set a Composal Pages Worker secret (tenant bridge token)"},"delete":{"operationId":"delete_api_v1_spark_organizations_organization_id_sites_name_secrets_secret_name_","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"secret_name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/spark/organizations/{organization_id}/sites/{name}/token":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_sites_name_token","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/spark/organizations/{organization_id}/subscriptions/authorize":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_subscriptions_authorize","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Private worker subscription authorization; refresh credentials are never returned.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"authorized":{"type":"boolean","const":true},"provider":{"type":"string","enum":["anthropic","openai","xai"]},"api_key":{"type":"string","writeOnly":true},"mode":{"type":"string","enum":["token","oauth"]},"expires_at":{"type":"number"},"account_id":{"type":["string","null"]},"subscription_type":{"type":["string","null"]},"rate_limit_tier":{"type":["string","null"]}},"required":["authorized","provider"]}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"native_agent_id":{"type":"string","maxLength":200},"account_id":{"type":"string","maxLength":200},"token":{"type":"boolean"}},"required":["native_agent_id","account_id","token"]}}}},"security":[{"bearerAuth":[]},{"clawderTenantBridge":[]}]}},"/api/v1/spark/organizations/{organization_id}/subscriptions/selection":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_subscriptions_selection","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/spark/organizations/{organization_id}/telemetry/traces":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_telemetry_traces","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OTLP ExportTraceServiceResponse, including any partial-success acknowledgement from the collector.","content":{"application/x-protobuf":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid OTLP payload"},"401":{"description":"Invalid revoked or stale Enterprise runtime credential"},"403":{"description":"Agent binding does not match the runtime credential"},"404":{"description":"Unknown organization"},"413":{"description":"Compressed or uncompressed request exceeds the body limit"},"415":{"description":"Requires application/x-protobuf with optional gzip content encoding"},"429":{"description":"Runtime trace export rate limit"},"503":{"description":"Internal collector is unavailable or not configured; exporter may retry"}},"security":[{"clawderTelemetryCallback":[]}],"summary":"Export native Enterprise traces","description":"Private OTLP/HTTP protobuf transport using the current Enterprise runtime callback credential. Rails verifies runtime authority and stamps resource identity before forwarding to its internal tail sampler. Accepts uncompressed or gzip bodies, bounded to 4 MiB compressed and decompressed. Collector credentials remain in Rails.","x-internal":true,"requestBody":{"required":true,"content":{"application/x-protobuf":{"schema":{"type":"string","format":"binary"}}}}}},"/api/v1/spark/organizations/{organization_id}/tools":{"post":{"operationId":"post_api_v1_spark_organizations_organization_id_tools","tags":["spark"],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Provider tool result","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Invalid worker credential"},"403":{"description":"Connection is not enabled for this agent"},"404":{"description":"Tenant, agent or feature unavailable"},"422":{"description":"Invalid tool call"},"502":{"description":"Bad gateway"},"503":{"description":"Provider unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"native_agent_id":{"type":"string"},"tool":{"type":"string"},"arguments":{"type":"object","additionalProperties":true}},"required":["native_agent_id","tool","arguments"]}}}},"security":[{"bearerAuth":[]}],"description":"Private native tenant-worker endpoint; tenant bridge bearer required. Browser and personal API tokens do not authorize this operation."}},"/api/v1/static_sites/{id}":{"get":{"operationId":"api_v1_static_site","tags":["static_sites"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_static_sites_id_","tags":["static_sites"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_static_sites_id_","tags":["static_sites"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_static_sites_id_","tags":["static_sites"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/static_sites/{id}/provision":{"post":{"operationId":"provision_api_v1_static_site","tags":["static_sites"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Provisioned static site","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["static_site"],"properties":{"static_site":{"$ref":"#/components/schemas/StaticSite"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Static site request failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaticSiteError"}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/static_sites/{static_site_id}/deployments":{"get":{"operationId":"api_v1_static_site_deployments","tags":["static_sites"],"parameters":[{"name":"static_site_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Recent static site deployments","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["deployments"],"properties":{"deployments":{"type":"array","items":{"$ref":"#/components/schemas/StaticSiteDeployment"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_static_sites_static_site_id_deployments","tags":["static_sites"],"parameters":[{"name":"static_site_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/static_sites/{static_site_id}/deployments/{id}":{"get":{"operationId":"api_v1_static_site_deployment","tags":["static_sites"],"parameters":[{"name":"static_site_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]}},"/api/v1/static_sites/{static_site_id}/deployments/{id}/activate":{"post":{"operationId":"activate_api_v1_static_site_deployment","tags":["static_sites"],"parameters":[{"name":"static_site_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Activated static site deployment","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["deployment"],"properties":{"deployment":{"$ref":"#/components/schemas/StaticSiteDeployment"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Static site request failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaticSiteError"}}}},"502":{"description":"CDN provider activation failed","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/StaticSiteError"},{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/StaticSiteDeployment"}}}]}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/static_sites/{static_site_id}/deployments/{id}/cancel":{"post":{"operationId":"cancel_api_v1_static_site_deployment","tags":["static_sites"],"parameters":[{"name":"static_site_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/static_sites/{static_site_id}/deployments/{id}/files":{"put":{"operationId":"files_api_v1_static_site_deployment","tags":["static_sites"],"parameters":[{"name":"static_site_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/static_sites/{static_site_id}/deployments/{id}/finalize":{"post":{"operationId":"finalize_api_v1_static_site_deployment","tags":["static_sites"],"parameters":[{"name":"static_site_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/static_sites/{static_site_id}/domains":{"get":{"operationId":"api_v1_static_site_domains","tags":["static_sites"],"parameters":[{"name":"static_site_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Static site domains","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["domains"],"properties":{"domains":{"type":"array","items":{"$ref":"#/components/schemas/StaticSiteDomain"}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"post_api_v1_static_sites_static_site_id_domains","tags":["static_sites"],"parameters":[{"name":"static_site_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Static site domain created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["domain"],"properties":{"domain":{"$ref":"#/components/schemas/StaticSiteDomain"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Static site request failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaticSiteError"}}}},"502":{"description":"Bad gateway"},"201":{"description":"Static site domain created","content":{"application/json":{"schema":{"type":"object","required":["domain"],"properties":{"domain":{"$ref":"#/components/schemas/StaticSiteDomain"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/StaticSiteDomainCreatePayload"}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/static_sites/{static_site_id}/domains/{id}":{"get":{"operationId":"api_v1_static_site_domain","tags":["static_sites"],"parameters":[{"name":"static_site_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"patch_api_v1_static_sites_static_site_id_domains_id_","tags":["static_sites"],"parameters":[{"name":"static_site_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"put_api_v1_static_sites_static_site_id_domains_id_","tags":["static_sites"],"parameters":[{"name":"static_site_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"delete_api_v1_static_sites_static_site_id_domains_id_","tags":["static_sites"],"parameters":[{"name":"static_site_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Static site domain deleted"}},"security":[{"bearerAuth":[]}]}},"/api/v1/static_sites/{static_site_id}/domains/{id}/provision":{"post":{"operationId":"provision_api_v1_static_site_domain","tags":["static_sites"],"parameters":[{"name":"static_site_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated static site domain","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["domain"],"properties":{"domain":{"$ref":"#/components/schemas/StaticSiteDomain"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Static site request failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaticSiteError"}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/static_sites/{static_site_id}/domains/{id}/verify":{"post":{"operationId":"verify_api_v1_static_site_domain","tags":["static_sites"],"parameters":[{"name":"static_site_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated static site domain","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["domain"],"properties":{"domain":{"$ref":"#/components/schemas/StaticSiteDomain"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Static site request failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaticSiteError"}}}},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/stripe/webhooks":{"post":{"operationId":"api_v1_stripe_webhooks","tags":["stripe"],"parameters":[],"responses":{"200":{"description":"Event stored; processing runs in a job."},"400":{"description":"Malformed body."},"401":{"description":"Signature invalid or the secret is not configured."}},"security":[],"summary":"Stripe event destination (Stripe-Signature verified)"}},"/api/v1/submit_telemetry":{"post":{"operationId":"api_v1_submit_telemetry","tags":["submit_telemetry"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/thread_preview_access/redeem":{"post":{"operationId":"api_v1_thread_preview_access_redeem","tags":["thread_preview_access"],"parameters":[],"responses":{"200":{"description":"Viewer session token for the preview's host-only cookie","content":{"application/json":{"schema":{"type":"object","required":["session_token","max_age"],"properties":{"session_token":{"type":"string"},"max_age":{"type":"integer"}}}}}},"401":{"description":"Missing proxy bearer, or an invalid, expired or replayed token"},"403":{"description":"The signed-in user can no longer open the preview"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["host","token"],"properties":{"host":{"type":"string"},"token":{"type":"string"}}}}}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"summary":"Exchange a one-time thread preview callback token for a viewer session (preview proxy only)"}},"/api/v1/thread_preview_access/start":{"get":{"operationId":"api_v1_thread_preview_access_start","tags":["thread_preview_access"],"parameters":[{"name":"host","in":"query","required":true,"schema":{"type":"string"},"description":"Preview hostname, for example p3000-0123abcd0123abcd0123abcd0123abcd-g1.us-was-1.preview.example.com"},{"name":"return_to","in":"query","required":false,"schema":{"type":"string"},"description":"Relative path to open after sign-in"}],"responses":{"302":{"description":"Redirect to login or to the preview's callback"},"403":{"description":"HTML page explaining that only the bot's owner can open the preview","content":{"text/html":{"schema":{"type":"string"}}}},"404":{"description":"HTML page for an unknown thread or service","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[],"summary":"Start Composal sign-in for a bot thread's service preview","description":"Browser navigation on the web origin. Uses the Composal session cookie, not a bearer token, and answers with redirects or an HTML page."}},"/api/v1/thread_preview_access/upstream":{"post":{"operationId":"api_v1_thread_preview_access_upstream","tags":["thread_preview_access"],"parameters":[],"responses":{"200":{"description":"Token to send as X-Blaxel-Preview-Token until it expires","content":{"application/json":{"schema":{"type":"object","required":["token","expires_at"],"properties":{"token":{"type":"string"},"expires_at":{"type":"string","format":"date-time"}}}}}},"401":{"description":"Missing proxy bearer"},"404":{"description":"Unknown thread or service"},"409":{"description":"The thread's machine is not running or the thread is no longer available"},"503":{"description":"Blaxel is unavailable; retry"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["host"],"properties":{"host":{"type":"string"}}}}}},"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"summary":"Get the Blaxel preview token for a thread preview host (preview proxy only)"}},"/api/v1/transcripts":{"get":{"operationId":"api_v1_transcripts","tags":["transcripts"],"parameters":[{"in":"query","name":"repo","required":true,"schema":{"type":"string"}},{"in":"query","name":"change","schema":{"type":"string"}},{"in":"query","name":"pr","schema":{"type":"string"},"description":"GitHub PR number or URL."},{"in":"query","name":"commit","schema":{"type":"string"},"description":"Complete 40-character Git commit SHA."},{"in":"query","name":"patchset","schema":{"type":"integer","minimum":1}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"in":"query","name":"cursor","schema":{"type":"string"}},{"in":"query","name":"session","schema":{"type":"string"},"description":"Select a linked session when paging its matching checkpoints."},{"in":"query","name":"checkpoint_cursor","schema":{"type":"string"}}],"responses":{"200":{"description":"A bounded page of associated conversations, including an empty known target.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/TranscriptDiscoveryPage"}}}},"401":{"description":"Authentication required."},"403":{"description":"Forbidden"},"404":{"description":"Missing or inaccessible target."},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"400":{"description":"Invalid or conflicting selectors","ambiguous PR number":null,"or invalid cursor.":null},"503":{"description":"Association lookup is temporarily unavailable."}},"security":[{"bearerAuth":[]}],"summary":"Discover saved conversations associated with one repository target","description":"Requires a Vex tenant/repository slug and exactly one of change, pr, or commit. Returns observed associations without synchronization. A selected checkpoint belongs to the target; a session-only link never substitutes unrelated context. Git commit IDs must be complete (40 hexadecimal characters). Resolve short IDs in the checkout before requesting this endpoint."}},"/api/v1/transcripts/read":{"get":{"operationId":"api_v1_transcripts_read","tags":["transcripts"],"parameters":[{"$ref":"#/components/parameters/TranscriptReadSource"},{"$ref":"#/components/parameters/TranscriptReadCursor"},{"$ref":"#/components/parameters/TranscriptReadLimit"},{"$ref":"#/components/parameters/TranscriptReadBytes"},{"$ref":"#/components/parameters/TranscriptReadTools"},{"$ref":"#/components/parameters/TranscriptReadAround"},{"$ref":"#/components/parameters/TranscriptReadDigest"}],"responses":{"200":{"description":"Indexed events or an explicit content availability state.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/TranscriptReadPage"}}}},"401":{"description":"Authentication required."},"403":{"description":"Forbidden"},"404":{"description":"Missing or inaccessible session or checkpoint."},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"400":{"description":"Invalid limits or source reference."},"409":{"description":"The cursor no longer identifies the same content or filters."},"413":{"description":"Increase max_bytes to fit the next complete indexed event."}},"security":[{"bearerAuth":[]}],"summary":"Read a saved conversation using its opaque source reference","description":"Uses the same authorized indexed reader as the session route."}},"/api/v1/verify/demo_shares/{token}":{"get":{"operationId":"get_api_v1_verify_demo_shares_token_","tags":["verify"],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Shared demo","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyDemoShare"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Invalid, revoked or expired link"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[],"summary":"Watch a shared PR demo"}},"/api/v1/verify/demo_shares/{token}/segments/{segment_id}":{"get":{"operationId":"get_api_v1_verify_demo_shares_token_segments_segment_id_","tags":["verify"],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}},{"name":"segment_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Video bytes","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"video/webm":{"schema":{"type":"string","format":"binary"}},"video/mp4":{"schema":{"type":"string","format":"binary"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Invalid, revoked or expired link"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"206":{"description":"Requested byte range"},"302":{"description":"Short-lived signed CDN URL for the authorized video version","headers":{"Location":{"schema":{"type":"string","format":"uri"}}}}},"security":[],"summary":"Stream one video segment of a shared PR demo"}},"/api/v1/verify/demo_shares/{token}/thumbnail":{"get":{"operationId":"get_api_v1_verify_demo_shares_token_thumbnail","tags":["verify"],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Demo capture with a play button","content":{"image/png":{"schema":{"type":"string","format":"binary"}}}},"302":{"description":"Generic play card when no capture is retained"},"404":{"description":"Invalid, revoked or expired link"}},"security":[],"summary":"Preview a shared PR demo"}},"/api/v1/verify/web_bot_auth":{"post":{"operationId":"api_v1_verify_web_bot_auth","tags":["verify"],"parameters":[],"responses":{"200":{"description":"Distinct signatures for the authorized HTTPS origin","content":{"application/json":{"schema":{"type":"object","required":["expires_at","signatures"],"properties":{"expires_at":{"type":"string","format":"date-time"},"signatures":{"type":"array","minItems":32,"maxItems":32,"items":{"type":"object","required":["signature","signature-input","signature-agent"],"properties":{"signature":{"type":"string"},"signature-input":{"type":"string"},"signature-agent":{"type":"string"}}}}}}}}},"400":{"description":"Origin is missing","content":{"application/json":{"schema":{"type":"object","required":["error","field_errors"],"properties":{"error":{"type":"string"},"field_errors":{"type":"object","properties":{"origin":{"type":"array","items":{"type":"string"}}}}}}}}},"401":{"description":"Signing capability is invalid, expired or outside its saved targets","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["origin"],"properties":{"origin":{"type":"string","format":"uri"}}}}}},"security":[{"bearerAuth":[]}],"summary":"Refill short-lived signatures using a live Verify signing grant","description":"Accepts a lease-scoped signing capability as a Bearer token. Ordinary user API tokens cannot authorize this internal endpoint."}},"/api/v1/verify_messages/runs/{scenario_run_id}":{"get":{"operationId":"api_v1_verify_messages","tags":["verify_messages"],"parameters":[{"name":"scenario_run_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The conversation as this run sees it","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyMessagingPage"}}}},"401":{"description":"The Messages session is missing, expired, or belongs to another run or lease","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyMessagingError"}}}},"403":{"description":"Cross-origin request refused"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"security":[{"verifyMessagingSession":[]}],"summary":"Read one Verify run's Messages page","description":"Authenticated only by the run's host-only Messages session cookie. A foreign Origin is refused."}},"/api/v1/verify_messages/runs/{scenario_run_id}/mark_read":{"post":{"operationId":"post_api_v1_verify_messages_runs_scenario_run_id_mark_read","tags":["verify_messages"],"parameters":[{"name":"scenario_run_id","in":"path","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Messages-CSRF-Token","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Origin or CSRF refused"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"},"204":{"description":"Read request accepted"},"503":{"description":"Provider unavailable"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"verifyMessagingSession":[]}],"summary":"Mark the viewed conversation read on the tester line"}},"/api/v1/verify_messages/runs/{scenario_run_id}/messages":{"post":{"operationId":"api_v1_verify_messages_sends","tags":["verify_messages"],"parameters":[{"name":"scenario_run_id","in":"path","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Messages-CSRF-Token","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The Messages page after the send was admitted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyMessagingPage"}}}},"401":{"description":"The Messages session is missing, expired, or belongs to another run or lease","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyMessagingError"}}}},"403":{"description":"Cross-origin request or missing CSRF token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyMessagingError"}}}},"404":{"description":"Not found"},"422":{"description":"The conversation cannot send right now, or the message is invalid (field_errors)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyMessagingError"}}}},"502":{"description":"Bad gateway"},"409":{"description":"The client operation ID was used for a different message","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyMessagingError"}}}},"503":{"description":"Messaging is unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyMessagingError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["client_operation_id","content"],"properties":{"client_operation_id":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,120}$"},"content":{"type":"string"},"media":{"$ref":"#/components/schemas/VerifyMessagingMediaInput"},"media_upload_ids":{"type":"array","maxItems":6,"items":{"type":"string"},"description":"Ordered staged upload IDs; six on Photon, one on Sendblue. Mutually exclusive with media."},"retry_attachment":{"type":"boolean","description":"Retry an already recorded attachment when its file bytes are no longer on this page."},"reply_to":{"type":"string","description":"Public ID of a message visible in this run"},"send_style":{"type":["string","null"],"enum":["celebration","shooting_star","fireworks","lasers","love","confetti","balloons","spotlight","echo","invisible","gentle","loud","slam",null]}}}}}},"security":[{"verifyMessagingSession":[]}],"summary":"Send a message or attachment from the run's tester number","description":"Needs the exact Messages Origin and the session's CSRF token. Resubmitting a client operation ID returns the original send."}},"/api/v1/verify_messages/runs/{scenario_run_id}/messages/{message_id}/reaction":{"post":{"operationId":"api_v1","tags":["verify_messages"],"parameters":[{"name":"scenario_run_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Messages-CSRF-Token","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The Messages page after Sendblue accepts the Tapback","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyMessagingPage"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Invalid or unsupported Tapback"},"502":{"description":"Bad gateway"},"503":{"description":"Tapback delivery could not be confirmed"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["reaction"],"properties":{"reaction":{"type":"string"}}}}}},"security":[{"verifyMessagingSession":[]}],"summary":"React to an incoming iMessage in this run"}},"/api/v1/verify_messages/runs/{scenario_run_id}/typing":{"post":{"operationId":"post_api_v1_verify_messages_runs_scenario_run_id_typing","tags":["verify_messages"],"parameters":[{"name":"scenario_run_id","in":"path","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Messages-CSRF-Token","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Origin or CSRF refused"},"404":{"description":"Not found"},"422":{"description":"Run cannot send"},"502":{"description":"Bad gateway"},"204":{"description":"Typing state accepted"},"503":{"description":"Provider unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["typing"],"properties":{"typing":{"type":"boolean"}}}}}},"security":[{"verifyMessagingSession":[]}],"summary":"Send the run's typing state to the assistant"}},"/api/v1/verify_messages/runs/{scenario_run_id}/uploads":{"post":{"operationId":"api_v1_verify_messages_uploads","tags":["verify_messages"],"parameters":[{"name":"scenario_run_id","in":"path","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Messages-CSRF-Token","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Attachment staged","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"$ref":"#/components/schemas/VerifyMessagingUpload"}}}},"401":{"description":"Session required"},"403":{"description":"Origin, CSRF or permission refused"},"404":{"description":"Not found"},"422":{"description":"Invalid attachment or conversation unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyMessagingError"}}}},"502":{"description":"Bad gateway"},"201":{"description":"Attachment staged for this actor and conversation for one day","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyMessagingUpload"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary"}}}}}},"security":[{"verifyMessagingSession":[]}],"summary":"Stage a private attachment without sending a message"}},"/api/v1/waitlist_applications":{"post":{"operationId":"api_v1_waitlist_applications","tags":["waitlist_applications"],"parameters":[],"responses":{"201":{"description":"Continue account creation, with the invite code saved in the browser session when supplied.","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"invite_signup":{"type":"boolean"}}}}}},"400":{"description":"A required field was missing."},"422":{"description":"A field failed validation, including an invalid invite code.","content":{"application/json":{"schema":{"type":"object","required":["error","details","field_errors"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}},"field_errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}},"security":[],"summary":"Continue signup, or validate a waitlist bypass code","description":"Unauthenticated. An invite_code alone validates a redeemable code and saves it in the browser session for subsequent password or OAuth signup. Validation does not redeem the code or create an account or waitlist row. Without a code, legacy name/email submissions continue to account creation; signup admission is enforced by the authentication endpoints.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","required":["invite_code"],"properties":{"name":{"type":"string"},"email":{"type":"string","format":"email"},"invite_code":{"type":"string","minLength":1,"description":"Waitlist bypass code. May be submitted without name or email."},"use_case":{"type":"string","enum":["personal","company"]},"company_name":{"type":"string"},"company_size":{"type":"string"}}},{"type":"object","required":["name","email"],"properties":{"name":{"type":"string"},"email":{"type":"string","format":"email"},"invite_code":{"type":"string","minLength":1,"description":"Waitlist bypass code. May be submitted without name or email."},"use_case":{"type":"string","enum":["personal","company"]},"company_name":{"type":"string"},"company_size":{"type":"string"}}}]}}}}}},"/api/v1/webhooks/gitlab/{connection_key}":{"post":{"operationId":"post_api_v1_webhooks_gitlab_connection_key_","tags":["webhooks"],"parameters":[{"name":"connection_key","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity"},"502":{"description":"Bad gateway"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[{"bearerAuth":[]}]}},"/v1/mcp/spark":{"post":{"operationId":"spark_mcp","tags":["mcp"],"summary":"Use the Spark agent-only MCP server","description":"Stateless Streamable HTTP JSON-RPC. Discovery and calls expose only agent tools. OAuth uses the Spark resource audience and agents:read or agents:read agents:write; personal API tokens also retain their normal membership and agent permissions.","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["jsonrpc","method"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"type":["string","integer"]},"method":{"type":"string"},"params":{"type":"object","additionalProperties":true}}}}}},"responses":{"200":{"description":"JSON-RPC result or error; tool failures have isError true in the result","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Notification accepted"},"400":{"description":"Unsupported or mismatched MCP protocol metadata"},"401":{"description":"Missing","expired or wrong-audience token; WWW-Authenticate links to Spark protected-resource metadata":null},"403":{"description":"Untrusted request origin"},"413":{"description":"Request exceeds two MiB"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"},"clawderHarnessProxy":{"type":"http","scheme":"bearer","description":"A sandbox thread's per-turn stand-in token. Model credentials are never accepted or returned."},"clawderTenantBridge":{"type":"http","scheme":"bearer","description":"Private tenant bridge credential. Personal API tokens are not accepted."},"clawderTelemetryCallback":{"type":"http","scheme":"bearer","description":"Current Enterprise runtime callback credential; browser sessions and hosted worker credentials are not accepted."},"clawderSearchBridge":{"type":"apiKey","in":"header","name":"x-api-key","description":"Private tenant bridge credential. Personal API tokens and Parallel provider credentials are not accepted."},"DeviceIngressServiceKey":{"type":"http","scheme":"bearer","description":"Namespace-scoped read-only native ingress credential, invalidated by namespace retirement or generation changes. Browser sessions, user API tokens, OCE worker and operator credentials cannot replace it."},"DockerBuilderGatewayKey":{"type":"apiKey","in":"header","name":"X-Com-Builder-Gateway-Key"},"RunnerCheckoutToken":{"type":"http","scheme":"bearer","description":"Signed credential bound to one active runner invocation attempt"},"RunnerScaleSetBrokerToken":{"type":"http","scheme":"bearer","description":"Revocable Boxmad control-plane credential for one configured repository/class pool"},"RunnerSupplyAdmissionToken":{"type":"http","scheme":"bearer","description":"Expiring credential bound to one active single-use runner supply and GitHub runner ID"},"browserSession":{"type":"apiKey","in":"cookie","name":"_vex_api_session","description":"Browser session cookie issued by login; deployments may configure the cookie name."},"csrfToken":{"type":"apiKey","in":"header","name":"X-CSRF-Token"},"executorLease":{"type":"apiKey","in":"header","name":"X-Vex-Lease-Token"},"verifyMessagingSession":{"type":"apiKey","in":"cookie","name":"__Host-verify_messages"}},"schemas":{"AccountEmail":{"type":"object","required":["id","email","account","commit_author","verified","verification_status","can_delete","can_set_account","can_set_commit_author","can_resend_verification"],"properties":{"id":{"type":"string"},"email":{"type":"string","format":"email"},"account":{"type":"boolean"},"commit_author":{"type":"boolean"},"verified":{"type":"boolean"},"verification_status":{"type":"string","enum":["verified","unverified"]},"can_delete":{"type":"boolean"},"can_set_account":{"type":"boolean"},"can_set_commit_author":{"type":"boolean"},"can_resend_verification":{"type":"boolean"}}},"AccountEmailsPage":{"type":"object","required":["emails"],"properties":{"emails":{"type":"array","items":{"$ref":"#/components/schemas/AccountEmail"}},"message":{"type":"string"}}},"OrganizationAgentAppInstall":{"type":"object","properties":{"installed":{"type":"boolean"}},"required":["installed"],"additionalProperties":false},"OrganizationAgentApps":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationAgentApp"}},"next_cursor":{"type":["string","null"],"description":"Pass as cursor to load older apps"},"install_targets":{"type":"array","description":"Active agents the viewer owns or manages, which they can install apps on","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false}}},"required":["items","next_cursor","install_targets"],"additionalProperties":false},"OrganizationAgentAppAgent":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"url_slug":{"type":["string","null"],"description":"Present when the viewer can open the agent"}},"required":["id","name","url_slug"],"additionalProperties":false},"OrganizationAgentApp":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"url":{"type":"string"},"mcp_url":{"type":["string","null"]},"visibility":{"type":"string","enum":["public","org"]},"deployments_count":{"type":"integer","description":"Increases with every deploy of the site"},"can_message":{"type":"boolean","description":"The viewer may send input to the author agent"},"author":{"$ref":"#/components/schemas/OrganizationAgentAppAgent"},"owner":{"type":"object","description":"The person who controls the author agent","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"thread":{"description":"The thread that published the app, when the viewer can open the author agent","oneOf":[{"type":"null"},{"type":"object","properties":{"id":{"type":"string"},"title":{"type":["string","null"]}},"required":["id","title"],"additionalProperties":false}]},"installed_by":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationAgentAppAgent"}},"install_count":{"type":"integer"},"hidden_install_count":{"type":"integer","description":"Installs by agents the viewer cannot open"},"installed_target_ids":{"type":"array","items":{"type":"string"},"description":"Install targets of the viewer that have this app installed"}},"required":["id","title","description","url","mcp_url","visibility","deployments_count","can_message","author","owner","thread","installed_by","install_count","hidden_install_count","installed_target_ids"],"additionalProperties":false},"GitSealedAgentCheckpoint":{"type":"object","required":["id","organization_id","repository_id","user_id","vcs_agent_session_id","external_checkpoint_id","sequence_number","capture_kind","status","content_type","compression","checksum_sha256","uncompressed_checksum_sha256","compressed_size_bytes","uncompressed_size_bytes","scrubber_version","redaction_count","metadata","git_commit_sha","captured_at","uploaded_at","tombstoned_at","purge_after","purge_started_at","purged_at","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"repository_id":{"type":"string"},"user_id":{"type":"string"},"vcs_agent_session_id":{"type":"string"},"external_checkpoint_id":{"type":"string"},"sequence_number":{"type":"integer","minimum":1},"capture_kind":{"type":"string","enum":["commit","lifecycle","manual"]},"status":{"type":"string","enum":["pending","uploaded"]},"content_type":{"type":"string"},"compression":{"type":"string"},"checksum_sha256":{"type":"string"},"uncompressed_checksum_sha256":{"type":"string"},"compressed_size_bytes":{"type":"integer"},"uncompressed_size_bytes":{"type":"integer"},"scrubber_version":{"type":"string"},"redaction_count":{"type":"integer"},"metadata":{"type":"object","additionalProperties":true},"git_commit_sha":{"type":"string","pattern":"^[0-9a-f]{40}$"},"captured_at":{"type":"string","format":"date-time"},"uploaded_at":{"type":"string","format":"date-time","nullable":true},"tombstoned_at":{"type":"string","format":"date-time","nullable":true},"purge_after":{"type":"string","format":"date-time","nullable":true},"purge_started_at":{"type":"string","format":"date-time","nullable":true},"purged_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"AgentConnectionRecord":{"type":"object","properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"user_id":{"type":"string"},"name":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"toolkit":{"type":"string"},"status":{"type":"string","enum":["pending","active","expired","revoked","error"]},"generation":{"type":"integer"},"failure_code":{"type":"string","nullable":true},"authorized_at":{"type":"string","nullable":true},"checked_at":{"type":"string","nullable":true},"revoked_at":{"type":"string","nullable":true},"admin_disabled_at":{"type":"string","format":"date-time","nullable":true},"owner_name":{"type":"string"},"ownership_kind":{"type":"string","enum":["personal","organization"]},"custodian_id":{"type":"string","nullable":true},"provider_disabled_reason":{"type":["string","null"]},"provider_identity":{"$ref":"#/components/schemas/ProviderIdentity"}},"required":["id","organization_id","user_id","name","created_at","updated_at","toolkit","status","generation","failure_code","authorized_at","checked_at","revoked_at","ownership_kind","custodian_id","provider_identity"]},"AutomationConnectionGrantRecord":{"type":"object","properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"agent_connection_id":{"type":"string"},"user_id":{"type":"string"},"automation_id":{"type":"string"},"created_at":{"type":"string"},"revision":{"type":"integer"},"connection_generation":{"type":"integer"},"status":{"type":"string","enum":["active","revoked"]},"actions":{"type":"array","minItems":1,"maxItems":30,"items":{"type":"object","properties":{"tool":{"type":"string"},"mode":{"type":"string","enum":["approval_required","preauthorized"]},"arguments":{"type":"object","additionalProperties":true},"property_types":{"type":"object","additionalProperties":{"type":"string","enum":["title","rich_text","number","checkbox","date"]}},"resources":{"type":"array","items":{"type":"string"}}},"required":["tool","mode","arguments","resources"]}},"revoked_at":{"type":"string","nullable":true},"usable":{"type":"boolean"}},"required":["id","organization_id","agent_connection_id","user_id","automation_id","created_at","revision","connection_generation","status","actions","revoked_at","usable"]},"AgentConnectionAccessRecord":{"type":"object","properties":{"id":{"type":"string"},"automation_connection_grant_id":{"type":"string"},"user_id":{"type":"string"},"authorized_by_id":{"type":"string"},"member_name":{"type":"string"},"created_at":{"type":"string"},"roles":{"type":"array","items":{"type":"string","enum":["invoke","approve"]},"minItems":1,"maxItems":2,"uniqueItems":true},"usable":{"type":"boolean"},"revoked_at":{"type":["string","null"]}},"required":["id","automation_connection_grant_id","user_id","authorized_by_id","member_name","created_at","roles","usable","revoked_at"]},"AgentIntegrationManifest":{"type":"object","properties":{"toolkit":{"type":"string"},"name":{"type":"string"},"schema_version":{"type":"integer","enum":[2]},"version":{"type":"string"},"policy_digest":{"type":"string"},"authentication":{"type":"string","enum":["composio_connect_link","spacesheep_oauth","unipile_hosted_auth"]},"certification":{"type":"string","enum":["preview","unavailable"]},"actions":{"type":"array","items":{"type":"object","required":["slug","resource_argument","allowed_arguments","input_schema","name","write"],"properties":{"slug":{"type":"string"},"resource_argument":{"type":"string"},"allowed_arguments":{"type":"array","items":{"type":"string"}},"input_schema":{"type":"object","additionalProperties":true},"name":{"type":"string"},"write":{"type":"boolean"}}}},"triggers":{"type":"array","items":{"$ref":"#/components/schemas/AgentTriggerDefinition"}},"limits":{"type":"object","required":["resources_per_action","response_bytes"],"properties":{"resources_per_action":{"type":"integer"},"response_bytes":{"type":"integer"}}},"consent":{"type":"object","nullable":true,"required":["method","method_label","provider_app","permission_model","summary","limitations","configured_scopes","effective_grants","checked_at","provenance","provider_consent_branding","branding_summary","verification_summary","sources","upstream_only_methods"],"properties":{"method":{"type":"string","enum":["OAUTH2","DCR_OAUTH"]},"method_label":{"type":"string"},"provider_app":{"type":"string","enum":["composio_managed","dynamic_registration"]},"permission_model":{"type":"string","enum":["oauth_scopes","shared_pages_and_capabilities","workspace_and_plan"]},"summary":{"type":"string"},"limitations":{"type":"string"},"configured_scopes":{"type":"array","items":{"type":"string"}},"effective_grants":{"type":"string","enum":["unknown"]},"checked_at":{"type":"string"},"provenance":{"type":"string"},"provider_consent_branding":{"type":"string","enum":["unverified"]},"branding_summary":{"type":"string"},"verification_summary":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"upstream_only_methods":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"disabled_reason":{"type":["string","null"]},"agent_tools":{"type":"boolean"},"can_create_account":{"type":"boolean","description":"Whether another account can be created directly from this provider. Custom MCP endpoints use the MCP setup form."},"catalog_section":{"type":"string","enum":["generative_media","ai_machine_learning","productivity_project_management","communication","crm_sales_support","marketing_social","search_web_data","analytics_data","developer_tools_devops","documents_files","design_creative","finance_accounting","ecommerce","scheduling_booking","hr_recruiting","workflow_automation","media_entertainment","education","security_identity","apps"],"description":"Server-owned grouping in the agent integration catalog."},"category":{"type":"string","description":"Short product label, such as CRM or Email."},"description":{"type":"string","description":"One-line catalog description of the app."}},"required":["toolkit","name","schema_version","version","policy_digest","authentication","certification","actions","triggers","limits","consent"]},"ProviderIdentity":{"type":"object","additionalProperties":false,"required":["status","account_label","workspace_label","checked_at"],"properties":{"status":{"type":"string","enum":["verified","unavailable"]},"account_label":{"type":"string","nullable":true},"workspace_label":{"type":"string","nullable":true},"checked_at":{"type":"string","format":"date-time","nullable":true}}},"AgentEnvironment":{"type":"object","additionalProperties":false,"required":["variables","version","can_manage"],"properties":{"variables":{"type":"array","items":{"type":"object","required":["name","setup_only"],"additionalProperties":false,"properties":{"name":{"type":"string"},"setup_only":{"type":"boolean","description":"Only a sandbox thread's setup commands receive this variable."}}}},"version":{"type":"integer","minimum":0},"can_manage":{"type":"boolean"}}},"AgentEnvironmentInput":{"type":"object","additionalProperties":false,"description":"Send value (null deletes the variable), setup_only, or both.","required":["name","expected_version"],"properties":{"name":{"type":"string","maxLength":128},"value":{"type":["string","null"],"maxLength":32768},"expected_version":{"type":"integer","minimum":0},"setup_only":{"type":"boolean"}}},"AgentGithubInstallation":{"type":"object","required":["id","account_login","account_avatar_url","manage_access_url","connection_status","connection_status_label","repository_count","repository_count_label","repository_error","repositories"],"properties":{"id":{"type":"string"},"account_login":{"type":"string"},"account_avatar_url":{"type":["string","null"]},"manage_access_url":{"type":"string"},"connection_status":{"type":"string","enum":["connected","needs_attention","could_not_verify"]},"connection_status_label":{"type":"string"},"repository_count":{"type":["integer","null"]},"repository_count_label":{"type":"string"},"repository_error":{"type":["string","null"]},"repositories":{"type":"array","items":{"type":"object","required":["id","full_name","url"],"properties":{"id":{"type":"string"},"full_name":{"type":"string"},"url":{"type":"string"}}}}}},"AgentGithubIntegrations":{"type":"object","required":["can_manage","installations","installation","summary","connection_status"],"properties":{"can_manage":{"type":"boolean"},"summary":{"type":["string","null"]},"connection_status":{"type":"string","enum":["connected","needs_attention","not_connected"]},"installations":{"type":"array","items":{"$ref":"#/components/schemas/AgentGithubInstallation"}},"installation":{"anyOf":[{"$ref":"#/components/schemas/AgentGithubInstallation"},{"type":"null"}]}}},"AgentMarketplaceCatalog":{"type":"object","required":["listings","featured","sections","next_page","categories"],"properties":{"listings":{"type":"array","items":{"$ref":"#/components/schemas/AgentListing"}},"featured":{"type":"array","items":{"$ref":"#/components/schemas/AgentListing"}},"sections":{"type":"array","items":{"type":"object","required":["category","scope","listings","has_more"],"properties":{"category":{"type":"string","description":"The section's category; \"composal\" names the section of Composal's own listings."},"scope":{"type":"string","enum":["composal"],"nullable":true,"description":"The catalog scope that opens this section in full; null when its category does."},"listings":{"type":"array","items":{"$ref":"#/components/schemas/AgentListing"}},"has_more":{"type":"boolean"}}}},"next_page":{"type":"integer","nullable":true},"categories":{"type":"array","items":{"type":"string"}}}},"MarketplaceViewer":{"type":"object","description":"Who a public marketplace response was read for.","required":["signed_in","organization"],"properties":{"signed_in":{"type":"boolean"},"organization":{"type":"object","nullable":true,"description":"The organization the visitor browses as; null signed out or when agents are off there.","required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"}}}}},"PublicAgentMarketplaceCatalog":{"allOf":[{"$ref":"#/components/schemas/AgentMarketplaceCatalog"},{"type":"object","required":["viewer"],"properties":{"viewer":{"$ref":"#/components/schemas/MarketplaceViewer"}}}]},"PublicAgentListingDetailResponse":{"type":"object","required":["listing","viewer"],"properties":{"listing":{"$ref":"#/components/schemas/AgentListingDetail"},"viewer":{"$ref":"#/components/schemas/MarketplaceViewer"}}},"PublicAgentListingNotFound":{"type":"object","required":["error","viewer"],"properties":{"error":{"type":"string"},"viewer":{"$ref":"#/components/schemas/MarketplaceViewer"}}},"AgentListingVisibility":{"type":"string","enum":["organization","link","public"]},"AgentListingBundle":{"type":"object","required":["instructions"],"properties":{"instructions":{"type":"string"},"page_apps":{"type":"array","maxItems":5,"description":"Reviewed code templates belonging to the source agent. Each install gets new apps with empty storage.","items":{"$ref":"#/components/schemas/AgentListingPageAppReference"}},"memories":{"type":"array","items":{"type":"string"}},"skills":{"type":"array","items":{"$ref":"#/components/schemas/AgentListingSkill"}},"integrations":{"type":"array","items":{"type":"object","required":["toolkit"],"properties":{"toolkit":{"type":"string"},"reason":{"type":"string"}}}}}},"AgentListingPageAppReference":{"type":"object","additionalProperties":false,"required":["source_site_id","revision"],"properties":{"source_site_id":{"type":"string"},"revision":{"type":"string"}}},"AgentListingPageApp":{"type":"object","required":["source_site_id","revision","name","title","description","mcp_path","required_secrets","file_count"],"properties":{"source_site_id":{"type":"string"},"revision":{"type":"string","nullable":true},"name":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"mcp_path":{"type":"string","nullable":true},"required_secrets":{"type":"array","items":{"type":"string"}},"file_count":{"type":"integer"}}},"AgentListingPageAppChoice":{"allOf":[{"$ref":"#/components/schemas/AgentListingPageApp"},{"type":"object","required":["available"],"properties":{"available":{"type":"boolean"}}}]},"AgentListingSkill":{"type":"object","required":["name","description","body"],"properties":{"name":{"type":"string"},"description":{"type":"string"},"body":{"type":"string"}}},"AgentListing":{"type":"object","required":["id","slug","name","summary","category","visibility","installs_count","featured","version","publisher_name","organization_name","counts","integration_toolkits","can_manage","from_composal","catalog_key","publisher_avatar_url","created_at","updated_at"],"properties":{"id":{"type":"string"},"slug":{"type":"string","description":"Readable, permanent address segment: /marketplace/<slug>."},"name":{"type":"string"},"summary":{"type":"string"},"category":{"type":"string"},"visibility":{"$ref":"#/components/schemas/AgentListingVisibility"},"installs_count":{"type":"integer"},"featured":{"type":"boolean"},"version":{"type":"integer"},"publisher_name":{"type":"string","description":"\"Composal\" on listings Composal publishes."},"from_composal":{"type":"boolean","description":"One of Composal's ready-made listings."},"catalog_key":{"type":"string","nullable":true,"description":"Stable key of a Composal listing, which names its character; null for other listings."},"publisher_avatar_url":{"type":"string","nullable":true,"description":"The publisher's own profile picture; null for Composal's listings and publishers without one."},"organization_name":{"type":"string"},"counts":{"type":"object","required":["memories","skills","integrations","apps"],"properties":{"memories":{"type":"integer"},"skills":{"type":"integer"},"integrations":{"type":"integer"},"apps":{"type":"integer"}}},"integration_toolkits":{"type":"array","items":{"type":"string"}},"can_manage":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"AgentListingDetail":{"allOf":[{"$ref":"#/components/schemas/AgentListing"},{"type":"object","required":["explainer","instructions","memories","skills","integrations","page_apps","share_token"],"properties":{"page_apps":{"type":"array","items":{"$ref":"#/components/schemas/AgentListingPageApp"}},"explainer":{"type":"string","nullable":true,"description":"The listing's public write-up in Markdown."},"instructions":{"type":"string"},"memories":{"type":"array","items":{"type":"string"}},"skills":{"type":"array","items":{"$ref":"#/components/schemas/AgentListingSkill"}},"integrations":{"type":"array","items":{"type":"object","required":["toolkit","reason","name","connected"],"properties":{"toolkit":{"type":"string"},"reason":{"type":"string"},"name":{"type":"string"},"connected":{"type":"boolean","nullable":true,"description":"Whether the viewing organization already has a working account for this app; null on the signed-out public endpoints."}}}},"share_token":{"type":"string","nullable":true,"description":"Present only for people who manage the listing."}}}]},"AgentListingDetailResponse":{"type":"object","required":["listing"],"properties":{"listing":{"$ref":"#/components/schemas/AgentListingDetail"}}},"AgentListingInstallResponse":{"type":"object","required":["install"],"properties":{"install":{"type":"object","required":["listing_id","agent"],"properties":{"listing_id":{"type":"string"},"agent":{"type":"object","required":["id","name","url_slug"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"url_slug":{"type":"string"}}}}}}},"AgentRoderSessionPayload":{"type":"object","required":["organization_id"],"properties":{"organization_id":{"type":"string"},"repository_slug":{"type":"string","nullable":true},"github_repository":{"type":"string","nullable":true,"description":"Internal operator access to an explicit owner/name connected to this organization. Uses GitHub authentication directly for the normal coding workspace."},"session_purpose":{"type":"string","enum":["coding","browser_setup","onboarding"],"default":"coding"},"checkpoint_handoff":{"type":"object","additionalProperties":false,"required":["organization_slug","repository_slug","change_id","expected_commit_id","agent_checkpoint_id","purpose","max_bytes"],"properties":{"organization_slug":{"type":"string"},"repository_slug":{"type":"string"},"change_id":{"type":"string"},"expected_commit_id":{"type":"string"},"agent_checkpoint_id":{"type":"string"},"purpose":{"type":"string","enum":["ask_why","continue"]},"max_bytes":{"type":"integer","minimum":1,"maximum":24576}}}}},"AgentRoderSession":{"type":"object","required":["ws_url","token","expires_at","expires_in_seconds","workspace_dir","organization_id","mcp_token","model_provider","model","session_purpose","browser_collaboration_version","repository_slug"],"properties":{"repository_slug":{"type":"string","nullable":true},"session_purpose":{"type":"string","enum":["coding","browser_setup","onboarding"]},"browser_collaboration_version":{"type":"integer","enum":[0,1]},"ws_url":{"type":"string"},"token":{"type":"string"},"expires_at":{"type":"string","format":"date-time"},"expires_in_seconds":{"type":"integer","minimum":0,"description":"Remaining capability lifetime measured by the server when the response was created."},"workspace_dir":{"type":"string","description":"Compatibility root used to establish the SDK connection. workspace/list is authoritative for the active workspace."},"organization_id":{"type":"string"},"mcp_token":{"type":"string"},"model_provider":{"type":"string","nullable":true},"model":{"type":"string","nullable":true}}},"AgentRoderWorkspaceCredentials":{"type":"object","required":["clone_url","username","repository_spec","default_branch","author_name","author_email","token","api_token","expires_at","organization_id","repository_id","repository_slug"],"properties":{"clone_url":{"type":"string","format":"uri"},"username":{"type":"string","enum":["vex"]},"repository_spec":{"type":"string","description":"The explicitly selected physical repository address."},"default_branch":{"type":"string"},"author_name":{"type":"string"},"author_email":{"type":"string","format":"email"},"token":{"type":"string","format":"password","description":"Short-lived read/write repository credential. The raw value is returned once and only its digest is stored."},"api_token":{"type":"string","format":"password","description":"Short-lived personal access token for the spawning user. Installed into the sandbox CLI config so `vex` and API clients act as that user. The raw value is returned once and only its digest is stored.\n"},"expires_at":{"type":"string","format":"date-time"},"organization_id":{"type":"string"},"repository_id":{"type":"string"},"repository_slug":{"type":"string"}}},"AgentRoderWorkspaceCredentialRequest":{"type":"object","required":["required_lifetime_seconds"],"properties":{"required_lifetime_seconds":{"type":"integer","minimum":1,"maximum":3480,"description":"Lifetime the pending clone or command must be able to complete within."}}},"AgentRuntime":{"type":"object","required":["state","version","image","profile","memory_mb","can_manage","volume"],"additionalProperties":false,"properties":{"state":{"type":"string"},"version":{"type":"string"},"image":{"type":"string"},"profile":{"type":"string","enum":["development","desktop","custom","macos"]},"memory_mb":{"type":["integer","null"]},"can_manage":{"type":"boolean"},"volume":{"type":["object","null"],"additionalProperties":true},"provider":{"type":"string","enum":["blaxel","namespace","freestyle","exe_dev","superserve","e2b","daytona","vercel","modal"]},"platform":{"type":"string","enum":["linux","macos"]},"available_profiles":{"type":"array","items":{"type":"string","enum":["development","desktop","macos"]}},"can_reset":{"type":"boolean"}}},"AgentRuntimeInput":{"type":"object","required":["expected_version","memory_mb","acknowledge_reset"],"additionalProperties":false,"properties":{"expected_version":{"type":"string"},"memory_mb":{"type":"integer","minimum":2048,"maximum":32768,"multipleOf":1024},"profile":{"type":"string","enum":["development","desktop","macos"]},"acknowledge_reset":{"type":"boolean","const":true}}},"AgentRuntimeResetInput":{"type":"object","additionalProperties":false,"required":["expected_version","acknowledge_data_loss"],"properties":{"expected_version":{"type":"string","pattern":"^[a-f0-9]{64}$"},"acknowledge_data_loss":{"type":"boolean","const":true}}},"AgentSandboxIntegration":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"provider":{"type":"string","enum":["namespace","freestyle","exe_dev","superserve","e2b","daytona","vercel","modal"]},"configuration":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"integer"}]}},"enabled":{"type":"boolean"},"version":{"type":"integer"}},"required":["id","name","provider","configuration","enabled","version"],"additionalProperties":false},"AgentSandboxCatalogEntry":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"credentials":{"type":"array","items":{"type":"string"}},"settings":{"type":"array","items":{"type":"string"}},"sizing":{"type":"string"}},"required":["id","name","credentials","settings","sizing"],"additionalProperties":false},"AgentSandboxIntegrations":{"type":"object","properties":{"integrations":{"type":"array","items":{"$ref":"#/components/schemas/AgentSandboxIntegration"}},"catalog":{"type":"array","items":{"$ref":"#/components/schemas/AgentSandboxCatalogEntry"}},"can_manage":{"type":"boolean"},"connected_profiles":{"type":"object","description":"Connected profiles per provider across the organization. A provider whose profiles are all disconnected maps to 0; one without profiles is absent.","additionalProperties":{"type":"integer"}}},"required":["integrations","catalog","can_manage","connected_profiles"],"additionalProperties":false},"AgentSandboxSelection":{"type":"object","properties":{"integration_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"generation":{"type":"integer"},"status":{"type":"string"},"provider":{"type":"string"},"workspace_key":{"type":"string"},"remote_id":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["integration_id","generation","status","provider","workspace_key","remote_id"],"additionalProperties":false},"AgentSandboxSettings":{"type":"object","properties":{"selection":{"$ref":"#/components/schemas/AgentSandboxSelection"},"integrations":{"type":"array","items":{"$ref":"#/components/schemas/AgentSandboxIntegration"}},"can_manage":{"type":"boolean"}},"required":["selection","integrations","can_manage"],"additionalProperties":false},"AgentSandboxIntegrationInput":{"type":"object","properties":{"name":{"type":"string"},"provider":{"type":"string","enum":["namespace","freestyle","exe_dev","superserve","e2b","daytona","vercel","modal"]},"credentials":{"type":"object","additionalProperties":{"type":"string"}},"configuration":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"integer"}]}}},"required":["name","provider","credentials","configuration"],"additionalProperties":false},"AgentSandboxIntegrationUpdate":{"type":"object","properties":{"name":{"type":"string"},"credentials":{"type":"object","additionalProperties":{"type":"string"}},"enabled":{"type":"boolean"},"version":{"type":"integer"}},"required":["version"],"additionalProperties":false},"AgentSandboxSelectionInput":{"type":"object","properties":{"integration_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"expected_generation":{"type":"integer"}},"required":["integration_id","expected_generation"],"additionalProperties":false},"AgentSessionTranscriptEvent":{"type":"object","required":["index","kind","name","summary","skill_names","category","turn_index","role","timestamp","text","truncated"],"properties":{"index":{"type":"integer","description":"0-based position in the full flattened transcript."},"kind":{"type":"string","enum":["message","reasoning","tool_use","tool_result","lifecycle","other"]},"name":{"type":"string","nullable":true,"description":"Rails-owned hook, tool, harness row-type, or attachment-type name, or null when the source carried none."},"summary":{"type":"string","nullable":true,"description":"Rails-owned short description of a tool input, or null when no useful detail was present."},"skill_names":{"type":"array","items":{"type":"string"},"description":"Skill names Rails identified from this tool call."},"category":{"type":"string","enum":["context","prompt","response","reasoning","tool","lifecycle","system","attachment","other"],"description":"Rails-owned conversation meaning for this event. `system` is harness bookkeeping (mode, title, file-history rows), `attachment` is context the harness injected, and `other` is a row shape Vex does not recognize; the browser hides all three by default."},"turn_index":{"type":"integer","nullable":true,"description":"0-based conversation turn, or null for session context and events before the first prompt."},"role":{"type":"string","nullable":true,"enum":["user","assistant","system","developer","tool",null]},"timestamp":{"type":"string","nullable":true,"description":"ISO8601 capture time, or null when the source carried none."},"text":{"type":"string","description":"Sanitized, per-event byte-capped display text."},"truncated":{"type":"boolean","description":"True when `text` was truncated at the per-event cap."}}},"AgentSessionTranscriptPage":{"type":"object","required":["session_id","checkpoint_id","events","has_more_before","prev_cursor","total_events"],"properties":{"session_id":{"type":"string"},"checkpoint_id":{"type":"string"},"events":{"type":"array","items":{"$ref":"#/components/schemas/AgentSessionTranscriptEvent"}},"has_more_before":{"type":"boolean","description":"True when older events exist before this page."},"prev_cursor":{"type":"string","nullable":true,"description":"Cursor for the previous (older) page, or null at the start."},"total_events":{"type":"integer","description":"Total events in the resolved checkpoint's transcript."}}},"AgentSessionRoderHandoffConnection":{"$ref":"#/components/schemas/AgentRoderSession"},"AgentSessionRoderHandoff":{"type":"object","required":["roder_session","session_id","checkpoint_id","handoff","path"],"properties":{"roder_session":{"$ref":"#/components/schemas/AgentSessionRoderHandoffConnection"},"session_id":{"type":"string"},"checkpoint_id":{"type":"string"},"handoff":{"type":"object","description":"The resolved, non-secret handoff coordinate (citation) plus purpose and max_bytes.","required":["organization_slug","repository_slug","session_id","agent_checkpoint_id","purpose","max_bytes"],"properties":{"organization_slug":{"type":"string"},"repository_slug":{"type":"string"},"session_id":{"type":"string"},"agent_checkpoint_id":{"type":"string"},"purpose":{"type":"string"},"max_bytes":{"type":"integer"}}},"path":{"type":"string","description":"In-app path to the org Agents workspace where the conversation opens."}}},"OrganizationAgentSites":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationAgentSite"}},"next_cursor":{"type":["string","null"],"description":"Pass as cursor to load sites deployed earlier"}},"required":["items","next_cursor"],"additionalProperties":false},"OrganizationAgentSite":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","description":"The site's DNS label"},"title":{"type":"string","description":"The team app title, or the site name read as words"},"description":{"type":["string","null"],"description":"The team app description, when the site is a team app"},"icon_url":{"type":["string","null"],"description":"Path of the site's generated icon, versioned by the picture; null until one is generated"},"url":{"type":"string"},"visibility":{"type":"string","enum":["public","org","private"]},"deployments_count":{"type":"integer","description":"Increases with every deploy of the site"},"can_message":{"type":"boolean","description":"The viewer may send input to the author agent"},"author":{"$ref":"#/components/schemas/OrganizationAgentAppAgent"},"owner":{"type":"object","description":"The person who controls the author agent","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"thread":{"description":"The thread that published the site as a team app, when the viewer can open the author agent","oneOf":[{"type":"null"},{"type":"object","properties":{"id":{"type":"string"},"title":{"type":["string","null"]}},"required":["id","title"],"additionalProperties":false}]}},"required":["id","name","title","description","icon_url","url","visibility","deployments_count","can_message","author","owner","thread"],"additionalProperties":false},"AgentSkillSourceInput":{"type":"object","description":"Either a pasted source or a marketplace plugin","properties":{"source":{"type":"string","description":"owner/repo, a GitHub or skills.sh link, or npx skills add owner/repo [--skill NAME ...]"},"marketplace":{"type":"string","enum":["skills_sh","claude","cursor","codex"]},"plugin":{"type":"string","description":"The marketplace entry id"}}},"AgentSkillMarketplaceEntry":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"category":{"type":["string","null"]},"installs":{"type":["integer","null"],"description":"skills.sh install count"},"source_label":{"type":"string"}},"required":["id","name","description","category","installs","source_label"],"additionalProperties":false},"AgentSkillPreview":{"type":"object","properties":{"source":{"type":"object","properties":{"kind":{"type":"string","enum":["github","skills_sh","claude","cursor","codex"]},"label":{"type":"string"},"repository":{"type":"string"},"revision":{"type":"string"},"url":{"type":"string"}},"required":["kind","label","repository","revision","url"],"additionalProperties":false},"skills":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"files_count":{"type":"integer"},"problem":{"type":["string","null"],"description":"Why the skill can't be added"}},"required":["name","description","files_count","problem"],"additionalProperties":false}}},"required":["source","skills"],"additionalProperties":false},"AgentSkillLibrary":{"type":"object","properties":{"can_manage_library":{"type":"boolean"},"pending":{"type":"boolean","description":"Some agent is still applying a change; check again shortly"},"agents":{"type":"array","description":"Active V2 agents the viewer can see whose owner is still a member","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"avatar":{"type":["string","null"]},"can_manage":{"type":"boolean"}},"required":["id","name","avatar","can_manage"],"additionalProperties":false}},"skills":{"type":"array","items":{"$ref":"#/components/schemas/AgentSkill"}}},"required":["can_manage_library","pending","agents","skills"],"additionalProperties":false},"AgentSkill":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"source_kind":{"type":"string","enum":["github","skills_sh","claude","cursor","codex"]},"source_label":{"type":"string"},"source_url":{"type":"string"},"revision":{"type":"string"},"files_count":{"type":"integer"},"enabled_by_default":{"type":"boolean","description":"New agents get the skill. With audience all, so does every agent that has not chosen otherwise"},"added_at":{"type":"string","format":"date-time"},"added_by":{"type":["string","null"]},"enabled_agent_count":{"type":"integer","description":"Listed agents the skill is on for"},"failed_agent_count":{"type":"integer","description":"Listed agents where delivery failed"},"agents":{"type":"array","items":{"type":"object","properties":{"agent_id":{"type":"string"},"enabled":{"type":["boolean","null"],"description":"The agent's own choice; null follows the default"},"effective":{"type":"boolean"},"delivery_state":{"type":["string","null"],"enum":["pending","installed","disabled","failed",null]},"delivery_error":{"type":["string","null"]}},"required":["agent_id","enabled","effective","delivery_state","delivery_error"],"additionalProperties":false}},"audience":{"type":"string","enum":["all","selected"],"description":"all while every listed agent has it and new agents get it"}},"required":["id","name","description","source_kind","source_label","source_url","revision","files_count","enabled_by_default","audience","added_at","added_by","enabled_agent_count","failed_agent_count","agents"],"additionalProperties":false},"AgentSkillAudienceInput":{"type":"object","required":["mode"],"additionalProperties":false,"properties":{"mode":{"type":"string","enum":["all","selected"],"description":"all: every agent now and later. selected: exactly agent_ids among agents the viewer manages"},"agent_ids":{"type":"array","items":{"type":"string"},"description":"With selected, the agents to have the skill"},"new_agents":{"type":"boolean","description":"With selected, whether agents created from now on get it; agents that already exist are unaffected"}}},"AgentSkillDetail":{"type":"object","additionalProperties":false,"required":["can_manage_library","pending","agents","skill","content","files"],"properties":{"can_manage_library":{"type":"boolean"},"pending":{"type":"boolean"},"agents":{"type":"array","description":"Active V2 agents the viewer can see whose owner is still a member","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"avatar":{"type":["string","null"]},"can_manage":{"type":"boolean"}},"required":["id","name","avatar","can_manage"],"additionalProperties":false}},"skill":{"$ref":"#/components/schemas/AgentSkill"},"content":{"type":"string","description":"The skill's SKILL.md"},"files":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["path","bytes"],"properties":{"path":{"type":"string"},"bytes":{"type":"integer"}}}}}},"AgentSwarmTaskConversation":{"type":"object","required":["task","activity","events","after_seq","next_after_seq","done","launched_at"],"properties":{"task":{"$ref":"#/components/schemas/AgentSwarmLiveTask"},"activity":{"type":"array","items":{"$ref":"#/components/schemas/AgentSwarmLiveActivityEvent"}},"events":{"type":"array","items":{"$ref":"#/components/schemas/AgentSwarmLiveEvent"}},"after_seq":{"type":"integer","minimum":0},"next_after_seq":{"type":"integer","minimum":0},"done":{"type":"boolean"},"launched_at":{"type":"string","format":"date-time"}}},"AgentSwarmActivityKind":{"type":"string","enum":["shell","shell_exit","read_file","write_file","commit","export","stack_post","acceptance","notice","harness","thought","message"]},"AgentSwarmActivityReport":{"type":"object","required":["kind","summary"],"properties":{"kind":{"$ref":"#/components/schemas/AgentSwarmActivityKind"},"ts":{"type":"string","format":"date-time"},"summary":{"type":"string","maxLength":512},"exit_code":{"type":"integer","nullable":true},"duration_ms":{"type":"integer","minimum":0,"nullable":true},"path":{"type":"string","maxLength":512,"nullable":true},"payload":{"type":"object","additionalProperties":true,"nullable":true}}},"AgentSwarmLiveActivityEvent":{"type":"object","required":["seq","kind","summary","exit_code","duration_ms","path","task_id","attempt_id","ts","at_ms","payload"],"properties":{"seq":{"type":"integer","minimum":1},"kind":{"$ref":"#/components/schemas/AgentSwarmActivityKind"},"summary":{"type":"string"},"exit_code":{"type":"integer","nullable":true},"duration_ms":{"type":"integer","nullable":true},"path":{"type":"string","nullable":true},"task_id":{"type":"string","nullable":true},"attempt_id":{"type":"string","nullable":true},"ts":{"type":"string","format":"date-time"},"at_ms":{"type":"integer","minimum":0},"payload":{"type":"object","additionalProperties":true}}},"AgentSwarmLiveEvent":{"type":"object","required":["id","kind","reason","task_id","attempt_id","ts","at_ms","payload","landing_entry"],"properties":{"id":{"type":"integer"},"kind":{"type":"string"},"reason":{"type":"string","nullable":true},"task_id":{"type":"string","nullable":true},"attempt_id":{"type":"string","nullable":true},"ts":{"type":"string","format":"date-time"},"at_ms":{"type":"integer","minimum":0},"payload":{"type":"object","additionalProperties":true},"landing_entry":{"oneOf":[{"$ref":"#/components/schemas/AgentSwarmLiveLandingEntry"},{"type":"null"}]}}},"AgentSwarmPullRequest":{"type":"object","required":["number","url","state"],"properties":{"number":{"type":"integer"},"url":{"type":"string","nullable":true},"state":{"type":"string","enum":["opened","open","closed","merged","failed"]}}},"AgentSwarmLiveTask":{"type":"object","required":["id","number","role","status","title","depth","position","iteration","failure_code","blocked_reason","parent_task_id","current_attempt_id","short_label","change_numbers","pull_requests","landing_state","plan_summary","plan_reason","started_at","finished_at","updated_at"],"properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":1},"role":{"type":"string","enum":["planner","subplanner","worker","restack","release_watch"]},"status":{"type":"string","enum":["queued","blocked","running","succeeded","failed","canceled","skipped"]},"title":{"type":"string","nullable":true},"depth":{"type":"integer","minimum":0},"position":{"type":"integer","minimum":0},"iteration":{"type":"integer","minimum":0},"failure_code":{"type":"string","nullable":true},"blocked_reason":{"type":"string","nullable":true},"parent_task_id":{"type":"string","nullable":true},"current_attempt_id":{"type":"string","nullable":true},"short_label":{"type":"string"},"change_numbers":{"type":"array","items":{"type":"integer"}},"pull_requests":{"type":"array","items":{"$ref":"#/components/schemas/AgentSwarmPullRequest"}},"landing_state":{"type":"string","nullable":true},"plan_summary":{"type":"string","nullable":true},"plan_reason":{"type":"string","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time"}}},"AgentSwarmLiveMachine":{"type":"object","required":["cpu_millicores","memory_mb"],"properties":{"cpu_millicores":{"type":"integer"},"memory_mb":{"type":"integer"}}},"AgentSwarmLiveBudget":{"type":"object","required":["usd_spent_nanodollars","usd_cap_nanodollars","tokens_used","tokens_cap","vcpu_seconds_used","vcpu_seconds_cap","gb_seconds_used","wall_clock_cap_seconds"],"properties":{"usd_spent_nanodollars":{"type":"integer","nullable":true},"usd_cap_nanodollars":{"type":"integer","nullable":true},"tokens_used":{"type":"integer","nullable":true},"tokens_cap":{"type":"integer","nullable":true},"vcpu_seconds_used":{"type":"integer","nullable":true},"vcpu_seconds_cap":{"type":"integer","nullable":true},"gb_seconds_used":{"type":"integer","nullable":true},"wall_clock_cap_seconds":{"type":"integer","nullable":true}}},"AgentSwarmLiveHeader":{"type":"object","required":["id","number","slug","goal","phase","outcome","status","launched_at","started_at","finished_at","active_workers","tasks_done","tasks_total","stacks_landed","budget","machine","master_tip","platform","github","base_bookmark","repository_slug","organization_slug"],"properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":1},"slug":{"type":"string"},"goal":{"type":"string","nullable":true},"phase":{"type":"string","enum":["planning","executing","landing","releasing","terminal"],"nullable":true},"outcome":{"type":"string","enum":["succeeded","partially_succeeded","failed","canceled","budget_exhausted"],"nullable":true},"status":{"type":"string","enum":["queued","running","succeeded","failed","canceled"]},"launched_at":{"type":"string","format":"date-time","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"active_workers":{"type":"integer","minimum":0},"tasks_done":{"type":"integer","minimum":0},"tasks_total":{"type":"integer","minimum":0},"stacks_landed":{"type":"integer","minimum":0},"budget":{"$ref":"#/components/schemas/AgentSwarmLiveBudget"},"machine":{"$ref":"#/components/schemas/AgentSwarmLiveMachine"},"master_tip":{"type":"string","nullable":true},"platform":{"type":"string","enum":["composal","github"]},"github":{"type":"object","nullable":true,"required":["commits","prs_opened","prs_merged"],"properties":{"commits":{"type":"integer","minimum":0},"prs_opened":{"type":"integer","minimum":0},"prs_merged":{"type":"integer","minimum":0}}},"base_bookmark":{"type":"string","nullable":true},"repository_slug":{"type":"string","nullable":true},"organization_slug":{"type":"string"}}},"AgentSwarmLiveLandingEntry":{"type":"object","required":["task_id","short_label","state","change_numbers","pull_requests","entry_id","queue_position","landed_commit","at"],"properties":{"task_id":{"type":"string"},"short_label":{"type":"string"},"state":{"type":"string","description":"held | released | requested | validating | ready | restack | landed | failed | revoked"},"change_numbers":{"type":"array","items":{"type":"integer"}},"pull_requests":{"type":"array","items":{"$ref":"#/components/schemas/AgentSwarmPullRequest"}},"entry_id":{"type":"string","nullable":true},"queue_position":{"type":"integer","nullable":true,"description":"The entry's place in the merge queue while it is still in it."},"landed_commit":{"type":"string","nullable":true,"description":"The first twelve characters of the commit the closure landed as."},"at":{"type":"string","format":"date-time"}}},"AgentSwarmLiveLanding":{"type":"object","required":["entries","master_tip"],"properties":{"entries":{"type":"array","items":{"$ref":"#/components/schemas/AgentSwarmLiveLandingEntry"}},"master_tip":{"type":"string","nullable":true}}},"AgentSwarmLivePage":{"type":"object","required":["swarm","tasks","landing","events","activity","activity_retained","server_time"],"properties":{"swarm":{"$ref":"#/components/schemas/AgentSwarmLiveHeader"},"tasks":{"type":"array","items":{"$ref":"#/components/schemas/AgentSwarmLiveTask"}},"landing":{"$ref":"#/components/schemas/AgentSwarmLiveLanding"},"events":{"type":"array","items":{"$ref":"#/components/schemas/AgentSwarmLiveEvent"}},"activity":{"type":"array","items":{"$ref":"#/components/schemas/AgentSwarmLiveActivityEvent"}},"activity_retained":{"type":"integer"},"server_time":{"type":"string","format":"date-time"}}},"AgentSwarmLiveActivityItem":{"type":"object","required":["source","event"],"properties":{"source":{"type":"string","enum":["activity"]},"event":{"$ref":"#/components/schemas/AgentSwarmLiveActivityEvent"}}},"AgentSwarmLiveEventItem":{"type":"object","required":["source","event"],"properties":{"source":{"type":"string","enum":["event"]},"event":{"$ref":"#/components/schemas/AgentSwarmLiveEvent"}}},"AgentSwarmLiveStreamItem":{"oneOf":[{"$ref":"#/components/schemas/AgentSwarmLiveActivityItem"},{"$ref":"#/components/schemas/AgentSwarmLiveEventItem"}]},"AgentSwarmLiveReplayPage":{"type":"object","required":["swarm","tasks","items","cursor","next_cursor","after_seq","after_event_id","done","limit","server_time"],"properties":{"swarm":{"$ref":"#/components/schemas/AgentSwarmLiveHeader"},"tasks":{"type":"array","items":{"$ref":"#/components/schemas/AgentSwarmLiveTask"}},"items":{"type":"array","items":{"$ref":"#/components/schemas/AgentSwarmLiveStreamItem"}},"cursor":{"type":"string","nullable":true},"next_cursor":{"type":"string","nullable":true},"after_seq":{"type":"integer","minimum":0},"after_event_id":{"type":"integer","minimum":0},"done":{"type":"boolean"},"limit":{"type":"integer","minimum":1},"server_time":{"type":"string","format":"date-time"}}},"AgentSwarm":{"type":"object","required":["id","organization_id","organization_slug","creator_user_id","repository_id","repository_slug","number","display_id","slug","status","phase","outcome","goal","base_bookmark","base_revision","deadline_at","canceled_at","scheduler_generation","policy","budget","usage","reserved","summary","environment","model_provider","model","base_ref","concurrency_key","task_template_json","queued_at","started_at","finished_at","created_at","updated_at","task_count","done_count","failed_count","canceled_count","skipped_count","queued_at_label","started_at_label","finished_at_label","created_at_label","updated_at_label","github"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"organization_slug":{"type":"string","nullable":true},"repository_slug":{"type":"string","nullable":true},"creator_user_id":{"type":"string","nullable":true},"repository_id":{"type":"string","nullable":true},"phase":{"type":"string","enum":["planning","executing","landing","releasing","terminal"],"nullable":true},"outcome":{"type":"string","enum":["succeeded","partially_succeeded","failed","canceled","budget_exhausted"],"nullable":true},"goal":{"type":"string","nullable":true},"base_bookmark":{"type":"string","nullable":true},"base_revision":{"type":"string","nullable":true},"deadline_at":{"type":"string","format":"date-time","nullable":true},"canceled_at":{"type":"string","format":"date-time","nullable":true},"scheduler_generation":{"type":"integer","minimum":0},"policy":{"type":"object","additionalProperties":true},"budget":{"type":"object","additionalProperties":true},"usage":{"type":"object","additionalProperties":true},"reserved":{"type":"object","additionalProperties":true},"summary":{"type":"object","additionalProperties":true},"environment":{"type":"object","additionalProperties":true},"canceled_count":{"type":"integer","minimum":0},"skipped_count":{"type":"integer","minimum":0},"github":{"type":"object","required":["platform","commits","prs_opened","prs_merged"],"properties":{"platform":{"type":"string","enum":["composal","github"]},"commits":{"type":"integer","minimum":0},"prs_opened":{"type":"integer","minimum":0},"prs_merged":{"type":"integer","minimum":0}}},"number":{"type":"integer","minimum":1},"display_id":{"type":"integer","minimum":1},"slug":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","canceled"]},"model_provider":{"type":"string","nullable":true},"model":{"type":"string","nullable":true},"base_ref":{"type":"string","nullable":true},"concurrency_key":{"type":"string","nullable":true},"task_template_json":{"type":"string","nullable":true},"queued_at":{"type":"string","format":"date-time","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"task_count":{"type":"integer","minimum":0},"done_count":{"type":"integer","minimum":0},"failed_count":{"type":"integer","minimum":0},"queued_at_label":{"type":"string","nullable":true},"started_at_label":{"type":"string","nullable":true},"finished_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"AgentSwarmTask":{"type":"object","required":["id","organization_id","agent_swarm_id","assigned_runner_id","number","display_id","repo_url","prompt","status","role","depth","position","iteration","title","failure_code","blocked_reason","environment_profile","harness","input_revision","model_provider","model","reasoning_effort","deadline_at","parent_task_id","stack_after_task_id","depends_on_task_ids","current_attempt_id","owned_paths","acceptance_commands","result","landing_state","run_id","changes","recent_activity","commit_sha_result","diff_artifact_url","error_message","retry_number","queued_at","started_at","finished_at","created_at","updated_at","queued_at_label","started_at_label","finished_at_label","created_at_label","updated_at_label","commit_count"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"agent_swarm_id":{"type":"string"},"assigned_runner_id":{"type":"string","nullable":true},"number":{"type":"integer","minimum":1},"display_id":{"type":"integer","minimum":1},"repo_url":{"type":"string","format":"uri"},"prompt":{"type":"string"},"status":{"type":"string","enum":["queued","blocked","running","succeeded","failed","canceled","skipped"]},"role":{"type":"string","enum":["planner","subplanner","worker","restack","release_watch"]},"depth":{"type":"integer","minimum":0},"position":{"type":"integer","minimum":0},"iteration":{"type":"integer","minimum":0},"title":{"type":"string","nullable":true},"failure_code":{"type":"string","nullable":true},"blocked_reason":{"type":"string","enum":["dependency_pending","dependency_failed"],"nullable":true},"environment_profile":{"type":"string","nullable":true},"harness":{"type":"string","enum":["roder","codex"]},"input_revision":{"type":"string","nullable":true},"model_provider":{"type":"string","nullable":true},"model":{"type":"string","nullable":true},"reasoning_effort":{"type":"string","nullable":true},"deadline_at":{"type":"string","format":"date-time","nullable":true},"parent_task_id":{"type":"string","nullable":true},"stack_after_task_id":{"type":"string","nullable":true},"depends_on_task_ids":{"type":"array","items":{"type":"string"}},"current_attempt_id":{"type":"string","nullable":true},"owned_paths":{"type":"array","items":{"type":"string"}},"acceptance_commands":{"type":"array","items":{"type":"object","additionalProperties":true}},"result":{"type":"object","additionalProperties":true},"landing_state":{"type":"string","enum":["none","held","requested","queued","landed","failed"]},"run_id":{"type":"string","nullable":true},"commit_count":{"type":"integer","minimum":0},"changes":{"type":"array","items":{"type":"object","required":["number","title","status","pull_request"],"properties":{"number":{"type":"integer","nullable":true},"title":{"type":"string"},"status":{"type":"string"},"pull_request":{"type":"object","nullable":true,"required":["change_number","number","url","state","branch"],"properties":{"change_number":{"type":"integer","nullable":true},"number":{"type":"integer"},"url":{"type":"string","nullable":true},"state":{"type":"string"},"branch":{"type":"string","nullable":true}}}}}},"recent_activity":{"type":"array","maxItems":12,"items":{"type":"object","required":["seq","kind","summary","exit_code","ts"],"properties":{"seq":{"type":"integer","minimum":1},"kind":{"$ref":"#/components/schemas/AgentSwarmActivityKind"},"summary":{"type":"string"},"exit_code":{"type":"integer","nullable":true},"ts":{"type":"string","format":"date-time"}}}},"commit_sha_result":{"type":"string","nullable":true},"diff_artifact_url":{"type":"string","format":"uri","nullable":true},"error_message":{"type":"string","nullable":true},"retry_number":{"type":"integer","minimum":0},"queued_at":{"type":"string","format":"date-time","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"queued_at_label":{"type":"string","nullable":true},"started_at_label":{"type":"string","nullable":true},"finished_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"AgentSwarmDetail":{"allOf":[{"$ref":"#/components/schemas/AgentSwarm"},{"type":"object","required":["tasks"],"properties":{"tasks":{"type":"array","maxItems":25,"items":{"$ref":"#/components/schemas/AgentSwarmTask"}}}}]},"AgentSwarmTaskCreatePayload":{"type":"object","required":["prompt"],"properties":{"repo_url":{"type":"string","format":"uri"},"prompt":{"type":"string"},"title":{"type":"string"},"role":{"type":"string","enum":["worker","subplanner"]},"owned_paths":{"type":"array","items":{"type":"string"}},"acceptance_commands":{"type":"array","items":{"type":"object","required":["command"],"properties":{"command":{"type":"string"},"timeout_seconds":{"type":"integer","minimum":1,"maximum":600}}}},"depends_on":{"type":"array","items":{"type":"integer","minimum":0}},"stack_after":{"type":"integer","minimum":0,"nullable":true},"environment_profile":{"type":"string"},"harness":{"type":"string","enum":["roder","codex"]}}},"AgentSwarmCreatePayload":{"description":"PRD 146: the goal form (`goal` + `repository`) starts a planned swarm; the legacy `tasks[]` form materializes a one-level tree. One of `goal` or `tasks` is required.","type":"object","required":["organization_slug"],"properties":{"organization_slug":{"type":"string"},"slug":{"type":"string"},"goal":{"type":"string"},"repository":{"type":"string","description":"Repository slug inside the organization"},"base_bookmark":{"type":"string","description":"An existing bookmark to start from and land on; the plain form of `target.kind = bookmark`."},"target":{"type":"object","description":"Where the swarm lands. `trunk` is the repository's default branch; `bookmark` an existing bookmark named by `name`; `new_bookmark` a bookmark named by `name` that the launch creates at trunk's head. Every worker starts from the target's head and every Change is opened against it; its merge queue is found or created on the first landing.","required":["kind"],"properties":{"kind":{"type":"string","enum":["trunk","bookmark","new_bookmark"]},"name":{"type":"string","maxLength":128}}},"base_revision":{"type":"string","description":"64-hex commit id; skips the head lookup"},"policy":{"type":"object","additionalProperties":true,"description":"Every key is optional and defaults to AgentSwarm::POLICY_DEFAULTS.","properties":{"platform":{"type":"string","enum":["composal","github"]},"max_parallel_workers":{"type":"integer","minimum":1},"max_depth":{"type":"integer","minimum":1},"max_subplanner_iterations":{"type":"integer","minimum":1},"max_root_iterations":{"type":"integer","minimum":1},"max_tasks":{"type":"integer","minimum":1},"max_runs":{"type":"integer","minimum":1},"max_task_attempts":{"type":"integer","minimum":1},"task_deadline_seconds":{"type":"integer","minimum":60},"swarm_deadline_seconds":{"type":"integer","minimum":60},"landing":{"type":"string"},"deploy":{"type":"string"},"restack_attempts":{"type":"integer","minimum":0},"reserve_org_slot":{"type":"boolean"},"submit_on_failure":{"type":"boolean"},"plan_only":{"type":"boolean"},"environment_profile":{"type":"string"},"models":{"type":"object","description":"Per-role model overrides; roles left out keep the platform defaults.","additionalProperties":{"type":"object","required":["model"],"properties":{"model_provider":{"type":"string","default":"openai"},"model":{"type":"string"},"reasoning_effort":{"type":"string","enum":["low","medium","high","xhigh","max","ultra"]}}}}}},"budget":{"type":"object","additionalProperties":true,"properties":{"max_usd":{"type":"number","minimum":0},"max_wall_clock_seconds":{"type":"integer","minimum":60},"cleanup_reserve_usd":{"type":"number","minimum":0},"build_reserve_usd":{"type":"number","minimum":0},"max_build_seconds":{"type":"integer","minimum":0}}},"environment":{"type":"object","additionalProperties":true},"model_provider":{"type":"string","deprecated":true},"model":{"type":"string","deprecated":true},"base_ref":{"type":"string","deprecated":true},"concurrency_key":{"type":"string","deprecated":true},"task_template_json":{"type":"string","deprecated":true},"queued_at":{"type":"string","format":"date-time","deprecated":true},"tasks":{"type":"array","items":{"$ref":"#/components/schemas/AgentSwarmTaskCreatePayload"}}}},"AgentSwarmPolicy":{"type":"object","required":["policy","budget","environment","scheduler_generation"],"properties":{"policy":{"type":"object","additionalProperties":true},"budget":{"type":"object","additionalProperties":true},"environment":{"type":"object","additionalProperties":true},"scheduler_generation":{"type":"integer","minimum":0}}},"AgentSwarmEvent":{"type":"object","required":["id","agent_swarm_id","task_id","attempt_id","kind","reason","scheduler_generation","payload","created_at","created_at_label"],"properties":{"id":{"type":"integer"},"agent_swarm_id":{"type":"string"},"task_id":{"type":"string","nullable":true},"attempt_id":{"type":"string","nullable":true},"kind":{"type":"string"},"reason":{"type":"string","nullable":true},"scheduler_generation":{"type":"integer","nullable":true},"payload":{"type":"object","additionalProperties":true},"created_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true}}},"RoderRunResultPayload":{"type":"object","required":["result_contract","result"],"properties":{"result_contract":{"type":"string"},"result":{"type":"object","additionalProperties":true}}},"RoderRunResultReceipt":{"type":"object","required":["id","status","result_contract"],"properties":{"id":{"type":"string"},"status":{"type":"string","enum":["completed"]},"result_contract":{"type":"string"}}},"AgentTriggerSubscriptionRecord":{"type":"object","properties":{"id":{"type":"string"},"agent_connection_id":{"type":"string"},"trigger_slug":{"type":"string"},"toolkit_version":{"type":"string"},"configuration":{"type":"object","additionalProperties":true},"enabled":{"type":"boolean"},"remote_enabled":{"type":["boolean","null"]},"failure_code":{"type":["string","null"]},"failure_request_id":{"type":["string","null"],"maxLength":200},"reconcile_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"waiting_for_retirement":{"type":"boolean"},"retired_at":{"type":["string","null"],"format":"date-time"},"retirement_completed_at":{"type":["string","null"],"format":"date-time"},"reconciliation_uncertain":{"type":"boolean"},"replacement_id":{"type":["string","null"]}},"required":["id","agent_connection_id","trigger_slug","toolkit_version","configuration","enabled","remote_enabled","failure_code","failure_request_id","reconcile_at","created_at","updated_at","retired_at","retirement_completed_at","waiting_for_retirement","reconciliation_uncertain","replacement_id"]},"AgentTriggerDefinition":{"type":"object","properties":{"slug":{"type":"string"},"toolkit":{"type":"string"},"version":{"type":"string"},"name":{"type":"string"},"delivery":{"type":"string"},"status":{"type":"string"},"latency":{"type":"string"},"defaults":{"type":"object","additionalProperties":true},"schema":{"type":"object","additionalProperties":true}},"required":["slug","toolkit","version","name","delivery","status","latency","defaults","schema"]},"AutomationProviderBindingRecord":{"type":"object","properties":{"id":{"type":"string"},"agent_trigger_subscription_id":{"type":"string"},"automation_id":{"type":"string"},"trigger_key":{"type":"string"},"revision":{"type":"integer"},"usable":{"type":"boolean"},"revoked_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":"string","format":"date-time"}},"required":["id","agent_trigger_subscription_id","automation_id","trigger_key","revision","usable","revoked_at","created_at"]},"AgentTriggerSubscriptionHealth":{"type":"object","properties":{"last_received_at":{"type":["string","null"],"format":"date-time"},"last_occurred_at":{"type":["string","null"],"format":"date-time"},"last_delivered_at":{"type":["string","null"],"format":"date-time"},"last_event_id":{"type":["string","null"]},"last_invocation_id":{"type":["string","null"]},"last_automation_slug":{"type":["string","null"]},"observed_delay_seconds":{"type":["number","null"],"minimum":0},"pending_deliveries":{"type":"integer","minimum":0}},"required":["last_received_at","last_occurred_at","last_delivered_at","last_event_id","last_invocation_id","last_automation_slug","observed_delay_seconds","pending_deliveries"]},"AgentUsagePage":{"type":"object","required":["source","window","started_at","ended_at","pricing_version","days","users","user_days"],"properties":{"source":{"type":"string","enum":["tinybird","outbox"],"description":"Which store served the rows."},"window":{"type":"string","enum":["7d","30d"]},"started_at":{"type":"string"},"ended_at":{"type":"string"},"pricing_version":{"type":"string","description":"The price table in effect now; rows carry the version they were priced at."},"days":{"type":"array","description":"One cell per (day, model), ascending by day then model. Days with no usage are absent.","items":{"$ref":"#/components/schemas/AgentUsageDayCell"}},"users":{"type":"array","description":"One row per (person, model), descending by tokens. `user` is null for hosted agents.","items":{"$ref":"#/components/schemas/AgentUsageUserCell"}},"user_days":{"type":"array","description":"One cell per (day, person), ascending by day. `user` is null for hosted agents.","items":{"$ref":"#/components/schemas/AgentUsageUserDayCell"}}}},"AgentUsageDayCell":{"type":"object","required":["date","model","input_tokens","cache_read_input_tokens","cache_creation_input_tokens","output_tokens","total_tokens","api_call_count","session_count","estimated_cost_usd","unpriced_tokens"],"properties":{"date":{"type":"string","description":"ISO date."},"model":{"type":"string","description":"Provider model id; '' when the checkpoint reported none."},"input_tokens":{"type":"integer"},"cache_read_input_tokens":{"type":"integer"},"cache_creation_input_tokens":{"type":"integer"},"output_tokens":{"type":"integer"},"total_tokens":{"type":"integer"},"api_call_count":{"type":"integer"},"session_count":{"type":"integer"},"estimated_cost_usd":{"type":"string","description":"Decimal USD summed from each row's capture-time price."},"unpriced_tokens":{"type":"integer","description":"Tokens in `total_tokens` whose model had no list price, so the cost is a floor when non-zero."}}},"AgentUsageUserCell":{"type":"object","required":["user","model","total_tokens","output_tokens","api_call_count","session_count","estimated_cost_usd","unpriced_tokens","last_active_at"],"properties":{"user":{"oneOf":[{"$ref":"#/components/schemas/OrganizationSessionUser"},{"type":"null"}]},"model":{"type":"string"},"total_tokens":{"type":"integer"},"output_tokens":{"type":"integer"},"api_call_count":{"type":"integer"},"session_count":{"type":"integer"},"estimated_cost_usd":{"type":"string"},"unpriced_tokens":{"type":"integer"},"last_active_at":{"type":"string","nullable":true}}},"AgentUsageUserDayCell":{"type":"object","required":["date","user","total_tokens","output_tokens","api_call_count","session_count","estimated_cost_usd","unpriced_tokens"],"properties":{"date":{"type":"string","description":"ISO date."},"user":{"oneOf":[{"$ref":"#/components/schemas/OrganizationSessionUser"},{"type":"null"}]},"total_tokens":{"type":"integer"},"output_tokens":{"type":"integer"},"api_call_count":{"type":"integer"},"session_count":{"type":"integer"},"estimated_cost_usd":{"type":"string"},"unpriced_tokens":{"type":"integer"}}},"OrganizationAgreementsPage":{"type":"object","required":["organization","access_request","can_request_access","agreements"],"properties":{"organization":{"$ref":"#/components/schemas/OrganizationSummary"},"access_request":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/AgreementAccessRequest"}]},"can_request_access":{"type":"boolean"},"agreements":{"type":"array","items":{"$ref":"#/components/schemas/Agreement"}}}},"AgreementAccessRequest":{"type":"object","required":["state","requested_by_name","requested_at_label","granted_at_label"],"properties":{"state":{"type":"string","enum":["requested","granted"]},"requested_by_name":{"type":"string"},"requested_at_label":{"type":"string"},"granted_at_label":{"type":"string","nullable":true}}},"Agreement":{"type":"object","required":["key","title","summary","version","effective_on_label","body"],"properties":{"key":{"type":"string","enum":["data_processing_agreement","subprocessors"]},"title":{"type":"string"},"summary":{"type":"string"},"version":{"type":"string"},"effective_on_label":{"type":"string"},"body":{"type":"string","nullable":true,"description":"Markdown text, or null until staff grant the organization access."}}},"ArtefactComment":{"type":"object","required":["id","author","author_id","author_kind","body","created_at"],"properties":{"id":{"type":"string"},"author":{"type":"string"},"author_id":{"type":"string"},"author_kind":{"type":"string","enum":["person","agent"]},"body":{"type":"string"},"created_at":{"type":"string","format":"date-time"}}},"ArtefactCommentThread":{"type":"object","required":["id","quote","resolved","comments"],"properties":{"id":{"type":"string","description":"The anchor key."},"quote":{"type":"string"},"resolved":{"type":"boolean"},"comments":{"type":"array","items":{"$ref":"#/components/schemas/ArtefactComment"}}}},"ArtefactCommentThreadEnvelope":{"type":"object","required":["thread"],"properties":{"thread":{"$ref":"#/components/schemas/ArtefactCommentThread"}}},"ArtefactPagePagination":{"type":"object","properties":{"count":{"type":"integer"},"page":{"type":"integer"},"last":{"type":"integer"},"previous":{"type":"integer"},"next":{"type":"integer"}},"required":["count","page","last"]},"ArtefactPageItem":{"allOf":[{"$ref":"#/components/schemas/Artefact"},{"type":"object","properties":{"publisher":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"picture_url":{"type":"string","nullable":true}},"required":["id","name","picture_url"],"nullable":true},"repository":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"nullable":true},"published_at_label":{"type":["string","null"]}},"required":["publisher","repository","published_at_label"]}]},"ArtefactIndexPage":{"type":"object","properties":{"organization":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"]},"artefacts":{"type":"array","items":{"$ref":"#/components/schemas/ArtefactPageItem"}},"filters":{"type":"object","additionalProperties":{"type":"string"}},"kinds":{"type":"array","items":{"type":"string"}},"pagination":{"$ref":"#/components/schemas/ArtefactPagePagination"}},"required":["organization","artefacts","filters","kinds","pagination"]},"ArtefactDetailPage":{"type":"object","properties":{"organization":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"]},"artefact":{"$ref":"#/components/schemas/ArtefactPageItem"},"kinds":{"type":"array","items":{"type":"string"}},"permissions":{"type":"object","properties":{"edit":{"type":"boolean"},"delete":{"type":"boolean"},"edit_content":{"type":"boolean"}},"required":["edit","delete","edit_content"]},"preview":{"type":"object","properties":{"kind":{"type":"string","enum":["html","pdf","image","markdown","download","unavailable"]},"content":{"type":"string"},"viewer_url":{"type":"string"}},"required":["kind"]},"versions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer"},"published_at":{"type":["string","null"]}},"required":["id","version","published_at"]}},"pagination":{"$ref":"#/components/schemas/ArtefactPagePagination"},"automation":{"type":"object","nullable":true,"properties":{"name":{"type":"string"},"slug":{"type":"string"},"invocation_id":{"type":"string"}},"required":["name","slug","invocation_id"]},"selected_path":{"type":"string"},"comment_threads":{"type":"array","items":{"$ref":"#/components/schemas/ArtefactCommentThread"}},"draft":{"description":"The autosaved working copy of the newest Markdown version; null for older versions and other files.","type":["object","null"],"properties":{"revision":{"type":"integer"},"content":{"type":["string","null"],"description":"Null when nothing has been edited since the newest version."},"updated_by":{"type":["string","null"]}},"required":["revision","content","updated_by"]}},"required":["organization","artefact","kinds","permissions","preview","versions","pagination","automation","comment_threads","draft"]},"Artefact":{"type":"object","properties":{"document_key":{"type":"string","description":"Stable document identity shared by all revisions."},"entrypoint":{"type":"string"},"files":{"type":"array","items":{"type":"object","required":["path","content_type","byte_size","checksum_sha256"],"properties":{"path":{"type":"string"},"content_type":{"type":"string"},"byte_size":{"type":"integer"},"checksum_sha256":{"type":"string"},"version_id":{"type":"string"}}}},"id":{"type":"string"},"organization_id":{"type":"string"},"slug":{"type":"string"},"title":{"type":"string"},"kind":{"type":"string"},"source":{"type":"string"},"filename":{"type":"string"},"content_type":{"type":"string"},"checksum_sha256":{"type":"string"},"status":{"type":"string"},"version":{"type":"integer"},"byte_size":{"type":"integer"},"description":{"type":"string","nullable":true},"harness":{"type":"string","nullable":true},"harness_version":{"type":"string","nullable":true},"model":{"type":"string","nullable":true},"created_by_user_id":{"type":"string","nullable":true},"repository_id":{"type":"string","nullable":true},"vcs_agent_session_id":{"type":"string","nullable":true},"vcs_agent_checkpoint_id":{"type":"string","nullable":true},"automation_invocation_id":{"type":"string","nullable":true},"published_at":{"type":"string","nullable":true},"expires_at":{"type":"string","nullable":true},"created_at":{"type":"string","nullable":true},"view_url":{"type":"string","format":"uri"},"web_url":{"type":"string","format":"uri"}},"required":["id","organization_id","slug","version","title","kind","source","filename","content_type","byte_size","checksum_sha256","status","view_url","web_url"]},"BillingOnboarding":{"type":"object","required":["organization_id","state","can_manage","seats","seat_total_cents","recurring_price_cents","trial_credit_cents","confirmed","checkout_required","checkout_available","checkout_blocker","package","subscription","cardless","prepaid_cents_per_minute","prepaid"],"properties":{"package_options":{"type":"array","description":"Ready offers for initial enrollment. Omitted by API versions predating plan selection during a rolling release.","items":{"$ref":"#/components/schemas/BillingPackage"}},"prepaid_cents_per_minute":{"type":["integer","null"]},"prepaid":{"oneOf":[{"$ref":"#/components/schemas/BillingPrepaidOnboarding"},{"type":"null"}]},"organization_id":{"type":"string"},"state":{"type":"string","enum":["none","trialing","active","past_due","suspended","exempt"]},"can_manage":{"type":"boolean"},"seats":{"type":"integer"},"seat_total_cents":{"type":"integer"},"recurring_price_cents":{"type":"integer"},"trial_credit_cents":{"type":"integer"},"confirmed":{"type":"boolean"},"checkout_required":{"type":"boolean"},"plan_selection_available":{"type":"boolean","description":"Whether to show the plan picker instead of continuing with an accepted package."},"package_selection_customized":{"type":"boolean"},"custom_pricing_available":{"type":"boolean","description":"Whether the plan picker includes a Custom contact option."},"coupon_entry_available":{"type":"boolean","description":"Enter a legacy package coupon before opening Stripe. Prepaid packages accept promotion codes in Stripe instead."},"cardless":{"type":"boolean"},"checkout_available":{"type":"boolean"},"checkout_blocker":{"type":"string","nullable":true},"package":{"allOf":[{"$ref":"#/components/schemas/BillingPackage"}],"nullable":true},"subscription":{"allOf":[{"$ref":"#/components/schemas/BillingSubscription"}],"nullable":true}}},"BillingPrepaidOnboarding":{"type":"object","required":["included_minutes","refresh_recommended","monthly_payment"],"properties":{"included_minutes":{"type":"number"},"refresh_recommended":{"type":"boolean"},"monthly_payment":{"oneOf":[{"type":"object","required":["id","can_confirm"],"properties":{"id":{"type":"string"},"can_confirm":{"type":"boolean"}}},{"type":"null"}]}}},"BillingLimitExceededError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","reason","meter_key","dimension_value","limit","requested","upgrade_path","message"],"properties":{"code":{"type":"string","enum":["billing_limit_exceeded"]},"reason":{"type":"string","enum":["payment_required","hard_cap","allowance_exhausted","budget_exhausted","suspended","seat_limit"]},"meter_key":{"type":"string","description":"A billing meter key","or `seats` for the seat limit":null},"dimension_value":{"type":["string","null"]},"limit":{"oneOf":[{"type":"number"},{"type":"string"}],"description":"Decimal quantities are serialized as strings"},"requested":{"oneOf":[{"type":"number"},{"type":"string"}]},"upgrade_path":{"type":"string","description":"Frontend path of the organization's billing page"},"message":{"type":"string"}}}}},"BillingPrepaidPagination":{"type":"object","required":["count","page","limit","last","series"],"properties":{"count":{"type":"integer"},"page":{"type":"integer"},"limit":{"type":"integer"},"last":{"type":"integer"},"previous":{"type":["integer","null"]},"next":{"type":["integer","null"]},"series":{"type":"array","items":{"oneOf":[{"type":"integer"},{"type":"string"}]}}}},"BillingPrepaidBalance":{"type":"object","required":["monthly_minutes","purchased_minutes","operator_minutes","reserved_minutes","available_minutes","held_minutes"],"properties":{"monthly_minutes":{"type":"number","minimum":0},"purchased_minutes":{"type":"number","minimum":0},"operator_minutes":{"type":"number","minimum":0},"reserved_minutes":{"type":"number","minimum":0},"available_minutes":{"type":"number","minimum":0},"held_minutes":{"type":"number","minimum":0}}},"BillingPrepaidPurchase":{"type":"object","required":["id","minutes","net_amount_cents","currency","paid_total_cents","refunded_net_cents","state","last_error","created_at","paid_at","activated_at","receipt_url","payment_action_url"],"properties":{"id":{"type":"string"},"minutes":{"type":"integer"},"net_amount_cents":{"type":"integer"},"currency":{"type":"string"},"paid_total_cents":{"type":["integer","null"]},"refunded_net_cents":{"type":"integer"},"state":{"type":"string","enum":["requested","submitting","pending","requires_action","uncertain","failed","paid","available","under_review","refunded","partially_refunded"]},"last_error":{"type":["string","null"]},"created_at":{"type":"string","format":"date-time"},"paid_at":{"type":["string","null"],"format":"date-time"},"activated_at":{"type":["string","null"],"format":"date-time"},"receipt_url":{"type":["string","null"]},"payment_action_url":{"type":["string","null"]}}},"BillingPrepaidPeriod":{"allOf":[{"$ref":"#/components/schemas/BillingPrepaidPurchase"},{"type":"object","required":["period_started_at","period_ended_at"],"properties":{"period_started_at":{"type":"string","format":"date-time"},"period_ended_at":{"type":"string","format":"date-time"}}}]},"BillingPrepaidAccount":{"type":"object","required":["package_name","monthly_price_cents","included_minutes","subscription_status","top_up_options","next_renewal_at","can_purchase","refresh_recommended","has_paid_period","monthly_payment","balance","recent_purchases","needs_payment_method","can_cancel","cancellation_pending","cancel_at"],"properties":{"package_name":{"type":"string"},"monthly_price_cents":{"type":"integer"},"included_minutes":{"type":"number"},"subscription_status":{"type":"string"},"can_purchase":{"type":"boolean"},"refresh_recommended":{"type":"boolean"},"has_paid_period":{"type":"boolean"},"needs_payment_method":{"type":"boolean"},"can_cancel":{"type":"boolean"},"cancellation_pending":{"type":"boolean"},"cancel_at":{"type":["string","null"],"format":"date-time"},"monthly_payment":{"oneOf":[{"$ref":"#/components/schemas/BillingPrepaidPeriod"},{"type":"null"}]},"next_renewal_at":{"type":["string","null"],"format":"date-time"},"balance":{"$ref":"#/components/schemas/BillingPrepaidBalance"},"top_up_options":{"type":"array","items":{"type":"object","required":["minutes","amount_cents","currency"],"properties":{"minutes":{"type":"integer","enum":[100,500,1000]},"amount_cents":{"type":"integer"},"currency":{"type":"string"}}}},"recent_purchases":{"type":"array","items":{"$ref":"#/components/schemas/BillingPrepaidPurchase"}}}},"BillingPrepaidPurchaseRejection":{"type":"object","required":["error","details","field_errors","purchase_rejected"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}},"field_errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"purchase_rejected":{"type":"boolean","description":"True only when this request identity is durably rejected and cannot later be accepted. Otherwise retain the identity for recovery."}}},"BillingPrepaidPurchasePage":{"type":"object","required":["purchase","prepaid"],"properties":{"purchase":{"$ref":"#/components/schemas/BillingPrepaidPurchase"},"prepaid":{"$ref":"#/components/schemas/BillingPrepaidAccount"}}},"BillingHostedSession":{"type":"object","required":["url"],"properties":{"url":{"type":"string"}}},"BillingPage":{"type":"object","required":["organization_id","can_manage_contact","can_manage_extra_spend","can_manage_local_subscription","can_set_up_billing","can_manage_payment_method","extra_spend_enabled","deployment_usage_visible","customer","subscription","package","entitlements","addons","budget","preview","breakdown","stripe","feature_enabled","storage_usage","prepaid","token_account"],"properties":{"token_account":{"type":"object","required":["balance_usd","reserved_usd","available_usd","top_up_cents"],"properties":{"balance_usd":{"type":"string"},"reserved_usd":{"type":"string"},"available_usd":{"type":"string"},"top_up_cents":{"type":"array","items":{"type":"integer","enum":[1000,2500,5000,10000]}}}},"organization_id":{"type":"string"},"can_manage_contact":{"type":"boolean"},"can_manage_extra_spend":{"type":"boolean"},"can_manage_local_subscription":{"type":"boolean"},"can_set_up_billing":{"type":"boolean"},"can_manage_payment_method":{"type":"boolean"},"extra_spend_enabled":{"type":"boolean","default":false,"description":"Organization consent to paid overages across all metered usage."},"deployment_usage_visible":{"type":"boolean"},"customer":{"oneOf":[{"$ref":"#/components/schemas/BillingCustomer"},{"type":"null"}]},"subscription":{"oneOf":[{"$ref":"#/components/schemas/BillingSubscription"},{"type":"null"}]},"package":{"oneOf":[{"$ref":"#/components/schemas/BillingPackage"},{"type":"null"}]},"entitlements":{"$ref":"#/components/schemas/BillingEntitlements"},"prepaid":{"oneOf":[{"$ref":"#/components/schemas/BillingPrepaidAccount"},{"type":"null"}]},"storage_usage":{"$ref":"#/components/schemas/BillingStorageUsage"},"addons":{"type":"array","items":{"$ref":"#/components/schemas/BillingSubscriptionAddon"}},"budget":{"oneOf":[{"$ref":"#/components/schemas/BillingBudget"},{"type":"null"}]},"preview":{"description":"Metronome draft invoice and credits, or null.","oneOf":[{"type":"object","additionalProperties":true},{"type":"null"}]},"breakdown":{"description":"The 24-hour live series with its provenance; null only when the rollup fallback itself failed.","oneOf":[{"$ref":"#/components/schemas/BillingUsageBreakdownSummary"},{"type":"null"}]},"stripe":{"type":"object","required":["configured"],"properties":{"configured":{"type":"boolean"}}},"feature_enabled":{"description":"Whether the `billing` feature is on for this organization. False renders the page as not enabled, with no Subscribe action.","type":"boolean"}}},"BillingStorageUsage":{"type":"object","required":["stored_bytes","provisioned_bytes","incomplete","as_of","categories"],"properties":{"incomplete":{"type":"boolean"},"stored_bytes":{"type":"integer","minimum":0},"provisioned_bytes":{"type":"integer","minimum":0},"as_of":{"type":"string","format":"date-time"},"categories":{"type":"array","items":{"$ref":"#/components/schemas/BillingStorageCategory"}}}},"BillingStorageCategory":{"type":"object","required":["meter_key","current_bytes","measurement","sampled_at","unmeasured_count","allowance"],"properties":{"meter_key":{"type":"string"},"current_bytes":{"type":"integer","minimum":0},"measurement":{"type":"string","enum":["stored","sampled","provisioned"]},"sampled_at":{"type":"string","format":"date-time","nullable":true},"unmeasured_count":{"type":"integer","minimum":0},"allowance":{"oneOf":[{"$ref":"#/components/schemas/BillingEntitlementMeter"},{"type":"null"}]}}},"BillingInvoicesPage":{"type":"object","required":["organization_id","upcoming","invoices"],"properties":{"organization_id":{"type":"string"},"upcoming":{"oneOf":[{"$ref":"#/components/schemas/BillingUpcomingInvoice"},{"type":"null"}]},"invoices":{"type":"array","items":{"$ref":"#/components/schemas/BillingInvoice"}}}},"BillingUpcomingInvoice":{"type":"object","required":["total_cents","currency","credit_balance_cents","metronome_invoice_ids"],"properties":{"total_cents":{"type":"integer","description":"The Metronome draft total","USD cents.":null},"currency":{"type":"string"},"period_started_at":{"type":["string","null"]},"period_ended_at":{"type":["string","null"]},"credit_balance_cents":{"type":"integer","description":"Remaining credit that offsets the draft."},"metronome_invoice_ids":{"type":"array","items":{"type":"string"}}}},"BillingInvoice":{"type":"object","required":["id","status","currency","total_cents","amount_due_cents","created_at"],"properties":{"id":{"type":"string"},"number":{"type":["string","null"]},"status":{"type":"string","enum":["draft","open","paid","uncollectible","void"]},"currency":{"type":"string"},"total_cents":{"type":"integer"},"amount_due_cents":{"type":"integer"},"period_started_at":{"type":["string","null"]},"period_ended_at":{"type":["string","null"]},"created_at":{"type":"string"},"hosted_invoice_url":{"type":["string","null"]},"invoice_pdf":{"type":["string","null"]},"metronome_invoice_id":{"type":["string","null"],"description":"Metronome's id for the invoice it pushed","from the invoice metadata.":null}}},"BillingCustomer":{"type":"object","required":["billing_email","tax_status","has_stripe_customer","has_metronome_customer","delinquent"],"properties":{"billing_email":{"type":["string","null"]},"tax_status":{"type":"string","enum":["manual","automatic"]},"has_stripe_customer":{"type":"boolean"},"has_metronome_customer":{"type":"boolean"},"delinquent":{"type":"boolean"},"delinquent_since":{"type":["string","null"]}}},"BillingSubscription":{"type":"object","required":["id","status","seat_quantity","complimentary","package_key","cancel_at_period_end","has_metronome_contract"],"properties":{"id":{"type":"string"},"status":{"type":"string","enum":["trialing","active","past_due","unpaid","canceled","incomplete"]},"seat_quantity":{"type":"integer"},"complimentary":{"type":"boolean"},"package_key":{"type":"string"},"cancel_at_period_end":{"type":"boolean"},"has_metronome_contract":{"type":"boolean"},"current_period_started_at":{"type":["string","null"]},"current_period_ended_at":{"type":["string","null"]},"trial_ends_at":{"type":["string","null"]},"free_coupon_ends_at":{"type":["string","null"]},"cancel_at":{"type":["string","null"]},"canceled_at":{"type":["string","null"]}}},"BillingPackage":{"type":"object","required":["key","name","visibility","revision","base_price_cents","seat_price_cents","currency","billing_interval","billing_policy","trial_days","pay_as_you_go_enabled","rates","addons"],"properties":{"key":{"type":"string"},"name":{"type":"string"},"visibility":{"type":"string","enum":["public","custom"]},"revision":{"type":"integer"},"base_price_cents":{"type":"integer"},"seat_price_cents":{"type":"integer"},"currency":{"type":"string"},"billing_interval":{"type":"string","enum":["month","year"]},"billing_policy":{"type":"string","enum":["metered","prepaid_browser"]},"trial_days":{"type":"integer"},"ci_included_spend_cents":{"type":"integer","description":"Monthly USD credit in cents shared by all CI charges, including runners, cache, storage and add-ons; replaces CI unit allowances when positive. Omitted by older API releases."},"max_seats":{"type":["integer","null"]},"pay_as_you_go_enabled":{"type":"boolean"},"roder_daily_run_limit":{"type":"integer"},"roder_run_concurrency_limit":{"type":"integer"},"rates":{"type":"array","items":{"$ref":"#/components/schemas/BillingPackageRate"}},"addons":{"type":"array","items":{"$ref":"#/components/schemas/BillingAddon"}}}},"BillingPackageRate":{"type":"object","required":["meter_key","unit","unit_price_nanodollars","unit_price_dollars","included_per_organization","included_per_seat"],"properties":{"meter_key":{"type":"string"},"dimension_value":{"type":["string","null"]},"unit":{"type":"string"},"unit_price_nanodollars":{"type":"integer"},"unit_price_dollars":{"type":"string","description":"Decimal string","lossless.":null},"included_per_organization":{"type":"number"},"included_per_seat":{"type":"number"},"hard_cap":{"type":["number","null"]}}},"BillingAddon":{"type":"object","required":["addon_key","name","monthly_price_cents","raises_meter_key","raises_quantity","raises_roder_concurrency"],"properties":{"addon_key":{"type":"string"},"name":{"type":"string"},"monthly_price_cents":{"type":"integer"},"raises_meter_key":{"type":["string","null"]},"raises_quantity":{"type":"number"},"raises_roder_concurrency":{"type":"integer"},"purchasable":{"type":"boolean","description":"Whether new purchases are available. Older API releases omit this field; absence preserves purchase availability."},"max_quantity":{"type":["integer","null"]}}},"BillingSubscriptionAddon":{"type":"object","required":["addon_key","quantity"],"properties":{"addon_key":{"type":"string"},"quantity":{"type":"integer"},"name":{"type":["string","null"]},"monthly_price_cents":{"type":["integer","null"]}}},"BillingBudget":{"type":"object","required":["monthly_cap_cents","notified_thresholds"],"properties":{"monthly_cap_cents":{"type":"integer"},"notified_thresholds":{"type":"array","items":{"type":"integer"}}}},"BillingEntitlementMeter":{"type":"object","required":["meter_key","unit","included","used","raw_used","remaining","pay_as_you_go","unit_price_nanodollars","spend_cents","projected_overage_cents"],"properties":{"meter_key":{"type":"string"},"dimension_value":{"type":["string","null"]},"unit":{"type":"string"},"included":{"type":"number"},"used":{"type":"number"},"projected_overage_cents":{"type":"integer","description":"Forecast overage for the current allowance window."},"raw_used":{"type":"number","description":"Full billing-period usage before allowance resets."},"remaining":{"type":"number"},"allowance_pool":{"type":["string","null"],"enum":["ci_spend",null],"description":"Shared dollar allowance covering this meter. Omitted by older API releases."},"spend_cents":{"type":"integer","description":"What this period's overage costs so far at the unit price. The standard CI runner classes split their shared pool's overage by each class's own minutes."},"hard_cap":{"type":["number","null"]},"cap":{"type":["number","null"],"description":"The quantity past which new usage is refused; null means unlimited."},"pay_as_you_go":{"type":"boolean"},"unit_price_nanodollars":{"type":"integer"}}},"BillingEntitlements":{"type":"object","required":["state","seats","recurring_price_cents","enforcing","period_started_at","usage_reset_at","period_spend_cents","ci_raw_used","meters","roder_run_concurrency_limit","roder_daily_run_limit"],"properties":{"state":{"type":"string","enum":["none","trialing","active","past_due","suspended","exempt"]},"seats":{"type":"integer"},"recurring_price_cents":{"type":"integer"},"roder_run_concurrency_limit":{"type":"integer"},"roder_daily_run_limit":{"type":"integer"},"seat_limit":{"type":["integer","null"]},"seats_remaining":{"type":["integer","null"]},"period_spend_cents":{"type":"integer","description":"Overage spend so far this period across every meter","in cents; the seat charge is not included.":null},"enforcing":{"type":"boolean"},"period_started_at":{"type":"string"},"usage_reset_at":{"type":["string","null"],"format":"date-time"},"ci_overage_cents":{"type":"integer","description":"Net overage from the shared CI dollar pool; zero without a CI dollar allowance. Omitted by older API releases."},"ci_projected_overage_cents":{"type":"integer","description":"Forecast net overage from the shared CI dollar pool. Omitted by older API releases."},"ci_uncapped":{"type":"boolean","description":"CI runner usage has no minute cap under the current package and extra-spend setting. Omitted by older API releases."},"ci_spend_cents":{"type":"integer","description":"Total CI spend before the monthly USD credit in cents, including runner, cache, storage and add-on charges. Omitted by older API releases."},"ci_raw_used":{"type":"number","description":"Full-period CI usage with the shared standard pool counted once."},"meters":{"type":"array","items":{"$ref":"#/components/schemas/BillingEntitlementMeter"}}}},"BillingUsage":{"type":"object","required":["period_started_at","state","seats","meters"],"properties":{"period_started_at":{"type":"string"},"state":{"type":"string"},"seats":{"type":"integer"},"meters":{"type":"array","items":{"$ref":"#/components/schemas/BillingEntitlementMeter"}}}},"BillingUsageSeriesPoint":{"type":"object","required":["meter_key","dimension_value","unit","quantity"],"properties":{"meter_key":{"type":"string"},"dimension_value":{"type":"string","description":"Empty for meters without a dimension."},"unit":{"type":"string"},"quantity":{"type":"number"}}},"BillingUsageLiveBucket":{"allOf":[{"$ref":"#/components/schemas/BillingUsageSeriesPoint"},{"type":"object","required":["bucket_started_at"],"properties":{"bucket_started_at":{"type":"string","description":"Start of the 5-minute bucket","UTC.":null}}}]},"BillingUsageHourBucket":{"allOf":[{"$ref":"#/components/schemas/BillingUsageSeriesPoint"},{"type":"object","required":["hour_started_at"],"properties":{"hour_started_at":{"type":"string"}}}]},"BillingUsageSubject":{"type":"object","required":["subject_type","subject_id","dimension_value","unit","quantity","reading_count"],"properties":{"subject_type":{"type":"string"},"subject_id":{"type":["integer","null"]},"dimension_value":{"type":"string"},"unit":{"type":"string"},"quantity":{"type":"number"},"reading_count":{"type":"integer"}}},"BillingUsageBreakdownSummary":{"type":"object","required":["source","as_of","live"],"properties":{"source":{"type":"string","enum":["tinybird","rollup"]},"as_of":{"type":"string"},"live":{"type":"array","items":{"$ref":"#/components/schemas/BillingUsageLiveBucket"}}}},"BillingUsageBreakdown":{"type":"object","required":["source","as_of","window","meter_key","window_started_at","window_ended_at","live","by_meter","totals","subjects"],"properties":{"source":{"type":"string","enum":["tinybird","rollup"]},"as_of":{"type":"string"},"window":{"type":"string","enum":["24h","7d","period"]},"meter_key":{"type":["string","null"]},"window_started_at":{"type":"string"},"window_ended_at":{"type":"string"},"live":{"type":"array","items":{"$ref":"#/components/schemas/BillingUsageLiveBucket"}},"by_meter":{"type":"array","items":{"$ref":"#/components/schemas/BillingUsageHourBucket"}},"totals":{"type":"array","items":{"$ref":"#/components/schemas/BillingUsageSeriesPoint"}},"subjects":{"type":"array","description":"Empty when no meter was given or the source is `rollup`.","items":{"$ref":"#/components/schemas/BillingUsageSubject"}}}},"BookmarkProtectionEvent":{"type":"object","required":["id","bookmark_protection_rule_id","organization_id","repository_id","actor_user_id","bookmark_name","action","old_target","new_target","actor_kind","actor_label","intent","decision","source_request_id","created_at","updated_at","created_at_label","updated_at_label","reason_codes","metadata"],"properties":{"id":{"type":"string"},"bookmark_protection_rule_id":{"type":"string","nullable":true},"organization_id":{"type":"string"},"repository_id":{"type":"string"},"actor_user_id":{"type":"string","nullable":true},"bookmark_name":{"type":"string"},"action":{"type":"string"},"old_target":{"type":"string","nullable":true},"new_target":{"type":"string","nullable":true},"actor_kind":{"type":"string","enum":["user","vex_automation","system","github_app","service"]},"actor_label":{"type":"string","nullable":true},"intent":{"type":"string","nullable":true},"decision":{"type":"string","enum":["allowed","denied","bypassed","simulated"]},"source_request_id":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true},"reason_codes":{"type":"array","items":{"type":"string"}},"metadata":{"type":"object","additionalProperties":true}}},"BookmarkProtectionRule":{"type":"object","required":["id","organization_id","repository_id","created_by_user_id","updated_by_user_id","name","enabled","priority","target_kind","target_pattern","bypass_mode","created_at","updated_at","requirements","actor_policy"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"repository_id":{"type":"string"},"created_by_user_id":{"type":"string","nullable":true},"updated_by_user_id":{"type":"string","nullable":true},"name":{"type":"string"},"enabled":{"type":"boolean"},"priority":{"type":"integer"},"target_kind":{"type":"string","enum":["exact","pattern","default_branch"]},"target_pattern":{"type":"string","nullable":true},"bypass_mode":{"type":"string","enum":["admins","none"]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"requirements":{"type":"object","additionalProperties":true,"properties":{"ci":{"$ref":"#/components/schemas/BookmarkProtectionCiRequirements"}}},"actor_policy":{"type":"object","additionalProperties":true}}},"BookmarkProtectionRequiredCheck":{"type":"object","required":["name","source"],"properties":{"name":{"type":"string"},"source":{"type":"string","enum":["vex","github","any"]},"app_id":{"type":"integer","nullable":true}}},"BookmarkProtectionCiRequirements":{"type":"object","required":["mode","require_all","required_checks"],"properties":{"mode":{"type":"string","enum":["none","explicit","follow_github"]},"require_all":{"type":"boolean"},"required_checks":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/BookmarkProtectionRequiredCheck"}]}}}},"RequiredCheckCandidate":{"type":"object","required":["name","source"],"properties":{"name":{"type":"string"},"source":{"type":"string","enum":["vex","github","any"]},"app_id":{"type":"integer","nullable":true},"last_observed_at":{"type":"string","format":"date-time","nullable":true}}},"GithubRequiredCheckSnapshot":{"type":"object","required":["github_branch","requirements","exclusions","proven","stale"],"properties":{"github_owner":{"type":"string","nullable":true},"github_repository_name":{"type":"string","nullable":true},"github_branch":{"type":"string"},"requirements":{"type":"array","items":{"$ref":"#/components/schemas/BookmarkProtectionRequiredCheck"}},"exclusions":{"type":"array","items":{"type":"object","additionalProperties":true}},"fetched_at":{"type":"string","format":"date-time","nullable":true},"fetched_at_label":{"type":"string","nullable":true},"proven":{"type":"boolean"},"stale":{"type":"boolean"},"last_error":{"type":"string","nullable":true}}},"BrowserCaptureRequest":{"type":"object","properties":{"idempotency_key":{"type":"string","minLength":1,"maxLength":255},"wait":{"type":"boolean","default":false,"description":"Only screenshots support wait: true. Complete the durable capture within this request; a lost response can be recovered using the same idempotency key."}}},"BrowserMedia":{"type":"object","required":["id","browser_session_id","kind","status","partial","retention_expires_at","files"],"properties":{"id":{"type":"string"},"browser_session_id":{"type":"string"},"kind":{"type":"string","enum":["screenshot","video"]},"status":{"type":"string","enum":["pending","starting","capturing","recording","finalizing","ready","partial","failed","expired"]},"partial":{"type":"boolean","description":"Retained footage has a capture failure or reported omissions."},"captured_at":{"type":"string","format":"date-time","nullable":true},"ended_at":{"type":"string","format":"date-time","nullable":true},"stop_requested_at":{"type":"string","format":"date-time","nullable":true},"retention_expires_at":{"type":"string","format":"date-time"},"failure_code":{"type":"string","nullable":true},"frames":{"type":"integer","nullable":true},"capture_omissions":{"type":"object","nullable":true,"additionalProperties":true},"source":{"type":"object","nullable":true,"description":"Screenshot provenance. Dimensions describe retained PNG pixels. URLs are observations before and after capture; concurrent navigation may change the page during that interval.","properties":{"tab_id":{"type":"string"},"width":{"type":"integer","minimum":1,"nullable":true},"height":{"type":"integer","minimum":1,"nullable":true},"url":{"type":"string"},"url_before":{"type":"string"},"capture_started_at":{"type":"string","format":"date-time"},"capture_finished_at":{"type":"string","format":"date-time"}}},"files":{"type":"array","maxItems":1024,"items":{"$ref":"#/components/schemas/BrowserMediaFile"}}}},"BrowserMediaFile":{"type":"object","required":["id","index","content_type","byte_size","checksum","readable","captured_at","retention_expires_at","download_path"],"properties":{"id":{"type":"string"},"index":{"type":"integer","minimum":0,"maximum":1023},"content_type":{"type":"string","enum":["image/png","video/webm"]},"byte_size":{"type":"integer"},"checksum":{"type":"string"},"readable":{"type":"boolean"},"captured_at":{"type":"string","format":"date-time"},"retention_expires_at":{"type":"string","format":"date-time"},"download_path":{"type":"string"},"playback_url":{"type":"string","nullable":true,"description":"Authorized video capability, limited to five minutes and remaining retention. Refresh by reading this capture again."},"recording":{"type":"object","nullable":true,"properties":{"recording_id":{"type":"string"},"start_ms":{"type":"integer"},"duration_ms":{"type":"integer"}}}}},"BrowserSession":{"type":"object","required":["id","status","controller","control_generation","authentication_status","initial_url","expires_at"],"properties":{"id":{"type":"string"},"status":{"type":"string","enum":["pending","provisioning","ready","closing","closed","expired","failed"]},"controller":{"type":"string","enum":["idle","agent","external","transitioning","blocked","closed"]},"control_generation":{"type":"integer"},"authentication_status":{"type":"string","enum":["not_required","pending","ready","blocked"],"description":"Session readiness alone does not confirm application sign-in."},"project_id":{"type":"string","nullable":true},"environment_revision_id":{"type":"string","nullable":true},"credential_id":{"type":"string","nullable":true},"active_task_id":{"type":"string","nullable":true},"authentication_task_id":{"type":"string","nullable":true,"description":"Automatic sign-in task; read its status and result separately from browser readiness."},"pending_control_id":{"type":"string","nullable":true},"initial_url":{"type":"string"},"started_at":{"type":"string","format":"date-time","nullable":true},"closed_at":{"type":"string","format":"date-time","nullable":true},"closure_basis":{"type":"string","enum":["worker_clock","provider_deletion"],"nullable":true,"description":"Provider deletion is a conservative closure bound when the worker cannot report its stop time."},"expires_at":{"type":"string","format":"date-time"},"reconciled_at":{"type":"string","format":"date-time","nullable":true},"failure_code":{"type":"string","nullable":true},"cdp_url":{"type":"string","nullable":true,"description":"Admin-only full browser CDP bearer capability for the current external control generation."},"viewer":{"type":"object","nullable":true,"properties":{"url":{"type":"string"},"token":{"type":"string"}}}}},"BrowserTask":{"type":"object","required":["id","browser_session_id","status","instruction","model_selection","max_rounds","deadline_at","result","effects_unknown"],"properties":{"id":{"type":"string"},"browser_session_id":{"type":"string"},"status":{"type":"string","enum":["pending","starting","running","stopping","completed","blocked","failed","cancelled","timed_out"]},"instruction":{"type":"string"},"outcome":{"type":"string","nullable":true},"model_selection":{"type":"object","additionalProperties":true},"max_rounds":{"type":"integer"},"deadline_at":{"type":"string","format":"date-time"},"started_at":{"type":"string","format":"date-time","nullable":true},"completed_at":{"type":"string","format":"date-time","nullable":true},"cancel_requested_at":{"type":"string","format":"date-time","nullable":true},"control_generation":{"type":"integer","nullable":true},"result":{"type":"object","additionalProperties":true},"effects_unknown":{"type":"boolean"},"failure_code":{"type":"string","nullable":true},"activity":{"type":"object","nullable":true,"additionalProperties":true}}},"BrowserControl":{"type":"object","required":["id","browser_session_id","status","requested_controller","requested_generation"],"properties":{"id":{"type":"string"},"browser_session_id":{"type":"string"},"status":{"type":"string","enum":["pending","running","completed","failed"]},"requested_controller":{"type":"string","enum":["idle","agent","external"]},"requested_generation":{"type":"integer"},"completed_generation":{"type":"integer","nullable":true},"completed_at":{"type":"string","format":"date-time","nullable":true},"failure_code":{"type":"string","nullable":true},"connection":{"type":"object","nullable":true,"properties":{"cdp_url":{"type":"string"},"generation":{"type":"integer"},"expires_at":{"type":"string","format":"date-time"}}}}},"BrowserEvent":{"type":"object","required":["id","kind","payload","created_at"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["activity","task_finished"]},"browser_task_id":{"type":"string","nullable":true},"source_sequence":{"type":"integer","nullable":true},"payload":{"type":"object","additionalProperties":true},"created_at":{"type":"string","format":"date-time"}}},"CiPipeline":{"type":"object","required":["id","organization_id","repository_id","hosted_app_id","ci_runner_pool_id","required_capabilities_csv","slug","name","description","source_kind","status","default_branch","workflow_path","trigger_on_push","trigger_on_pull_request","trigger_on_schedule","concurrency_key","created_at","updated_at","status_label","status_state","status_tone"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"repository_id":{"type":"string","nullable":true},"hosted_app_id":{"type":"string","nullable":true},"ci_runner_pool_id":{"type":"string","nullable":true},"required_capabilities_csv":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"source_kind":{"type":"string"},"status":{"type":"string"},"default_branch":{"type":"string","nullable":true},"workflow_path":{"type":"string","nullable":true},"trigger_on_push":{"type":"boolean"},"trigger_on_pull_request":{"type":"boolean"},"trigger_on_schedule":{"type":"boolean"},"concurrency_key":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"status_label":{"type":"string"},"status_state":{"type":"string","enum":["active","successful","failed","canceled","blocked","skipped","enabled","inactive","unknown"]},"status_tone":{"type":"string","enum":["success","danger","warning","default"]}}},"CiPipelineRun":{"type":"object","required":["id","organization_id","repository_id","hosted_app_id","ci_pipeline_id","ci_runner_pool_id","creator_user_id","required_capabilities_csv","number","display_id","slug","status","trigger_kind","ref_name","commit_sha","source_url","message","concurrency_key","retry_number","queued_at","started_at","finished_at","canceled_at","parameters_json","created_at","updated_at","status_label","status_state","status_tone","active","failed","retryable"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"repository_id":{"type":"string","nullable":true},"hosted_app_id":{"type":"string","nullable":true},"ci_pipeline_id":{"type":"string"},"ci_runner_pool_id":{"type":"string","nullable":true},"creator_user_id":{"type":"string","nullable":true},"required_capabilities_csv":{"type":"string","nullable":true},"number":{"type":"integer"},"display_id":{"type":"integer"},"slug":{"type":"string"},"status":{"type":"string"},"trigger_kind":{"type":"string"},"ref_name":{"type":"string","nullable":true},"commit_sha":{"type":"string","nullable":true},"source_url":{"type":"string","nullable":true},"message":{"type":"string","nullable":true},"concurrency_key":{"type":"string","nullable":true},"retry_number":{"type":"integer"},"queued_at":{"type":"string","format":"date-time","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"canceled_at":{"type":"string","format":"date-time","nullable":true},"parameters_json":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"status_label":{"type":"string"},"status_state":{"type":"string","enum":["active","successful","failed","canceled","blocked","skipped","enabled","inactive","unknown"]},"status_tone":{"type":"string","enum":["success","danger","warning","default"]},"active":{"type":"boolean"},"failed":{"type":"boolean"},"retryable":{"type":"boolean"}}},"CiJob":{"type":"object","required":["id","organization_id","ci_pipeline_run_id","ci_runner_id","number","display_id","slug","name","kind","status","execution_order","runner_label_selector","timeout_seconds","allow_failure","queued_at","started_at","finished_at","exit_code","retry_number","environment_csv","dependencies_csv","created_at","updated_at","status_label","status_state","status_tone","active","failed"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_pipeline_run_id":{"type":"string"},"ci_runner_id":{"type":"string","nullable":true},"number":{"type":"integer"},"display_id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"execution_order":{"type":"integer"},"runner_label_selector":{"type":"string","nullable":true},"timeout_seconds":{"type":"integer","nullable":true},"allow_failure":{"type":"boolean"},"queued_at":{"type":"string","format":"date-time","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"exit_code":{"type":"integer","nullable":true},"retry_number":{"type":"integer"},"environment_csv":{"type":"string","nullable":true},"dependencies_csv":{"type":"string","nullable":true},"cache_archive_observations":{"type":"object","nullable":true,"description":"Bounded server response history; it does not confirm runner extraction or test-result reuse.","required":["events","omitted_count"],"properties":{"omitted_count":{"type":"integer","minimum":0},"events":{"type":"array","maxItems":32,"items":{"type":"object","required":["outcome","label","observed_at","response_bytes","elapsed_ms","attempt"],"properties":{"outcome":{"type":"string","enum":["miss","archive_missing","exact_response","prefix_response","published_exact_response","published_prefix_response","error"]},"label":{"type":"string"},"observed_at":{"type":"string","format":"date-time"},"response_bytes":{"type":"integer","minimum":0},"elapsed_ms":{"type":"number","minimum":0},"attempt":{"type":"integer","minimum":1},"native_publication_id":{"type":"string"},"cache_entry_id":{"type":"string"},"source_run_id":{"type":"string"},"source_commit_id":{"type":"string","nullable":true},"source_url":{"type":"string"}}}}}},"reuse":{"type":"object","nullable":true,"required":["source_job_id","source_run_id","source_url"],"properties":{"source_job_id":{"type":"string"},"source_run_id":{"type":"string"},"source_url":{"type":"string"}}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"status_label":{"type":"string"},"status_state":{"type":"string","enum":["active","successful","failed","canceled","blocked","skipped","enabled","inactive","unknown"]},"status_tone":{"type":"string","enum":["success","danger","warning","default"]},"active":{"type":"boolean"},"failed":{"type":"boolean"}}},"CiJobCatalog":{"allOf":[{"type":"object","required":["id","organization_id","ci_pipeline_run_id","ci_runner_id","number","display_id","slug","name","kind","status","execution_order","runner_label_selector","timeout_seconds","allow_failure","queued_at","started_at","finished_at","exit_code","retry_number","environment_csv","dependencies_csv","created_at","updated_at","status_label","status_state","status_tone","active","failed"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_pipeline_run_id":{"type":"string"},"ci_runner_id":{"type":"string","nullable":true},"number":{"type":"integer"},"display_id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"execution_order":{"type":"integer"},"runner_label_selector":{"type":"string","nullable":true},"timeout_seconds":{"type":"integer","nullable":true},"allow_failure":{"type":"boolean"},"queued_at":{"type":"string","format":"date-time","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"exit_code":{"type":"integer","nullable":true},"retry_number":{"type":"integer"},"environment_csv":{"type":"string","nullable":true},"dependencies_csv":{"type":"string","nullable":true},"cache_archive_observations":{"type":"object","nullable":true,"description":"Bounded server response history; it does not confirm runner extraction or test-result reuse.","required":["events","omitted_count"],"properties":{"omitted_count":{"type":"integer","minimum":0},"events":{"type":"array","maxItems":32,"items":{"type":"object","required":["outcome","label","observed_at","response_bytes","elapsed_ms","attempt"],"properties":{"outcome":{"type":"string","enum":["miss","archive_missing","exact_response","prefix_response","published_exact_response","published_prefix_response","error"]},"label":{"type":"string"},"observed_at":{"type":"string","format":"date-time"},"response_bytes":{"type":"integer","minimum":0},"elapsed_ms":{"type":"number","minimum":0},"attempt":{"type":"integer","minimum":1},"native_publication_id":{"type":"string"},"cache_entry_id":{"type":"string"},"source_run_id":{"type":"string"},"source_commit_id":{"type":"string","nullable":true},"source_url":{"type":"string"}}}}}},"reuse":{"type":"object","nullable":true,"required":["source_job_id","source_run_id","source_url"],"properties":{"source_job_id":{"type":"string"},"source_run_id":{"type":"string"},"source_url":{"type":"string"}}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"status_label":{"type":"string"},"status_state":{"type":"string","enum":["active","successful","failed","canceled","blocked","skipped","enabled","inactive","unknown"]},"status_tone":{"type":"string","enum":["success","danger","warning","default"]},"active":{"type":"boolean"},"failed":{"type":"boolean"}}},{"type":"object","required":["steps","log_chunks"],"properties":{"reconciliation_id":{"type":"string","nullable":true},"execution_profile":{"type":"string","enum":["automation-offline-v1","reconciliation-offline-v1"],"nullable":true},"steps":{"type":"array","items":{"type":"object","required":["id","organization_id","ci_job_id","slug","name","command","shell","working_directory","status","execution_order","retry_number","exit_code","started_at","finished_at","created_at","updated_at","status_label","status_state","status_tone","active","failed","secret_refs"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_job_id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"command":{"type":"string"},"shell":{"type":"string","nullable":true},"working_directory":{"type":"string","nullable":true},"status":{"type":"string"},"execution_order":{"type":"integer"},"retry_number":{"type":"integer"},"exit_code":{"type":"integer","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"observed_started_at":{"type":"string","format":"date-time","nullable":true,"readOnly":true,"description":"When the API first accepted a running update. Independent of the runner clock; absent or null for older and unobserved steps."},"observed_finished_at":{"type":"string","format":"date-time","nullable":true,"readOnly":true,"description":"When the API first accepted a terminal update. Includes transport effects; not a runner-local command duration."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"status_label":{"type":"string"},"status_state":{"type":"string","enum":["active","successful","failed","canceled","blocked","skipped","enabled","inactive","unknown"]},"status_tone":{"type":"string","enum":["success","danger","warning","default"]},"active":{"type":"boolean"},"failed":{"type":"boolean"},"secret_refs":{"type":"object","additionalProperties":{"type":"string"}},"cache_request":{"type":"object","nullable":true,"required":["key","restore_keys","paths","output_id"],"properties":{"key":{"type":"string"},"restore_keys":{"type":"array","items":{"type":"string"}},"paths":{"type":"array","items":{"type":"string"}},"output_id":{"type":"string"}}}}}},"log_chunks":{"type":"array","maxItems":25,"items":{"type":"object","required":["id","organization_id","ci_pipeline_run_id","ci_job_id","ci_step_id","sequence_number","stream","content_format","content","byte_size","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_pipeline_run_id":{"type":"string","nullable":true},"ci_job_id":{"type":"string","nullable":true},"ci_step_id":{"type":"string","nullable":true},"sequence_number":{"type":"integer"},"stream":{"type":"string"},"content_format":{"type":"string"},"content":{"type":"string"},"byte_size":{"type":"integer"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}}}]},"CiRunnerPool":{"type":"object","required":["id","organization_id","network_space_id","slug","name","status","runner_kind","isolation_mode","description","max_concurrency","labels_csv","node_capabilities_csv","elastic_provider_kind","elastic_config_json","bazel_enabled","bazel_properties_json","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"network_space_id":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"runner_kind":{"type":"string"},"isolation_mode":{"type":"string"},"description":{"type":"string","nullable":true},"max_concurrency":{"type":"integer"},"labels_csv":{"type":"string","nullable":true},"node_capabilities_csv":{"type":"string","nullable":true},"elastic_provider_kind":{"type":"string","nullable":true},"elastic_config_json":{"type":"string","nullable":true},"bazel_enabled":{"type":"boolean"},"bazel_properties_json":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"CiRunnerPoolCatalog":{"allOf":[{"type":"object","required":["id","organization_id","network_space_id","slug","name","status","runner_kind","isolation_mode","description","max_concurrency","labels_csv","node_capabilities_csv","elastic_provider_kind","elastic_config_json","bazel_enabled","bazel_properties_json","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"network_space_id":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"runner_kind":{"type":"string"},"isolation_mode":{"type":"string"},"description":{"type":"string","nullable":true},"max_concurrency":{"type":"integer"},"labels_csv":{"type":"string","nullable":true},"node_capabilities_csv":{"type":"string","nullable":true},"elastic_provider_kind":{"type":"string","nullable":true},"elastic_config_json":{"type":"string","nullable":true},"bazel_enabled":{"type":"boolean"},"bazel_properties_json":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},{"type":"object","required":["runners","runner_count_label","modal_capacity","modal_runner_invocations"],"properties":{"runners":{"type":"array","items":{"type":"object","required":["id","organization_id","ci_runner_pool_id","network_peer_id","slug","name","status","kind","os","architecture","version","labels_csv","node_capabilities_csv","node_certificate_fingerprint_sha256","node_certificate_serial","node_certificate_expires_at","bazel_enabled","bazel_properties_json","last_seen_at","online_at","offline_at","cordoned_at","revoked_at","health_state","schedulable","heartbeat_age_seconds","created_at","updated_at","node_certificate_expires_at_label","last_seen_at_label","online_at_label","offline_at_label","cordoned_at_label","revoked_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_runner_pool_id":{"type":"string"},"network_peer_id":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"kind":{"type":"string"},"os":{"type":"string","nullable":true},"architecture":{"type":"string","nullable":true},"version":{"type":"string","nullable":true},"labels_csv":{"type":"string","nullable":true},"node_capabilities_csv":{"type":"string","nullable":true},"node_certificate_fingerprint_sha256":{"type":"string","nullable":true},"node_certificate_serial":{"type":"string","nullable":true},"node_certificate_expires_at":{"type":"string","format":"date-time","nullable":true},"bazel_enabled":{"type":"boolean"},"bazel_properties_json":{"type":"string","nullable":true},"last_seen_at":{"type":"string","format":"date-time","nullable":true},"online_at":{"type":"string","format":"date-time","nullable":true},"offline_at":{"type":"string","format":"date-time","nullable":true},"cordoned_at":{"type":"string","format":"date-time","nullable":true},"revoked_at":{"type":"string","format":"date-time","nullable":true},"health_state":{"type":"string"},"schedulable":{"type":"boolean"},"heartbeat_age_seconds":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"node_certificate_expires_at_label":{"type":"string","nullable":true},"last_seen_at_label":{"type":"string","nullable":true},"online_at_label":{"type":"string","nullable":true},"offline_at_label":{"type":"string","nullable":true},"cordoned_at_label":{"type":"string","nullable":true},"revoked_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}},"runner_count_label":{"type":"string"},"modal_capacity":{"type":"object","required":["queued_jobs","active_or_pending_leases","inflight_modal_invocations","failed_modal_invocations","deficit"],"properties":{"queued_jobs":{"type":"integer"},"active_or_pending_leases":{"type":"integer"},"inflight_modal_invocations":{"type":"integer"},"failed_modal_invocations":{"type":"integer"},"deficit":{"type":"integer"}}},"modal_runner_invocations":{"type":"array","maxItems":50,"items":{"type":"object","required":["id","organization_id","ci_runner_pool_id","ci_runner_id","ci_runner_lease_id","ci_pipeline_run_id","ci_job_id","status","modal_app_name","modal_function_name","modal_environment_name","modal_call_id","modal_sandbox_id","runtime_kind","image_version","failure_kind","runner_slug","resource_class","cpu_millicores","memory_mb","ephemeral_disk_mb","retry_count","last_error","spawned_at","claimed_at","finished_at","created_at","updated_at","spawned_at_label","claimed_at_label","finished_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_runner_pool_id":{"type":"string"},"ci_runner_id":{"type":"string","nullable":true},"ci_runner_lease_id":{"type":"string","nullable":true},"ci_pipeline_run_id":{"type":"string","nullable":true},"ci_job_id":{"type":"string","nullable":true},"status":{"type":"string"},"modal_app_name":{"type":"string"},"modal_function_name":{"type":"string"},"modal_environment_name":{"type":"string","nullable":true},"modal_call_id":{"type":"string","nullable":true},"modal_sandbox_id":{"type":"string","nullable":true},"runtime_kind":{"type":"string","enum":["modal_function","modal_vm_sandbox"]},"image_version":{"type":"string"},"failure_kind":{"type":"string","enum":["provider","bootstrap","job","transport"],"nullable":true},"runner_slug":{"type":"string"},"resource_class":{"type":"string"},"cpu_millicores":{"type":"integer"},"memory_mb":{"type":"integer"},"ephemeral_disk_mb":{"type":"integer"},"retry_count":{"type":"integer"},"last_error":{"type":"string","nullable":true},"spawned_at":{"type":"string","format":"date-time","nullable":true},"claimed_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"spawned_at_label":{"type":"string","nullable":true},"claimed_at_label":{"type":"string","nullable":true},"finished_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}}}}]},"CiRunner":{"type":"object","required":["id","organization_id","ci_runner_pool_id","network_peer_id","slug","name","status","kind","os","architecture","version","labels_csv","node_capabilities_csv","node_certificate_fingerprint_sha256","node_certificate_serial","node_certificate_expires_at","bazel_enabled","bazel_properties_json","last_seen_at","online_at","offline_at","cordoned_at","revoked_at","health_state","schedulable","heartbeat_age_seconds","created_at","updated_at","node_certificate_expires_at_label","last_seen_at_label","online_at_label","offline_at_label","cordoned_at_label","revoked_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_runner_pool_id":{"type":"string"},"network_peer_id":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"kind":{"type":"string"},"os":{"type":"string","nullable":true},"architecture":{"type":"string","nullable":true},"version":{"type":"string","nullable":true},"labels_csv":{"type":"string","nullable":true},"node_capabilities_csv":{"type":"string","nullable":true},"node_certificate_fingerprint_sha256":{"type":"string","nullable":true},"node_certificate_serial":{"type":"string","nullable":true},"node_certificate_expires_at":{"type":"string","format":"date-time","nullable":true},"bazel_enabled":{"type":"boolean"},"bazel_properties_json":{"type":"string","nullable":true},"last_seen_at":{"type":"string","format":"date-time","nullable":true},"online_at":{"type":"string","format":"date-time","nullable":true},"offline_at":{"type":"string","format":"date-time","nullable":true},"cordoned_at":{"type":"string","format":"date-time","nullable":true},"revoked_at":{"type":"string","format":"date-time","nullable":true},"health_state":{"type":"string"},"schedulable":{"type":"boolean"},"heartbeat_age_seconds":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"node_certificate_expires_at_label":{"type":"string","nullable":true},"last_seen_at_label":{"type":"string","nullable":true},"online_at_label":{"type":"string","nullable":true},"offline_at_label":{"type":"string","nullable":true},"cordoned_at_label":{"type":"string","nullable":true},"revoked_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"CiNodeEnrollmentToken":{"type":"object","required":["id","organization_id","ci_runner_pool_id","creator_user_id","name","description","status","kind","capabilities_csv","token_hint","usage_count","expires_at","last_used_at","revoked_at","raw_token","created_at","updated_at","expires_at_label","last_used_at_label","created_at_label","updated_at_label","usage_count_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"ci_runner_pool_id":{"type":"string"},"creator_user_id":{"type":"string","nullable":true},"name":{"type":"string"},"description":{"type":"string","nullable":true},"status":{"type":"string"},"kind":{"type":"string"},"capabilities_csv":{"type":"string","nullable":true},"token_hint":{"type":"string"},"usage_count":{"type":"integer"},"expires_at":{"type":"string","format":"date-time","nullable":true},"last_used_at":{"type":"string","format":"date-time","nullable":true},"revoked_at":{"type":"string","format":"date-time","nullable":true},"raw_token":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"expires_at_label":{"type":"string","nullable":true},"last_used_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true},"usage_count_label":{"type":"string"}}},"ClawderLocalThread":{"type":"object","properties":{"id":{"type":"string"},"native_thread_id":{"type":"string"},"title":{"type":"string"},"device_id":{"type":"string"},"device_name":{"type":"string"},"parent_conversation_id":{"type":["string","null"]},"created_at":{"type":"string"},"can_send":{"type":"boolean"},"provider":{"type":"string","enum":["codex","claude"]},"relay_disconnected_at":{"type":["string","null"],"format":"date-time"},"can_disconnect_relay":{"type":"boolean"},"task_configured":{"type":"boolean"},"can_end":{"type":"boolean"},"can_interrupt":{"type":"boolean"},"end":{"anyOf":[{"$ref":"#/components/schemas/AgentRelaySourceEnd"},{"type":"null"}]},"relay_participant":{"$ref":"#/components/schemas/RelayNativeParticipant"}},"required":["id","native_thread_id","title","device_id","device_name","parent_conversation_id","created_at","can_send","provider","task_configured","can_end","can_interrupt","end"]},"ClawderLocalThreadResponse":{"type":"object","properties":{"thread":{"$ref":"#/components/schemas/ClawderLocalThread"}},"required":["thread"]},"ClawderLocalThreadInput":{"type":"object","additionalProperties":false,"required":["key","action","arguments"],"properties":{"key":{"type":"string","maxLength":512},"action":{"type":"string","enum":["threads.read","threads.release","threads.end","turns.start","turns.interrupt","threads.rename"]},"arguments":{"type":"object","additionalProperties":true}}},"ClawderLocalThreadAdoptionInput":{"type":"object","additionalProperties":false,"required":["key","device_id","provider","thread_id"],"properties":{"key":{"type":"string","minLength":1,"maxLength":512},"device_id":{"type":"string","minLength":1,"maxLength":200},"provider":{"type":"string","enum":["codex","claude"]},"thread_id":{"type":"string","minLength":1,"maxLength":200},"result_schema":{"type":["object","boolean"],"additionalProperties":true}}},"AgentRelayTaskSubmission":{"type":"object","properties":{"id":{"type":"string"},"operation_id":{"type":"string"},"final":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"},"data":{},"metadata":{"type":["object","null"],"additionalProperties":true},"data_expired":{"type":"boolean"},"delivery":{"type":["object","null"],"properties":{"state":{"type":"string","enum":["pending","dispatching","accepted","uncertain","discarded","expired"]},"input_run_id":{"type":"string"},"retryable":{"type":"boolean","enum":[false]}},"required":["state","input_run_id","retryable"],"additionalProperties":false}},"required":["id","operation_id","final","created_at","data","metadata","data_expired","delivery"],"additionalProperties":false},"AgentRelayTask":{"type":"object","properties":{"id":{"type":"string"},"source_operation_id":{"type":"string"},"state":{"type":"string","enum":["awaiting_result","in_progress","completed"]},"submitted_count":{"type":"integer","minimum":0},"result_schema":{"type":["object","boolean"],"additionalProperties":true},"results":{"type":"array","items":{"$ref":"#/components/schemas/AgentRelayTaskSubmission"},"maxItems":20},"next_cursor":{"type":["string","null"]}},"required":["id","source_operation_id","state","submitted_count","result_schema","results","next_cursor"],"additionalProperties":false},"AgentRelayTaskResponse":{"type":"object","properties":{"task":{"anyOf":[{"$ref":"#/components/schemas/AgentRelayTask"},{"type":"null"}]}},"required":["task"],"additionalProperties":false},"AgentRelayDeliveryReceipt":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","pattern":"^agent_relay_native_delivery_"},"state":{"type":"string","enum":["pending","enqueued","discarded","expired"]},"operation_id":{"type":["string","null"]},"retryable":{"const":false},"consent_decision":{"type":"string","enum":["automatic","approved","dismissed"]},"held":{"type":"boolean"},"final_reply":{"anyOf":[{"$ref":"#/components/schemas/AgentRelayFinalReply"},{"type":"null"}]}},"required":["id","state","operation_id","retryable","consent_decision","held","final_reply"]},"AgentRelayHeldDelivery":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"state":{"type":"string","enum":["pending","enqueued","discarded","expired"]},"operation_id":{"type":["string","null"]},"retryable":{"const":false},"consent_decision":{"type":"string","enum":["automatic","approved","dismissed"]},"held":{"type":"boolean"},"sender":{"type":["string","null"]},"text":{"type":["string","null"]},"text_omitted":{"type":"boolean"},"expires_at":{"type":"string"}},"required":["id","state","operation_id","retryable","consent_decision","held","sender","text","text_omitted","expires_at"]},"AgentRelayDeliveryPolicy":{"type":"object","additionalProperties":false,"properties":{"version":{"type":"integer","minimum":1},"restricted":{"type":"boolean"},"ask_first":{"type":"boolean"},"allowed_senders":{"type":"array","items":{"type":"string"},"maxItems":1000},"held":{"type":"array","items":{"$ref":"#/components/schemas/AgentRelayHeldDelivery"}},"next_cursor":{"type":["string","null"]},"recent_decisions":{"type":"array","items":{"$ref":"#/components/schemas/AgentRelayDeliveryReceipt"}},"reply_with_final_answer":{"type":["boolean","null"],"description":"True always forwards a final answer; false disables it. Null uses native replies and the original parent-reporting default for agent-created threads."},"final_answers_available":{"type":"boolean"},"final_replies":{"type":"array","items":{"$ref":"#/components/schemas/AgentRelayFinalReply"}}},"required":["version","restricted","ask_first","allowed_senders","held","next_cursor","recent_decisions","reply_with_final_answer","final_answers_available","final_replies"]},"AgentRelayDeliveryPolicyInput":{"type":"object","additionalProperties":false,"properties":{"expected_version":{"type":"integer","minimum":1},"restricted":{"type":"boolean"},"ask_first":{"type":"boolean"},"allowed_senders":{"type":"array","items":{"type":"string"},"uniqueItems":true,"maxItems":1000},"reply_with_final_answer":{"type":["boolean","null"],"description":"True always forwards a final answer; false disables it. Null uses native replies and the original parent-reporting default for agent-created threads."}},"required":["expected_version","restricted","ask_first","allowed_senders"]},"AgentRelayDeliveryDecisionInput":{"type":"object","additionalProperties":false,"properties":{"expected_version":{"type":"integer","minimum":1},"decision":{"type":"string","enum":["approve","dismiss"]}},"required":["expected_version","decision"]},"AgentRelayDeliveryPolicyResponse":{"type":"object","additionalProperties":false,"properties":{"policy":{"$ref":"#/components/schemas/AgentRelayDeliveryPolicy"}},"required":["policy"]},"AgentRelayDeliveryReceiptResponse":{"type":"object","additionalProperties":false,"properties":{"delivery":{"$ref":"#/components/schemas/AgentRelayDeliveryReceipt"},"policy":{"$ref":"#/components/schemas/AgentRelayDeliveryPolicy"}},"required":["delivery"]},"AgentRelayDeliveryRecoveryResponse":{"type":"object","additionalProperties":false,"properties":{"delivery":{"$ref":"#/components/schemas/AgentRelayDeliveryReceipt"},"policy":{"$ref":"#/components/schemas/AgentRelayDeliveryPolicy"},"decision_pending":{"type":"boolean"},"recovery_message":{"type":["string","null"]}},"required":["delivery","policy","decision_pending","recovery_message"]},"RelayNativeParticipant":{"type":"object","additionalProperties":false,"required":["source_operation_id","scope_key","name","canonical_name","version","pending_operation_id","pending_retirement_id","can_rename","aliases","management_actions","observation_action"],"properties":{"source_operation_id":{"type":"string"},"scope_key":{"type":"string"},"name":{"type":"string"},"canonical_name":{"type":"string"},"version":{"type":"integer"},"pending_operation_id":{"type":["string","null"]},"pending_retirement_id":{"type":["string","null"]},"can_rename":{"type":"boolean"},"aliases":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["name","forward_until","creating_operation_id"],"properties":{"name":{"type":"string"},"forward_until":{"type":["string","null"]},"creating_operation_id":{"type":"string","description":"Original operation that registered this alias, retained when its address is reused. Inspect with agent.rename_status."}}}},"management_actions":{"type":"array","items":{"$ref":"#/components/schemas/RelayManagementAction"}},"observation_action":{"$ref":"#/components/schemas/RelayOperationObservation"}}},"AgentRelayFinalReply":{"type":"object","additionalProperties":false,"required":["delivery_id","operation_id","kind","state","created_at"],"properties":{"delivery_id":{"type":"string"},"operation_id":{"type":["string","null"]},"kind":{"type":["string","null"],"enum":["automatic","native",null]},"state":{"type":"string","enum":["waiting","pending","running","completed","uncertain","not_sent"]},"created_at":{"type":"string"}}},"ClawderCallSession":{"type":"object","required":["value","expires_at"],"properties":{"value":{"type":"string","pattern":"^ek_[a-zA-Z0-9_-]{1,1024}$","description":"Ephemeral OpenAI client secret; keep private and never log it"},"expires_at":{"type":"integer","format":"int64","description":"Client secret expiration in Unix seconds"}},"additionalProperties":false},"ThreadWorkspace":{"type":"object","additionalProperties":false,"required":["id","name","state","reason","cleanup_after","created_at","can_keep","can_delete"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"state":{"type":"string","enum":["kept","scheduled","retiring","deleted"]},"reason":{"type":"string"},"cleanup_after":{"type":["string","null"],"format":"date-time"},"created_at":{"type":"string","format":"date-time"},"can_keep":{"type":"boolean"},"can_delete":{"type":"boolean"}}},"ClawderThreadTask":{"type":"object","additionalProperties":false,"required":["id","conversation_id","created_at","deadline_at","delegation_stopped_at","stop_state","can_stop","requests","waits"],"properties":{"id":{"type":"string"},"conversation_id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"deadline_at":{"type":"string","format":"date-time"},"delegation_stopped_at":{"type":["string","null"],"format":"date-time"},"stop_state":{"type":["string","null"],"enum":["stopping","stopped","needs_attention",null]},"can_stop":{"type":"boolean"},"requests":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","title","result","selection","can_open","stop_state"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"can_open":{"type":"boolean"},"stop_state":{"type":["string","null"],"enum":["stopping","stopped","needs_attention",null]},"selection":{"type":["object","null"],"properties":{"harness":{"type":"string"},"model":{"type":"string"},"reasoning":{"type":["string","null"]}}},"result":{"type":"object","required":["status"],"properties":{"status":{"type":"string","enum":["pending","running","completed","failed","needs_attention","cancelled"]},"conversation_id":{"type":"string"},"report":{"type":"string"},"error":{"type":"string"}}}}}},"waits":{"$ref":"#/components/schemas/ClawderThreadWaitPage"}}},"ClawderThreadWaitPage":{"type":"object","additionalProperties":false,"required":["items","next_cursor"],"properties":{"next_cursor":{"type":["string","null"]},"items":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","status","expires_at","wake_outcome","stop_state","can_stop"],"properties":{"id":{"type":"string"},"status":{"type":"string","enum":["waiting","queued","completed","needs_attention","cancelled"]},"expires_at":{"type":"string","format":"date-time"},"wake_outcome":{"type":["string","null"]},"stop_state":{"type":["string","null"],"enum":["stopping","stopped","needs_attention",null]},"can_stop":{"type":"boolean"}}}}}},"OrganizationAgentIntegrations":{"type":"object","properties":{"catalog":{"type":"array","items":{"$ref":"#/components/schemas/AgentIntegrationManifest"}},"connections":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationAgentConnection"}},"can_manage":{"type":"boolean"},"pagination":{"$ref":"#/components/schemas/OrganizationIntegrationPagination"},"account_counts":{"type":"object","additionalProperties":{"type":"integer"},"description":"Accounts the viewer can see per toolkit, across all account pages."},"connected_counts":{"type":"object","additionalProperties":{"type":"integer"},"description":"Signed-in accounts per toolkit, across all account pages. Only these make an app read as connected."},"pending_counts":{"type":"object","additionalProperties":{"type":"integer"},"description":"Accounts per toolkit whose sign-in was started but not finished, across all account pages."}},"required":["catalog","connections","can_manage","pagination","account_counts","connected_counts","pending_counts"],"additionalProperties":false},"AgentIntegrationDirectoryEntry":{"type":"object","description":"A catalog card: the manifest's display fields without action schemas.","properties":{"toolkit":{"type":"string"},"name":{"type":"string"},"catalog_section":{"type":"string","enum":["generative_media","ai_machine_learning","productivity_project_management","communication","crm_sales_support","marketing_social","search_web_data","analytics_data","developer_tools_devops","documents_files","design_creative","finance_accounting","ecommerce","scheduling_booking","hr_recruiting","workflow_automation","media_entertainment","education","security_identity","apps"]},"category":{"type":"string","description":"Short product label, such as CRM or Email."},"description":{"type":"string","description":"One-line catalog description of the app."},"certification":{"type":"string","enum":["preview","unavailable"]},"authentication":{"type":"string","enum":["composio_connect_link","spacesheep_oauth","unipile_hosted_auth"]},"can_create_account":{"type":"boolean"},"disabled_reason":{"type":["string","null"]}},"required":["toolkit","name","catalog_section","certification","authentication","can_create_account"],"additionalProperties":false},"OrganizationAgentIntegrationCatalog":{"type":"object","properties":{"catalog":{"type":"array","items":{"$ref":"#/components/schemas/AgentIntegrationDirectoryEntry"}},"can_manage":{"type":"boolean"}},"required":["catalog","can_manage"],"additionalProperties":false},"OrganizationAgentIntegrationAccounts":{"type":"object","properties":{"connections":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationAgentConnection"}},"pagination":{"$ref":"#/components/schemas/OrganizationIntegrationPagination"},"account_counts":{"type":"object","additionalProperties":{"type":"integer"},"description":"Accounts the viewer can see per toolkit, across all account pages."},"connected_counts":{"type":"object","additionalProperties":{"type":"integer"},"description":"Signed-in accounts per toolkit, across all account pages. Only these make an app read as connected."},"pending_counts":{"type":"object","additionalProperties":{"type":"integer"},"description":"Accounts per toolkit whose sign-in was started but not finished, across all account pages."}},"required":["connections","pagination","account_counts","connected_counts","pending_counts"],"additionalProperties":false},"ClawderAgentConnection":{"type":"object","properties":{"id":{"type":"string"},"toolkit":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["pending","active","expired","revoked","error"]},"generation":{"type":"integer"},"provider_identity":{"$ref":"#/components/schemas/ProviderIdentity"},"provider_disabled_reason":{"type":["string","null"]},"can_enable":{"type":"boolean"},"can_reconnect":{"type":"boolean"},"connected_by":{"type":["string","null"],"description":"Name of the person whose sign-in this account is."},"connected_by_you":{"type":"boolean","description":"True when the viewer is the person whose sign-in this account is."},"can_sync":{"type":"boolean","description":"The viewer's own sign-in is waiting; their app may ask Rails whether the browser finished."},"can_disconnect":{"type":"boolean"},"enabled":{"type":"boolean"},"reference":{"type":"string"},"ownership":{"type":"string","enum":["personal","organization"],"description":"Personal accounts are listed only to the agent's owner."},"automatic":{"type":"boolean","description":"True when the agent uses this account because it is private to its owner and the owner holds the account. It cannot be turned off while the agent stays private."},"access":{"type":"string","enum":["automatic","on","off","paused","not_allowed"],"description":"How this agent reaches the account: automatically while private to its holder, chosen on or off, paused by an admin, or not allowed because it is not a team account and the organization only allows team accounts on shared agents."},"keepable_on_share":{"type":"boolean","description":"True when the agent uses this account only because it is private, and its owner may keep it for the team when sharing the agent."},"team_sharing_enabled":{"type":"boolean"},"sharing_status":{"type":"string","enum":["team","private","personal","paused"],"description":"Agent account audience, including legacy personal and paused access."},"team_sharing_version":{"type":"integer"},"can_manage_sharing":{"type":"boolean"},"can_delete":{"type":"boolean"}},"required":["id","toolkit","name","status","generation","provider_identity","provider_disabled_reason","can_enable","can_reconnect","can_sync","connected_by","connected_by_you","can_disconnect","enabled","reference","ownership","automatic","access","keepable_on_share","team_sharing_enabled","team_sharing_version","can_manage_sharing","can_delete"],"additionalProperties":false},"ClawderAgentEmailEntry":{"type":"object","required":["id","from","subject","received_at","recipient_tag","spam","direction","to","delivery"],"properties":{"id":{"type":"string"},"direction":{"type":"string","enum":["inbound","outbound"],"description":"inbound: mail the agent received; outbound: mail it sent"},"to":{"type":"array","items":{"type":"string"}},"delivery":{"type":["string","null"],"enum":["sent","delivered","bounced","complained","rejected",null],"description":"What SES reported for mail the agent sent; null for received mail"},"from":{"type":"string"},"subject":{"type":["string","null"]},"received_at":{"type":"string","format":"date-time"},"recipient_tag":{"type":["string","null"],"description":"The +tag the sender used, if any"},"spam":{"type":"boolean","description":"SES judged it spam"},"preview":{"type":"string"}}},"ClawderAgentEmail":{"type":"object","description":"A native agent's own email address. address is null while it is still being created; can_read_inbox is true for its owner and people granted manager.","required":["address","can_read_inbox"],"properties":{"address":{"type":["string","null"]},"can_read_inbox":{"type":"boolean"}}},"ClawderAgentEmailInbox":{"type":"object","required":["address","messages","has_more"],"properties":{"address":{"type":"string"},"messages":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/ClawderAgentEmailEntry"}],"required":["preview"]}},"has_more":{"type":"boolean","description":"Older mail exists beyond this page"}}},"ClawderAgentEmailMessage":{"allOf":[{"$ref":"#/components/schemas/ClawderAgentEmailEntry"}],"type":"object","required":["to","text"],"properties":{"to":{"type":"array","items":{"type":"string"}},"text":{"type":"string","description":"From, To, Subject and Date headers, a blank line, then the body as plain text"}}},"ClawderAgentIntegrations":{"type":"object","properties":{"connections":{"type":"array","items":{"$ref":"#/components/schemas/ClawderAgentConnection"}},"can_manage":{"type":"boolean"},"catalog":{"type":"array","items":{"$ref":"#/components/schemas/AgentIntegrationManifest"}},"can_manage_organization":{"type":"boolean"},"pagination":{"$ref":"#/components/schemas/OrganizationIntegrationPagination"},"slack":{"$ref":"#/components/schemas/ClawderAgentSlack"},"email":{"$ref":"#/components/schemas/ClawderAgentEmail"},"account_counts":{"type":"object","additionalProperties":{"type":"integer"},"description":"Accounts the viewer can see per toolkit, across all account pages."},"connected_counts":{"type":"object","additionalProperties":{"type":"integer"},"description":"Signed-in accounts per toolkit, across all account pages. Only these make an app read as connected."},"pending_counts":{"type":"object","additionalProperties":{"type":"integer"},"description":"Accounts per toolkit whose sign-in was started but not finished, across all account pages."},"private_agent":{"type":"boolean","description":"Only the agent's owner can chat with it."},"accounts_path":{"type":"string","description":"Web path of the organization's Integrations page, where people reconnect and remove the accounts this agent lists. Add integrations_q to show one app."},"shared_agent_personal_accounts_enabled":{"type":"boolean","description":"Whether the organization lets a shared agent use one person's account for everyone who chats with it. When false, only team accounts work once the agent is shared."},"connect_as_by_toolkit":{"type":"object","additionalProperties":{"type":["string","null"],"enum":["personal","organization",null]},"description":"Apps whose Connect differs from connect_as because their sign-in only makes team accounts."},"connect_as":{"type":["string","null"],"enum":["personal","organization",null],"description":"The account Connect creates and switches on for this agent: the owner's own (personal) or, for an admin connecting someone else's agent, the team's (organization). Null when the viewer cannot connect apps here."},"added_toolkits":{"type":"array","items":{"type":"string"},"description":"Apps with a connected or connecting account the viewer can see. The Apps panel lists them among the agent's accounts rather than as apps to add."},"webhooks_available":{"type":"boolean"},"webhook_connections":{"type":"array","items":{"$ref":"#/components/schemas/ClawderWebhookConnection"}}},"required":["connections","can_manage","catalog","can_manage_organization","pagination","slack","email","account_counts","webhooks_available","webhook_connections","connected_counts","pending_counts","added_toolkits","connect_as","connect_as_by_toolkit","private_agent","shared_agent_personal_accounts_enabled","accounts_path"],"additionalProperties":false},"ClawderAgentIntegrationSelection":{"type":"object","properties":{"connection_id":{"type":"string"},"generation":{"type":"integer"},"enabled":{"type":"boolean"}},"required":["connection_id","generation","enabled"],"additionalProperties":false},"OrganizationAgentConnection":{"type":"object","properties":{"id":{"type":"string"},"toolkit":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["pending","active","expired","revoked","error"]},"generation":{"type":"integer"},"provider_identity":{"$ref":"#/components/schemas/ProviderIdentity"},"provider_disabled_reason":{"type":["string","null"]},"can_enable":{"type":"boolean"},"can_reconnect":{"type":"boolean"},"connected_by":{"type":["string","null"],"description":"Name of the person whose sign-in this account is."},"connected_by_you":{"type":"boolean","description":"True when the viewer is the person whose sign-in this account is."},"can_sync":{"type":"boolean","description":"The viewer's own sign-in is waiting; their app may ask Rails whether the browser finished."},"can_disconnect":{"type":"boolean"},"reference":{"type":"string","description":"Pins this account's current authorization, as agent_connection_ID:GENERATION."},"team_sharing_enabled":{"type":"boolean"},"sharing_status":{"type":"string","enum":["team","private","personal","paused"],"description":"Agent account audience, including legacy personal and paused access."},"team_sharing_version":{"type":"integer"},"can_manage_sharing":{"type":"boolean"},"can_delete":{"type":"boolean"}},"required":["id","toolkit","name","status","generation","provider_identity","provider_disabled_reason","can_enable","can_reconnect","can_sync","connected_by","connected_by_you","can_disconnect","reference","team_sharing_enabled","team_sharing_version","can_manage_sharing","can_delete"],"additionalProperties":false},"OrganizationAgentConnectionDetail":{"type":"object","properties":{"id":{"type":"string"},"toolkit":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["pending","active","expired","revoked","error"]},"generation":{"type":"integer"},"provider_identity":{"$ref":"#/components/schemas/ProviderIdentity"},"provider_disabled_reason":{"type":["string","null"]},"can_enable":{"type":"boolean"},"can_reconnect":{"type":"boolean"},"connected_by":{"type":["string","null"],"description":"Name of the person whose sign-in this account is."},"connected_by_you":{"type":"boolean","description":"True when the viewer is the person whose sign-in this account is."},"can_sync":{"type":"boolean","description":"The viewer's own sign-in is waiting; their app may ask Rails whether the browser finished."},"can_disconnect":{"type":"boolean"},"reference":{"type":"string","description":"Pins this account's current authorization, as agent_connection_ID:GENERATION."},"team_sharing_enabled":{"type":"boolean"},"sharing_status":{"type":"string","enum":["team","private","personal","paused"],"description":"Agent account audience, including legacy personal and paused access."},"team_sharing_version":{"type":"integer"},"can_manage_sharing":{"type":"boolean"},"can_delete":{"type":"boolean"},"provider_name":{"type":["string","null"],"description":"The app's display name; null for a custom MCP server, which uses the account name."}},"required":["id","toolkit","name","status","generation","provider_identity","provider_disabled_reason","can_enable","can_reconnect","can_sync","connected_by","connected_by_you","can_disconnect","reference","team_sharing_enabled","team_sharing_version","can_manage_sharing","can_delete","provider_name"],"additionalProperties":false},"OrganizationIntegrationPagination":{"type":"object","properties":{"limit":{"type":"integer"},"next":{"type":["string","null"]}},"required":["limit","next"],"additionalProperties":false},"ClawderAgentSlack":{"type":"object","properties":{"available":{"type":"boolean"},"workspace_name":{"type":["string","null"]},"account_connected":{"type":"boolean"},"can_manage":{"type":"boolean"},"can_publish":{"type":"boolean"},"disabled_reason":{"type":["string","null"]},"connect_url":{"type":"string"},"handle":{"type":"string"},"display_name":{"type":"string"},"icon_emoji":{"type":"string"},"mention_id":{"type":["string","null"]},"channels":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"enabled":{"type":"boolean"},"allow_slack_connect":{"type":"boolean"}},"required":["id","enabled","allow_slack_connect"],"additionalProperties":false}},"can_edit_handle":{"type":"boolean"},"app":{"$ref":"#/components/schemas/ClawderAgentSlackApp"},"channel_setup_available":{"type":"boolean"}},"required":["available","workspace_name","account_connected","can_manage","can_publish","disabled_reason","connect_url","handle","display_name","icon_emoji","mention_id","channels","can_edit_handle","app","channel_setup_available"],"additionalProperties":false},"ClawderAgentSlackUpdate":{"type":"object","properties":{"action":{"type":"string","enum":["connect","disconnect","slack_connect"]},"channel":{"type":"string"},"handle":{"type":"string"},"icon_emoji":{"type":"string"},"allow_slack_connect":{"type":"boolean"}},"required":["action","channel"],"additionalProperties":false},"ClawderAgentSlackApp":{"type":"object","properties":{"prepared":{"type":"boolean"},"connected":{"type":"boolean"},"configured":{"type":"boolean"},"setup_url":{"type":["string","null"]},"event_url":{"type":["string","null"]},"settings_url":{"type":["string","null"]},"version":{"type":"integer"},"can_configure":{"type":"boolean"},"can_disconnect":{"type":"boolean"},"character_url":{"type":["string","null"]}},"required":["prepared","connected","configured","setup_url","event_url","settings_url","version","can_configure","can_disconnect","character_url"],"additionalProperties":false},"ClawderAgentSlackAppUpdate":{"type":"object","properties":{"action":{"type":"string","enum":["prepare","connect","disconnect"]},"bot_token":{"type":"string","writeOnly":true},"signing_secret":{"type":"string","writeOnly":true},"expected_version":{"type":"integer","minimum":0}},"required":["action"],"additionalProperties":false},"ClawderSlackChannel":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"is_private":{"type":"boolean"},"is_member":{"type":"boolean"},"is_slack_connect":{"type":"boolean"},"published":{"type":"boolean"}},"required":["id","name","is_private","is_member","is_slack_connect","published"],"additionalProperties":false},"ClawderSlackChannels":{"type":"object","properties":{"channels":{"type":"array","items":{"$ref":"#/components/schemas/ClawderSlackChannel"}},"next_cursor":{"type":["string","null"]}},"required":["channels","next_cursor"],"additionalProperties":false},"PersistentAgentClawderThread":{"type":"object","properties":{"archived":{"type":"boolean"},"can_archive":{"type":"boolean"},"archive_deletes_sandbox":{"type":"boolean"},"id":{"type":"string"},"title":{"type":"string"},"kind":{"type":"string","enum":["conversation","subagent"]},"updated_at":{"type":["string","null"]},"has_active_run":{"type":"boolean"},"group":{"type":"string","enum":["needs","failed","working","queued","waiting","done"],"description":"Rails-owned list group, in precedence order: attention, active run, coordination custody, then done. Rows retain server order; only done rows may fold under Older."},"coordination_status":{"description":"Durable work not represented by a native run: a queued input or an outstanding thread report.","type":["string","null"],"enum":["queued","waiting",null]},"is_main":{"type":"boolean"},"attention":{"description":"Why the person should open this thread: a pending question, the agent asking for attention, or a run that did not finish.","type":["object","null"],"additionalProperties":false,"required":["kind","text"],"properties":{"kind":{"type":"string","enum":["question","agent","failed"]},"text":{"type":"string"}}},"can_compact":{"type":"boolean"},"older":{"type":"boolean","description":"Nothing needs the person here, it is not working, and it has not changed for a day; the list folds it under Older."},"execution":{"type":"object","additionalProperties":false,"required":["kind"],"description":"device_folder threads also report state and path; sandbox threads run on their own machine with the coding agent in harness.","properties":{"kind":{"type":"string","enum":["device_folder","sandbox"]},"state":{"type":"string"},"path":{"type":"string"},"device_id":{"type":["string","null"]},"device_name":{"type":["string","null"]},"harness":{"type":"string","enum":["codex","claude","pi"]},"repository_id":{"type":"string","description":"The repository a sandbox thread's machine clones, when it has one."},"repository_name":{"type":"string","description":"The name of repository_id."},"branch":{"type":"string","description":"The branch a sandbox thread's last workspace check saw. Absent after newer activity, until the next check."},"base_branch":{"type":"string","description":"The branch a sandbox thread's machine cloned, when it was started from one."},"model":{"type":"string","description":"The model a sandbox thread the agent started runs, from its recorded selection."},"model_label":{"type":"string","description":"The display name of model, such as Claude Opus 5.5. Name the thread's author with it, not the coding agent."},"environment":{"$ref":"#/components/schemas/ClawderRepositoryEnvironment","description":"The repository's current setup state, only for a sandbox thread that started without a ready environment."}}},"parent_conversation_id":{"type":"string","description":"Source conversation to return to."},"parent_conversation_title":{"type":"string","description":"Source conversation title, resolved independently of this page."}},"required":["id","title","kind","updated_at","has_active_run","group","is_main","attention","can_compact","archived","can_archive","older"],"additionalProperties":false},"PersistentAgentClawderThreads":{"type":"object","properties":{"archived_count":{"type":["integer","null"],"minimum":0,"description":"Exact total of archived conversations for this agent, including subagents but excluding workflow task, cron and system sessions. Null or omitted when the runtime cannot establish the complete total without an unbounded archive read; never a loaded-page count."},"threads":{"type":"array","items":{"$ref":"#/components/schemas/PersistentAgentClawderThread"}},"main_thread_id":{"type":"string"},"next_cursor":{"type":["string","null"]},"can_create":{"type":"boolean"},"selected_thread":{"anyOf":[{"$ref":"#/components/schemas/PersistentAgentClawderThread"},{"type":"null"}]},"local_threads":{"type":"array","items":{"$ref":"#/components/schemas/ClawderLocalThread"}},"local_next_cursor":{"type":["string","null"]},"local_scope_key":{"type":["string","null"]}},"required":["threads","main_thread_id","next_cursor","can_create","selected_thread","local_threads","local_next_cursor","local_scope_key"],"additionalProperties":false},"PersistentAgentClawderThreadCreated":{"type":"object","properties":{"thread":{"$ref":"#/components/schemas/PersistentAgentClawderThread"},"first_input":{"$ref":"#/components/schemas/PersistentAgentClawderInputReceipt"},"first_input_key":{"type":"string","description":"Idempotency-Key that finds the first message through input_delivery. Present with first_input."},"first_input_requester_membership_id":{"type":"string","description":"Membership the first message was sent as, for input_delivery. Absent when it is bound to none."}},"required":["thread"],"additionalProperties":false},"PersistentAgentClawderCompacted":{"type":"object","properties":{"thread_id":{"type":"string"},"status":{"type":"string","enum":["completed","unchanged"]}},"required":["thread_id","status"],"additionalProperties":false},"PersistentAgentClawderLifecycle":{"type":"object","properties":{"heartbeat":{"type":"object","properties":{"enabled":{"type":"boolean"},"interval_minutes":{"type":["number","null"]},"last_run_at":{"type":"string","nullable":true},"last_status":{"type":"string","nullable":true}},"required":["enabled","interval_minutes","last_run_at","last_status"],"additionalProperties":false},"memory":{"type":"object","properties":{"provider":{"type":"string"},"remember_across_conversations":{"type":"boolean"}},"required":["provider","remember_across_conversations"],"additionalProperties":false},"compaction":{"type":"object","properties":{"mode":{"type":"string"}},"required":["mode"],"additionalProperties":false},"can_manage":{"type":"boolean"}},"required":["heartbeat","memory","compaction","can_manage"],"additionalProperties":false},"PersistentAgentClawderCompute":{"type":"object","additionalProperties":false,"required":["can_create","requester_membership_id","devices","next_cursor","devices_enabled"],"properties":{"can_create":{"type":"boolean"},"requester_membership_id":{"type":["string","null"]},"next_cursor":{"type":["string","null"]},"devices":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["device_id","name","platform","owned","can_browse_folders","projects"],"properties":{"device_id":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","enum":["darwin","win32","linux"]},"owned":{"type":"boolean","description":"Whether the requester owns this computer and can remove its projects."},"can_browse_folders":{"type":"boolean","description":"Whether the requester can list this computer's folders."},"projects":{"type":"array","maxItems":20,"description":"Visible recent project folders, most recent first.","items":{"type":"object","additionalProperties":false,"required":["project_id","path"],"properties":{"project_id":{"type":"string"},"path":{"type":"string"}}}},"selected_folders":{"type":"array","maxItems":20,"items":{"type":"string"},"description":"Configured folder shortcuts for new threads; empty when all folders are visible."}}}},"devices_enabled":{"type":"boolean"},"sandbox_harnesses":{"type":"array","description":"Coding agents a new sandbox thread can use now: codex plus each one whose credential is available. Present only for private bots.","items":{"type":"string","enum":["codex","claude","pi"]}},"empty_folder_harnesses":{"type":"array","description":"Coding agents a thread can use in an empty folder, with no repository. Present only for private bots.","items":{"type":"string","enum":["codex","claude","pi"]}},"sandbox_repositories":{"type":"array","description":"Granted, available repositories a new sandbox thread can start on, in grant order. ready means it starts from the repository's environment image. Present only for private bots.","items":{"type":"object","additionalProperties":false,"required":["id","name","ready","harnesses"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"ready":{"type":"boolean"},"harnesses":{"type":"array","description":"Coding agents a thread on this repository can use now, default first. A repository that isn't set up runs Codex only.","items":{"type":"string","enum":["codex","claude","pi"]}}}}}}},"PersistentAgentClawderComputeView":{"type":"object","additionalProperties":false,"required":["choices"],"properties":{"choices":{"$ref":"#/components/schemas/PersistentAgentClawderCompute"},"threads":{"description":"Only when conversation_id is sent; kept for Composal Desktop 0.1.24 and earlier.","$ref":"#/components/schemas/PersistentAgentClawderThreads"}}},"PersistentAgentLobsterPipelineCommands":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["name","model","harness","fresh_context","detail"],"properties":{"name":{"type":"string"},"model":{"type":"string","nullable":true},"harness":{"type":"string","nullable":true},"fresh_context":{"type":"boolean"},"detail":{"type":"string","nullable":true,"description":"The agent stage's prompt or the sandbox stage's command."}}}}},"PersistentAgentLobsterPipelineCheckpoints":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["kind","prompt"],"properties":{"kind":{"type":"string","enum":["input","approval"]},"prompt":{"type":"string","nullable":true}}}}},"PersistentAgentWorkflowProposal":{"type":"object","additionalProperties":false,"required":["id","path","name","digest","base_digest","created_at","saved","stale","definition","pipeline_commands","pipeline_checkpoints","error","can_manage","can_save","starts","trigger_error","runs_on_earlier_version"],"properties":{"id":{"type":"string"},"path":{"type":"string"},"name":{"type":"string"},"digest":{"type":"string","description":"Names the reviewed version, its source and trigger; send it to save this version."},"base_digest":{"type":"string","nullable":true,"description":"The saved workflow this proposal changes; null for a new workflow."},"created_at":{"type":"string","format":"date-time"},"saved":{"nullable":true,"type":"object","additionalProperties":false,"required":["at","by"],"properties":{"at":{"type":"string","format":"date-time"},"by":{"type":"object","additionalProperties":false,"required":["kind"],"properties":{"kind":{"type":"string","enum":["person","agent"]},"name":{"type":"string"}}}}},"stale":{"type":"boolean","description":"The workflow changed since the proposal, so it cannot be saved."},"definition":{"type":"object","additionalProperties":true,"nullable":true},"pipeline_commands":{"$ref":"#/components/schemas/PersistentAgentLobsterPipelineCommands"},"pipeline_checkpoints":{"$ref":"#/components/schemas/PersistentAgentLobsterPipelineCheckpoints"},"error":{"type":"string","nullable":true,"description":"Why the proposal no longer passes its checks, such as a model this agent no longer has."},"can_manage":{"type":"boolean"},"can_save":{"type":"boolean","description":"The viewer can save this proposal now: they manage the agent, and it is unsaved, current and passes its checks."},"starts":{"nullable":true,"description":"What starts the workflow without a chat turn; saving the proposal sets this trigger.","type":"object","additionalProperties":false,"required":["kind","source","event_kinds","min_severity","schedule","found","on","daily_limit","run_budget_usd"],"properties":{"kind":{"type":"string","enum":["event","schedule"]},"source":{"type":"string","nullable":true,"description":"Where events come from: a signal provider such as sentry, signals for several, github or verify."},"event_kinds":{"type":"array","items":{"type":"string"},"description":"The signal kinds or event types it starts on; empty for any."},"min_severity":{"type":"string","nullable":true},"schedule":{"type":"object","nullable":true,"additionalProperties":true,"description":"A cron expression with its time zone, or an interval."},"found":{"type":"boolean","description":"The event subscription it names still exists."},"on":{"type":"boolean","nullable":true,"description":"Once saved, whether a trigger for the saved file is on; null before."},"daily_limit":{"type":"integer","nullable":true,"description":"How many events a day may start a run."},"run_budget_usd":{"type":"number","nullable":true,"description":"The most each run may spend."}}},"trigger_error":{"type":"string","nullable":true,"description":"Why the save could not set the trigger; only in the reply to that save."},"runs_on_earlier_version":{"type":"integer","nullable":true,"description":"Runs already going when this save replaced the file, which finish on the version they started with; only in the reply to that save."}}},"PersistentAgentLobsterWorkflows":{"type":"object","additionalProperties":false,"required":["workflows","truncated","can_manage","templates"],"properties":{"can_manage":{"type":"boolean"},"truncated":{"type":"boolean"},"templates":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","name","description","args","grants","models"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"args":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["name","description","default"],"properties":{"name":{"type":"string"},"description":{"type":"string","nullable":true},"default":{"type":"string","nullable":true}}}},"grants":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","label","granted"],"properties":{"id":{"type":"string"},"label":{"type":"string"},"granted":{"type":"boolean","description":"Whether this agent holds the grant now. Rails checks repository_write and pull_request_write against the agent's work repository grants and GitHub connections; a grant it cannot check is false."}}}},"models":{"type":"array","items":{"type":"string"}}}}},"workflows":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["path","name","digest","definition","source","error","pipeline_commands","pipeline_checkpoints","diagnostics"],"properties":{"path":{"type":"string"},"name":{"type":"string"},"digest":{"type":"string","nullable":true},"definition":{"type":"object","additionalProperties":true,"nullable":true},"source":{"type":"string","nullable":true},"diagnostics":{"type":"array","items":{"type":"string"}},"pipeline_commands":{"$ref":"#/components/schemas/PersistentAgentLobsterPipelineCommands"},"pipeline_checkpoints":{"$ref":"#/components/schemas/PersistentAgentLobsterPipelineCheckpoints"},"error":{"type":"string","nullable":true}}}}}},"ClawderRepositories":{"type":"object","additionalProperties":false,"required":["work_repositories","version","can_manage","environments","repository_choices","repository_choices_truncated"],"properties":{"environments":{"type":"object","description":"Sandbox environment per granted repository ID, shared by every bot granted that repository.","additionalProperties":{"$ref":"#/components/schemas/ClawderRepositoryEnvironment"}},"work_repositories":{"type":"array","maxItems":20,"items":{"$ref":"#/components/schemas/PersistentAgentWorkRepository"}},"version":{"type":"integer","minimum":0},"can_manage":{"type":"boolean"},"repository_choices":{"type":"array","items":{"$ref":"#/components/schemas/PersistentAgentRepositoryChoice"}},"repository_choices_truncated":{"type":"boolean"},"repository_choices_error":{"type":["string","null"],"description":"GitHub discovery warning. Saved grants and known local repository choices remain available."}}},"ClawderRepositoryEnvironment":{"type":"object","additionalProperties":false,"required":["status","can_prepare"],"properties":{"can_prepare":{"type":"boolean","description":"Whether this person can start preparing the environment now. False while it is preparing, building or ready, unless a ready environment has a failed_update, and for people who cannot manage the bot."},"can_check_branch":{"type":"boolean","description":"Whether this person can check this repository's environment recipe on a branch through Prepare. Needs a bot they manage and only they can use, in an organization with sandbox threads. Only in the repositories read."},"status":{"type":"string","enum":["none","preparing","building","failed","awaiting_trunk","unsupported","ready"],"description":"none has no recipe build yet; preparing is a setup run writing the recipe; unsupported declares something bots cannot use, such as secrets; ready is the promoted revision thread sandboxes start from."},"revision_id":{"type":"string"},"failure_code":{"type":"string"},"failed_update":{"type":"object","additionalProperties":false,"required":["revision_id"],"description":"Only when ready. The repository's newest recipe on its default branch failed to build, so threads still start from the ready revision. Prepare builds it again.","properties":{"revision_id":{"type":"string"},"failure_code":{"type":"string"}}},"setup":{"type":"object","additionalProperties":false,"description":"The latest setup run until a recipe revision exists, only when this bot ran it; other bots see the status alone. Prepare with a branch answers with the branch check it started.","properties":{"conversation_id":{"type":"string","description":"The setup or check thread's conversation, once it started"},"branch":{"type":"string","description":"The branch a check builds and proves. Only in the answer to the Prepare that started the check; the repositories read never shows a check."},"pull_request_url":{"type":"string"},"failed_step":{"type":"string"},"failure_reason":{"type":"string"}}}}},"ClawderSettings":{"type":"object","properties":{"instructions":{"type":"string"},"version":{"type":"string"},"can_manage":{"type":"boolean"}},"required":["instructions","version","can_manage"],"additionalProperties":false},"ClawderSettingsInput":{"type":"object","properties":{"instructions":{"type":"string","maxLength":64000},"expected_version":{"type":"string"}},"required":["instructions","expected_version"],"additionalProperties":false},"ClawderSkills":{"type":"object","properties":{"version":{"type":"string"},"can_manage":{"type":"boolean"},"skills":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"enabled":{"type":"boolean"},"available":{"type":"boolean"},"can_configure":{"type":"boolean"}},"required":["name","description","enabled","available","can_configure"],"additionalProperties":false}},"configuration_state":{"type":"string","enum":["pending"],"description":"The requested managed skill selection is awaiting runtime qualification."}},"required":["version","can_manage","skills"],"additionalProperties":false},"ClawderSkillInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"enabled":{"type":"boolean"},"version":{"type":"string"}},"required":["name","enabled","version"],"additionalProperties":false},"ClawderAgentModelInput":{"type":"object","additionalProperties":false,"required":["provider","model"],"properties":{"provider":{"type":"string"},"model":{"type":"string"},"reasoning":{"type":["string","null"],"description":"One of the model's reasoning levels in the Composal catalog. Omit or null for the runtime default."}}},"ClawderAgentModel":{"type":"object","additionalProperties":false,"required":["provider","model","reasoning"],"properties":{"provider":{"type":"string"},"model":{"type":"string"},"reasoning":{"type":["string","null"]}}},"ClawderRoutine":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"enabled":{"type":"boolean"},"managed":{"type":"boolean"},"kind":{"type":"string","enum":["heartbeat","routine"]},"schedule":{"type":"object","properties":{"kind":{"type":"string"},"expression":{"type":"string","nullable":true},"timezone":{"type":"string","nullable":true},"every_ms":{"type":["number","null"]},"at":{"type":"string","nullable":true}},"required":["kind"],"additionalProperties":false},"schedule_label":{"type":"string"},"last_run_at":{"type":"string","nullable":true},"last_status":{"type":"string","nullable":true},"last_error":{"type":"string","nullable":true},"next_run_at":{"type":"string","nullable":true},"consecutive_errors":{"type":"integer"}},"required":["id","name","description","enabled","managed","kind","schedule","schedule_label","last_run_at","last_status","last_error","next_run_at","consecutive_errors"],"additionalProperties":false},"ClawderRoutines":{"type":"object","properties":{"routines":{"type":"array","items":{"$ref":"#/components/schemas/ClawderRoutine"}},"next_cursor":{"type":"string","nullable":true},"can_manage":{"type":"boolean"}},"required":["routines","next_cursor","can_manage"],"additionalProperties":false},"ClawderRoutineUpdated":{"type":"object","properties":{"routine":{"$ref":"#/components/schemas/ClawderRoutine"},"can_manage":{"type":"boolean"}},"required":["routine","can_manage"],"additionalProperties":false},"ClawderLibraryItem":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"filename":{"type":"string"},"content_type":{"type":"string"},"byte_size":{"type":"integer"},"checksum_sha256":{"type":"string"},"created_at":{"type":"string"},"download_url":{"type":"string"}},"required":["id","title","filename","content_type","byte_size","checksum_sha256","created_at","download_url"],"additionalProperties":false},"ClawderLibrary":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ClawderLibraryItem"}},"pagination":{"type":"object","properties":{"limit":{"type":"integer"},"next":{"type":"string","nullable":true}},"required":["limit"],"additionalProperties":false}},"required":["items","pagination"],"additionalProperties":false},"ClawderSite":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"hostname":{"type":"string"},"url":{"type":"string"},"visibility":{"type":"string","enum":["public","org","private"]},"deployments_count":{"type":"integer"},"deployed_at":{"type":"string"},"https":{"type":"string","enum":["active","pending","failed"],"description":"Whether the organization's certificate serves this site over HTTPS"}},"required":["id","name","hostname","url","visibility","deployments_count","deployed_at","https"],"additionalProperties":false},"ClawderSites":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ClawderSite"}},"pagination":{"type":"object","properties":{"limit":{"type":"integer"},"next":{"type":"string","nullable":true}},"required":["limit"],"additionalProperties":false}},"required":["items","pagination"],"additionalProperties":false},"ClawderPullRequest":{"type":"object","required":["id","repository","number","url","title","status","owners"],"properties":{"id":{"type":"string"},"repository":{"type":"string"},"number":{"type":"integer"},"url":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"string","enum":["open","draft","merged","closed","unavailable"]},"owners":{"type":"array","items":{"type":"object","required":["id","title","kind"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"kind":{"type":"string","enum":["conversation","subagent"]},"relationship":{"type":"string","enum":["created","monitored"]}}}}}},"ClawderPullRequests":{"type":"object","required":["items","next_cursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ClawderPullRequest"}},"next_cursor":{"type":["string","null"]}}},"ClawderSubscriptions":{"type":"object","properties":{"available":{"type":"boolean","const":true},"version":{"type":"string"},"profiles":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string","enum":["openai","anthropic","xai"]},"id":{"type":"string"},"label":{"type":"string"},"email":{"type":"string","description":"Account email supplied by the subscription provider, when available. Separate from the editable label."},"status":{"type":"string"},"usable":{"type":"boolean","description":"Whether Rails can bill this account now. Absent on older API replicas."},"expires_at":{"oneOf":[{"type":"string"},{"type":"number"}]},"saved":{"type":"boolean","description":"A personal saved account reusable on other owned private agents."},"can_disconnect":{"type":"boolean","description":"Whether this account is attached to the current agent."}},"required":["provider","id","label","status"],"additionalProperties":false}},"methods":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["openai/openai","openai/openai-device-code","xai/xai-oauth"]},"label":{"type":"string"}},"required":["id","label"],"additionalProperties":false}},"models":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string","enum":["openai","anthropic","xai"]},"id":{"type":"string"},"name":{"type":"string"},"default_reasoning":{"type":"string"},"reasoning":{"type":"array","items":{"type":"string"},"description":"Effort levels this plan model accepts."},"speeds":{"type":"array","items":{"type":"string","enum":["regular","fast","ultrafast"]},"description":"Speed modes advertised by this connected account and model. Missing metadata enables Standard only."}},"required":["provider","id","name"],"additionalProperties":false}},"selection":{"oneOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["openai","anthropic","xai"]},"profile_id":{"type":"string"},"model":{"type":"string"},"reasoning":{"type":"string"}},"required":["provider","profile_id","model"],"additionalProperties":false},{"type":"null"}]},"login":{"oneOf":[{"type":"object","properties":{"id":{"type":"string"},"pending":{"type":"boolean"},"done":{"type":"boolean"},"status":{"type":"string"},"error":{"type":"string"},"step":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"title":{"type":"string"},"message":{"type":"string"},"sensitive":{"type":"boolean"},"executor":{"type":"string"},"external_url":{"type":"string"},"device_code":{"type":"string"},"options":{"type":"array","items":{"type":"object","properties":{"value":{"oneOf":[{"type":"string"},{"type":"boolean"}]},"label":{"type":"string"}},"required":["value","label"],"additionalProperties":false}}},"required":["id","type","title","message","sensitive","executor"],"additionalProperties":false}},"required":["id","pending","done","status"],"additionalProperties":false},{"type":"null"}]},"ready_providers":{"type":"array","description":"Providers with an account that can bill now. Absent on older API replicas.","items":{"type":"string","enum":["openai","anthropic","xai"]}},"defaults":{"type":"array","items":{"type":"object","required":["provider","model"],"properties":{"provider":{"type":"string","enum":["openai","anthropic","xai"]},"model":{"type":"string"}},"additionalProperties":false}},"selection_ready":{"type":"boolean","description":"Whether the selected subscription is attached and ready for this private agent."}},"required":["available","version","profiles","methods","models","selection","login","defaults"],"additionalProperties":false},"ClawderSubscriptionSettings":{"oneOf":[{"$ref":"#/components/schemas/ClawderSubscriptions"},{"type":"object","properties":{"available":{"type":"boolean","const":false},"reason":{"type":"string","enum":["not_owner","project","shared","unavailable"]},"can_make_private":{"type":"boolean"},"sharing_version":{"type":"integer","minimum":0}},"required":["available","reason","can_make_private","sharing_version"],"additionalProperties":false}]},"ClawderSubscriptionInput":{"oneOf":[{"type":"object","properties":{"action_name":{"type":"string","enum":["start"]},"method":{"type":"string","enum":["openai/openai","openai/openai-device-code","xai/xai-oauth"]}},"required":["action_name","method"],"additionalProperties":false},{"type":"object","properties":{"action_name":{"type":"string","enum":["answer"]},"login_id":{"type":"string"},"step_id":{"type":"string"},"value":{"oneOf":[{"type":"string","maxLength":8192},{"type":"boolean"}]}},"required":["action_name","login_id","step_id"],"additionalProperties":false},{"type":"object","properties":{"action_name":{"type":"string","enum":["cancel"]},"login_id":{"type":"string"}},"required":["action_name","login_id"],"additionalProperties":false},{"type":"object","properties":{"action_name":{"type":"string","enum":["claude"]},"token":{"type":"string","maxLength":8192},"label":{"type":"string","minLength":1,"maxLength":160}},"required":["action_name","token"],"additionalProperties":false},{"type":"object","properties":{"action_name":{"type":"string","enum":["select"]},"provider":{"type":"string","enum":["openai","anthropic","xai"]},"profile_id":{"type":"string","description":"Account to bill. Omit to let Rails choose: the account in use for this provider, else its first usable one."},"model":{"type":"string"},"reasoning":{"type":"string","description":"Effort for the plan model, one of the model's reasoning levels. Omit for the model default."},"version":{"type":"string"}},"required":["action_name","provider","model","version"],"additionalProperties":false},{"type":"object","properties":{"action_name":{"type":"string","enum":["platform"]},"version":{"type":"string"}},"required":["action_name","version"],"additionalProperties":false},{"type":"object","description":"Applies the agent's chosen plan again when its worker lost the binding. Responds 503 when no account for that plan can bill, so the owner must sign in again.","properties":{"action_name":{"type":"string","enum":["reconnect"]}},"required":["action_name"],"additionalProperties":false},{"type":"object","properties":{"action_name":{"type":"string","enum":["disconnect"]},"provider":{"type":"string","enum":["openai","anthropic","xai"]},"profile_id":{"type":"string"}},"required":["action_name","provider","profile_id"],"additionalProperties":false},{"type":"object","properties":{"action_name":{"type":"string","enum":["forget"]},"profile_id":{"type":"string"}},"required":["action_name","profile_id"],"additionalProperties":false},{"type":"object","properties":{"action_name":{"type":"string","enum":["rename"]},"profile_id":{"type":"string"},"label":{"type":"string","minLength":1,"maxLength":160}},"required":["action_name","profile_id","label"],"additionalProperties":false}]},"ClawderTranscriptionSession":{"type":"object","required":["value","expires_at"],"properties":{"value":{"type":"string","description":"Ephemeral OpenAI client secret; keep private and never log it"},"expires_at":{"type":"integer","format":"int64","description":"Client secret expiration in Unix seconds"}},"additionalProperties":false},"ClawderUsageWindow":{"type":"object","properties":{"label":{"type":"string"},"group_label":{"type":["string","null"]},"used_percent":{"type":"number","minimum":0,"maximum":100},"resets_at":{"type":["string","null"]}},"required":["label","group_label","used_percent","resets_at"]},"ClawderUsageModel":{"type":"object","properties":{"provider":{"type":["string","null"]},"model":{"type":["string","null"]},"input_tokens":{"type":["integer","null"]},"output_tokens":{"type":["integer","null"]},"cache_read_tokens":{"type":["integer","null"]}},"required":["provider","model","input_tokens","output_tokens","cache_read_tokens"]},"ClawderUsageSession":{"type":"object","properties":{"status":{"type":"string","enum":["available","unavailable"]},"partial":{"type":"boolean"},"input_tokens":{"type":["integer","null"]},"output_tokens":{"type":["integer","null"]},"cache_read_tokens":{"type":["integer","null"]},"cache_write_tokens":{"type":["integer","null"]},"models":{"type":"array","items":{"$ref":"#/components/schemas/ClawderUsageModel"}}},"required":["status","partial","input_tokens","output_tokens","cache_read_tokens","cache_write_tokens","models"]},"ClawderUsageSubscription":{"type":"object","properties":{"provider_name":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","not_connected"]},"plan":{"type":["string","null"]},"windows":{"type":"array","items":{"$ref":"#/components/schemas/ClawderUsageWindow"}},"updated_at":{"type":["string","null"]}},"required":["provider_name","status","plan","windows","updated_at"]},"ClawderUsage":{"type":"object","properties":{"subscription":{"$ref":"#/components/schemas/ClawderUsageSubscription"},"session":{"$ref":"#/components/schemas/ClawderUsageSession"}},"required":["subscription","session"]},"ClawderVerifyProject":{"type":"object","additionalProperties":false,"required":["id","slug","name"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}}},"ClawderVerifyProjects":{"type":"object","additionalProperties":false,"required":["available","verify_projects","version","can_manage","project_choices","project_choices_truncated"],"properties":{"available":{"type":"boolean","description":"Whether Verify is on for the organization; hide Verify access when false."},"verify_projects":{"type":"array","maxItems":32,"items":{"$ref":"#/components/schemas/ClawderVerifyProject"}},"version":{"type":"integer","minimum":0},"can_manage":{"type":"boolean","description":"Whether the viewer can manage the agent and is a Verify admin."},"project_choices":{"type":"array","description":"Every granted project, then other Verify projects up to the choice limit.","items":{"$ref":"#/components/schemas/ClawderVerifyProject"}},"project_choices_truncated":{"type":"boolean"}}},"ClawderWebhookConnection":{"type":"object","additionalProperties":false,"required":["locator","name","generation","path","receiver_path","purpose","event_types","max_events_per_day","last_received_at","paused_at","revoked_at","actions"],"properties":{"actions":{"type":"array","items":{"type":"string","enum":["pause","resume","rotate","remove"]}},"locator":{"type":"string"},"name":{"type":"string"},"generation":{"type":"integer"},"path":{"type":"string"},"receiver_path":{"type":"string","nullable":true,"description":"Generic JSON receiver URL path containing a secret token; available only to current bot managers."},"purpose":{"type":"string"},"event_types":{"type":"array","items":{"type":"string"}},"max_events_per_day":{"type":"integer"},"last_received_at":{"type":"string","format":"date-time","nullable":true},"paused_at":{"type":"string","format":"date-time","nullable":true},"revoked_at":{"type":"string","format":"date-time","nullable":true}}},"ClawderWebhookSetup":{"type":"object","additionalProperties":false,"required":["connection","signing_key"],"properties":{"connection":{"$ref":"#/components/schemas/ClawderWebhookConnection"},"signing_key":{"type":"string","nullable":true,"description":"Revealed only by the first successful creation or rotation response."}}},"ClawderWebhookCreate":{"type":"object","additionalProperties":false,"required":["name","purpose","event_types","max_events_per_day"],"properties":{"name":{"type":"string","minLength":1,"maxLength":100},"purpose":{"type":"string","minLength":1,"maxLength":4000},"event_types":{"type":"array","minItems":1,"maxItems":16,"uniqueItems":true,"items":{"type":"string"}},"max_events_per_day":{"type":"integer","minimum":1,"maximum":1000}}},"ClawderWebhookDetail":{"type":"object","additionalProperties":false,"required":["connection","deliveries"],"properties":{"connection":{"$ref":"#/components/schemas/ClawderWebhookConnection"},"deliveries":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["event_id","status","received_at"],"properties":{"event_id":{"type":"string"},"status":{"type":"string","enum":["received","filtered","published","discarded"]},"received_at":{"type":"string","format":"date-time"}}}}}},"ClawderWorkflowRun":{"type":"object","properties":{"id":{"type":"string"},"action":{"type":"string","enum":["run","resume"]},"workflow_path":{"type":"string","nullable":true},"workflow_digest":{"type":"string","nullable":true,"description":"SHA-256 of the workflow file the run started from"},"status":{"type":"string","enum":["running","succeeded","blocked","step_failed","failed","needs_approval","needs_input","cancelled","interrupted","budget_exceeded"]},"error":{"type":"string","nullable":true},"note":{"type":"string","nullable":true,"description":"One sentence a workflow step left for the person, which the run's card leads with"},"needs_you":{"type":"boolean","description":"Whether a step stopped the run for the person, who can answer it"},"can_answer":{"type":"boolean","description":"Whether this viewer can answer the step that stopped the run; the answer runs that step again"},"step_count":{"type":"integer"},"checkpoint":{"type":"object","nullable":true,"description":"The question a run waiting at a checkpoint is asking","properties":{"kind":{"type":"string","enum":["approval","input"]},"prompt":{"type":"string"},"step_id":{"type":"string","description":"The id of the workflow file's step the run waits at, when the worker could tell"}},"required":["kind","prompt"],"additionalProperties":false},"started_at":{"type":"string"},"finished_at":{"type":"string","nullable":true},"source":{"type":"string","enum":["chat","event","schedule"]},"spent_usd":{"type":"number","description":"What the run's agent steps have cost so far, as the agent reported it"},"budget_usd":{"type":"number","nullable":true,"description":"The run stops before a step once it has spent this much"},"spent_tokens":{"type":"integer","description":"The tokens the run's agent steps have used so far"},"budget_tokens":{"type":"integer","nullable":true,"description":"The run stops before a step once it has used this many tokens"},"running_seconds":{"type":"integer","description":"How long the run has been running, not counting time waiting at a checkpoint or for a retry"},"budget_seconds":{"type":"integer","nullable":true,"description":"The run stops once it has been running this long"},"trigger_id":{"type":"string","nullable":true,"description":"The run settings that started it, for a run an event or schedule started"},"started_by":{"type":"object","nullable":true,"description":"The event that started the run","properties":{"source":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"reference":{"type":"string","nullable":true},"title":{"type":"string","nullable":true}},"required":["source","kind","reference","title"],"additionalProperties":false}},"required":["id","action","workflow_path","workflow_digest","status","error","note","needs_you","can_answer","step_count","checkpoint","started_at","finished_at","source","spent_usd","budget_usd","spent_tokens","budget_tokens","running_seconds","budget_seconds","trigger_id","started_by"],"additionalProperties":false},"ClawderWorkflowRunDetail":{"type":"object","properties":{"id":{"type":"string"},"action":{"type":"string","enum":["run","resume"]},"workflow_path":{"type":"string","nullable":true},"workflow_digest":{"type":"string","nullable":true,"description":"SHA-256 of the workflow file the run started from"},"status":{"type":"string","enum":["running","succeeded","blocked","step_failed","failed","needs_approval","needs_input","cancelled","interrupted","budget_exceeded"]},"error":{"type":"string","nullable":true},"note":{"type":"string","nullable":true,"description":"One sentence a workflow step left for the person, which the run's card leads with"},"needs_you":{"type":"boolean","description":"Whether a step stopped the run for the person, who can answer it"},"can_answer":{"type":"boolean","description":"Whether this viewer can answer the step that stopped the run; the answer runs that step again"},"step_count":{"type":"integer"},"checkpoint":{"type":"object","nullable":true,"description":"The question a run waiting at a checkpoint is asking","properties":{"kind":{"type":"string","enum":["approval","input"]},"prompt":{"type":"string"},"step_id":{"type":"string","description":"The id of the workflow file's step the run waits at, when the worker could tell"}},"required":["kind","prompt"],"additionalProperties":false},"started_at":{"type":"string"},"finished_at":{"type":"string","nullable":true},"retry_step_id":{"type":"string","nullable":true},"nothing_to_do_reason":{"type":"string","nullable":true,"description":"Why a run that succeeded did no work, as the step that found nothing to do said; null otherwise."},"flow_steps":{"type":"array","nullable":true,"description":"How the run went at each step of its workflow file, in the order it reached them; null when steps were recorded without their step of the file","items":{"type":"object","properties":{"definition_step_id":{"type":"string"},"status":{"type":"string","enum":["succeeded","running","waiting","failed"]}},"required":["definition_step_id","status"],"additionalProperties":false}},"steps":{"type":"array","items":{"$ref":"#/components/schemas/ClawderWorkflowStep"}},"source":{"type":"string","enum":["chat","event","schedule"]},"spent_usd":{"type":"number","description":"What the run's agent steps have cost so far, as the agent reported it"},"budget_usd":{"type":"number","nullable":true,"description":"The run stops before a step once it has spent this much"},"spent_tokens":{"type":"integer","description":"The tokens the run's agent steps have used so far"},"budget_tokens":{"type":"integer","nullable":true,"description":"The run stops before a step once it has used this many tokens"},"running_seconds":{"type":"integer","description":"How long the run has been running, not counting time waiting at a checkpoint or for a retry"},"budget_seconds":{"type":"integer","nullable":true,"description":"The run stops once it has been running this long"},"trigger_id":{"type":"string","nullable":true,"description":"The run settings that started it, for a run an event or schedule started"},"started_by":{"type":"object","nullable":true,"description":"The event that started the run","properties":{"source":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"reference":{"type":"string","nullable":true},"title":{"type":"string","nullable":true}},"required":["source","kind","reference","title"],"additionalProperties":false}},"required":["id","action","workflow_path","workflow_digest","status","error","note","needs_you","can_answer","step_count","checkpoint","started_at","finished_at","steps","flow_steps","retry_step_id","nothing_to_do_reason","source","spent_usd","budget_usd","spent_tokens","budget_tokens","running_seconds","budget_seconds","trigger_id","started_by"],"additionalProperties":false},"ClawderWorkflowStep":{"type":"object","properties":{"id":{"type":"string"},"sequence":{"type":"integer"},"attempt":{"type":"integer"},"definition_step_id":{"type":"string","nullable":true,"description":"The id of the workflow file's step this attempt ran for; null for steps recorded before workers reported it"},"kind":{"type":"string","enum":["agent","command"]},"command":{"type":"string"},"summary":{"type":"string","nullable":true},"model":{"type":"string","nullable":true},"status":{"type":"string","enum":["running","succeeded","failed","interrupted"]},"exit_code":{"type":"integer","nullable":true},"error":{"type":"string","nullable":true},"output_bytes":{"type":"integer"},"output_truncated":{"type":"boolean"},"started_at":{"type":"string"},"finished_at":{"type":"string","nullable":true},"output_preview":{"type":"string","nullable":true},"output_preview_complete":{"type":"boolean"},"risk":{"type":"object","nullable":true,"description":"What an agent step asked for its risk said about its change","properties":{"level":{"type":"string","enum":["obvious","not_obvious"]},"reason":{"type":"string","nullable":true}},"required":["level","reason"],"additionalProperties":false},"stopped":{"type":"object","nullable":true,"description":"Why an agent step that answered blocked stopped for the person, and the note it left them","properties":{"reason":{"type":"string","nullable":true},"note":{"type":"string","nullable":true}},"required":["reason","note"],"additionalProperties":false},"conversation_id":{"type":"string","nullable":true,"description":"The conversation an agent step ran in, readable with the agent's conversation endpoint; null for command steps"}},"required":["id","sequence","attempt","definition_step_id","kind","command","summary","model","status","exit_code","error","output_bytes","output_truncated","started_at","finished_at","output_preview","output_preview_complete","risk","stopped","conversation_id"],"additionalProperties":false},"ClawderWorkflowRuns":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ClawderWorkflowRun"}},"pagination":{"type":"object","properties":{"limit":{"type":"integer"},"next":{"type":"string","nullable":true}},"required":["limit"],"additionalProperties":false}},"required":["items","pagination"],"additionalProperties":false},"ClawderWorkflowTrigger":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["event","schedule"]},"workflow_path":{"type":"string"},"subscription_id":{"type":"string","nullable":true,"description":"The event subscription that starts it"},"schedule":{"type":"object","nullable":true,"description":"A cron expression with its time zone, or an interval in seconds from an anchor time","properties":{"type":{"type":"string","enum":["cron","interval"]},"expression":{"type":"string"},"timezone":{"type":"string"},"seconds":{"type":"integer"},"anchor":{"type":"string"}},"required":["type"],"additionalProperties":false},"next_due_at":{"type":"string","nullable":true},"stale_at":{"type":"string","nullable":true,"description":"When the workflow was paused; it starts nothing until resumed"},"stale_reason":{"type":"string","nullable":true},"budget":{"type":"object","nullable":true,"description":"Each run's limits, and what the trigger may spend per period with its runs' spend in the current one","properties":{"usd":{"type":"number","nullable":true,"description":"The period budget, or null without one"},"period":{"type":"string","enum":["day","week","month"],"nullable":true},"spent_usd":{"type":"number","nullable":true},"resets_at":{"type":"string","nullable":true},"run_usd":{"type":"number","nullable":true},"run_tokens":{"type":"integer","nullable":true},"run_seconds":{"type":"integer","nullable":true}},"required":["usd","period","spent_usd","resets_at","run_usd","run_tokens","run_seconds"],"additionalProperties":false},"daily_limit":{"type":"integer","nullable":true,"description":"How many events a day may start an event workflow's runs"},"starts":{"type":"object","nullable":true,"description":"What events start an event workflow, as a proposal's start shows them","properties":{"source":{"type":"string","nullable":true},"event_kinds":{"type":"array","items":{"type":"string"}},"min_severity":{"type":"string","nullable":true}},"required":["source","event_kinds","min_severity"],"additionalProperties":false},"paused":{"type":"boolean","description":"The workflow starts nothing until a person resumes or checks it"},"pause_cause":{"type":"string","nullable":true,"enum":["person","unchecked","steps","held",null],"description":"A person paused it, the file changed and nobody checked it, the saved steps can't run on it, or it is kept only so its subscription starts nothing"},"time_zone":{"type":"string","description":"The organization's IANA time zone, which the daily limit and budget periods count in"},"today_count":{"type":"integer","nullable":true,"description":"Events that started a run today, for an event workflow"},"day_resets_at":{"type":"string","nullable":true,"description":"When the daily count starts again, at the organization's midnight"},"skipped_today":{"type":"integer","description":"Events skipped today, over the daily limit or while paused"},"settings_changed_at":{"type":"string","nullable":true,"description":"When a person or the agent last changed the run settings; sent back with a change"},"can_resume":{"type":"boolean","description":"A person paused it, so a manager can resume it"},"can_review":{"type":"boolean","description":"The file changed and nobody checked it, so a manager can review it and resume"},"can_pause":{"type":"boolean","description":"It is running, so a manager can pause it"}},"required":["id","kind","workflow_path","subscription_id","schedule","next_due_at","stale_at","stale_reason","budget","daily_limit","starts","paused","pause_cause","time_zone","today_count","day_resets_at","skipped_today","settings_changed_at","can_resume","can_review","can_pause"],"additionalProperties":false},"ClawderWorkflowTriggerResponse":{"type":"object","properties":{"trigger":{"$ref":"#/components/schemas/ClawderWorkflowTrigger"},"can_manage":{"type":"boolean"}},"required":["trigger","can_manage"],"additionalProperties":false},"ClawderSkippedEvent":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["over_limit","paused"]},"created_at":{"type":"string"},"expired":{"type":"boolean","description":"Its details are gone, so it can't start a run"},"source":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"reference":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"can_run":{"type":"boolean","description":"The event can still start a run by hand: its details haven't expired and the workflow is running"}},"required":["id","status","created_at","expired","source","kind","reference","title","can_run"],"additionalProperties":false},"ClawderSubagent":{"type":"object","properties":{"id":{"type":"string"},"parent_id":{"type":"string"},"title":{"type":"string"},"status":{"type":"string"},"active":{"type":"boolean"},"state":{"type":["string","null"],"enum":["working","ongoing","needs_you","done",null],"description":"What the thread is to the viewer. Null while an idle thread has not been judged."},"model":{"type":["string","null"]},"preview":{"type":["string","null"]},"started_at":{"type":["string","null"]},"ended_at":{"type":["string","null"]},"updated_at":{"type":["string","null"]}},"required":["id","parent_id","title","status","active","state","model","preview","started_at","ended_at","updated_at"],"additionalProperties":false},"ClawderSubagents":{"type":"object","properties":{"subagents":{"type":"array","items":{"$ref":"#/components/schemas/ClawderSubagent"}},"judging":{"type":"boolean","description":"Whether a judgement is on its way for an idle thread on this page."},"next_cursor":{"type":["string","null"]}},"required":["subagents","judging","next_cursor"],"additionalProperties":false},"ClawderComputerProcess":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"started_at":{"type":["string","null"]}},"required":["id","name","status","started_at"],"additionalProperties":false},"ClawderComputerUsage":{"type":"object","properties":{"memory_total_mb":{"type":"integer"},"samples":{"type":"array","items":{"type":"object","properties":{"at":{"type":"string","format":"date-time"},"cpu_percent":{"type":["number","null"]},"memory_used_mb":{"type":"integer"}},"required":["at","cpu_percent","memory_used_mb"],"additionalProperties":false}}},"required":["memory_total_mb","samples"],"additionalProperties":false},"ClawderMachineFleet":{"type":"object","properties":{"machines":{"type":"array","items":{"$ref":"#/components/schemas/ClawderMachine"}},"unchecked_count":{"type":"integer"},"running_count":{"type":"integer"},"agent_minutes_per_hour":{"type":"number"},"agent_minutes_this_period":{"type":"number"},"period_started_at":{"type":"string","format":"date-time"}},"required":["machines","unchecked_count","running_count","agent_minutes_per_hour","agent_minutes_this_period","period_started_at"],"additionalProperties":false},"ClawderMachine":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["agent","thread"]},"name":{"type":"string"},"state":{"type":"string","enum":["running","standby","starting","failed","stopped","not_started","unknown"]},"memory_mb":{"type":["integer","null"]},"cpu_count":{"type":["integer","null"]},"disk_mb":{"type":["integer","null"]},"threads":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"}},"required":["id","title"],"additionalProperties":false}}},"required":["id","kind","name","state","memory_mb","cpu_count","disk_mb","threads"],"additionalProperties":false},"ClawderComputer":{"type":"object","properties":{"state":{"type":"string","enum":["not_started","starting","ready","failed"]},"can_start":{"type":"boolean"},"processes":{"type":"array","items":{"$ref":"#/components/schemas/ClawderComputerProcess"}},"can_control":{"type":"boolean"},"fleet":{"$ref":"#/components/schemas/ClawderMachineFleet"},"usage":{"$ref":"#/components/schemas/ClawderComputerUsage"},"browser_egress":{"type":"object","properties":{"enabled":{"type":"boolean"},"connected":{"type":"boolean"}},"required":["enabled","connected"],"additionalProperties":false}},"required":["state","can_start","processes","can_control"],"additionalProperties":false},"ClawderComputerConnection":{"type":"object","properties":{"platform":{"type":"string","enum":["linux","macos"]},"state":{"type":"string","enum":["starting","ready"]},"url":{"type":["string","null"]},"expires_at":{"type":["string","null"],"format":"date-time"},"kind":{"type":"string","enum":["desktop"]},"credentials":{"type":"object","additionalProperties":false,"required":["username","password"],"properties":{"username":{"type":"string"},"password":{"type":"string"}}}},"required":["state","url","expires_at"],"additionalProperties":false},"CliLoginStart":{"type":"object","required":["login_id","polling_token","verification_url","expires_at","poll_interval_seconds"],"properties":{"login_id":{"type":"string"},"polling_token":{"type":"string"},"verification_url":{"type":"string","format":"uri"},"expires_at":{"type":"string","format":"date-time"},"poll_interval_seconds":{"type":"integer"}}},"CliLoginPending":{"type":"object","required":["status"],"properties":{"status":{"type":"string","enum":["pending"]}}},"CliLoginExchange":{"type":"object","required":["status","api_token","api_base_url","user","organization"],"properties":{"status":{"type":"string","enum":["complete"]},"api_token":{"type":"string"},"api_base_url":{"type":"string","format":"uri"},"user":{"type":"object","required":["id","email","commit_author_email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"commit_author_email":{"type":"string"},"name":{"type":["string","null"]},"picture_url":{"type":["string","null"]}}},"organization":{"anyOf":[{"$ref":"#/components/schemas/CliLoginOrganization"},{"type":"null"}]}}},"CodeRuleEvaluationOwner":{"type":"object","required":["id","type","slug","root_path"],"properties":{"id":{"type":"string"},"type":{"type":"string"},"slug":{"type":"string","description":"Repository slug for owner-targeted code-rules show; virtual owner in Home mode"},"root_path":{"type":"string"}}},"CodeRuleEvaluationInput":{"type":"object","required":["diff"],"additionalProperties":false,"properties":{"diff":{"type":"string","description":"UTF-8 complete unified patch using a/ old and b/ new prefixes; at most 1 MiB"}}},"CodeRuleEvaluationResult":{"type":"object","required":["schema_version","advisory","coverage","verdicts","unchecked","requests","duration_ms"],"properties":{"schema_version":{"type":"integer","enum":[1]},"advisory":{"type":"boolean","enum":[true]},"input_digest":{"type":"string","nullable":true},"snapshot_digest":{"type":"string","nullable":true},"evaluator_version":{"type":"string"},"model":{"type":"string"},"coverage":{"type":"object","required":["complete","evaluated","unchecked"],"properties":{"complete":{"type":"boolean"},"evaluated":{"type":"integer"},"unchecked":{"type":"integer"}}},"verdicts":{"type":"array","items":{"type":"object","additionalProperties":true,"description":"Frozen owner/rule identity and revision, selected files, probabilities and disposition","properties":{"owner":{"$ref":"#/components/schemas/CodeRuleEvaluationOwner"}}}},"unchecked":{"type":"array","items":{"type":"object","additionalProperties":true,"required":["code"],"properties":{"code":{"type":"string"},"owner":{"$ref":"#/components/schemas/CodeRuleEvaluationOwner"}}}},"requests":{"type":"object","required":["attempted","completed","bytes"],"properties":{"attempted":{"type":"integer"},"completed":{"type":"integer"},"bytes":{"type":"integer"}}},"duration_ms":{"type":"integer"},"limits":{"type":"object","additionalProperties":true}}},"CodeRuleTarget":{"type":"object","required":["organization_slug","slug","owner_type","owner_id","backing_repository_id","root_path","web_url"],"properties":{"organization_slug":{"type":"string"},"slug":{"type":"string","description":"Canonical Repo slug"},"owner_type":{"type":"string","enum":["repository"]},"owner_id":{"type":"string"},"backing_repository_id":{"type":"string","nullable":true},"root_path":{"type":"string","description":"Owner root relative to the backing repository; \".\" for a whole repository"},"web_url":{"type":"string"}}},"CodeRuleCapabilities":{"type":"object","required":["can_manage"],"properties":{"can_manage":{"type":"boolean"}}},"CodeRuleLimits":{"type":"object","required":["rules_per_repository","slug_length","name_length","description_bytes","source_bytes","question_bytes","scope_globs","glob_bytes","request_bytes"],"properties":{"rules_per_repository":{"type":"integer"},"slug_length":{"type":"integer"},"name_length":{"type":"integer"},"description_bytes":{"type":"integer"},"source_bytes":{"type":"integer"},"question_bytes":{"type":"integer"},"scope_globs":{"type":"integer"},"glob_bytes":{"type":"integer"},"request_bytes":{"type":"integer"}}},"CodeRuleDefinition":{"type":"object","required":["schema_version","slug","name","description","scope","source","question"],"properties":{"schema_version":{"type":"integer","enum":[1]},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"scope":{"type":"array","items":{"type":"string"}},"source":{"type":"string","description":"Attribution text; never fetched or executed"},"question":{"type":"string"}}},"CodeRuleDefinitionInput":{"type":"object","required":["slug","name","scope","question"],"properties":{"schema_version":{"type":"integer","enum":[1]},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"scope":{"type":"array","items":{"type":"string"}},"source":{"type":"string"},"question":{"type":"string"}}},"CodeRuleAuthor":{"type":"object","nullable":true,"required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true}}},"CodeRuleRevision":{"type":"object","required":["number","definition","created_by","created_at","created_at_label"],"properties":{"number":{"type":"integer"},"definition":{"$ref":"#/components/schemas/CodeRuleDefinition"},"created_by":{"$ref":"#/components/schemas/CodeRuleAuthor"},"created_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true,"description":"Rails-rendered UTC label for display"}}},"CodeRuleRevisionSummary":{"type":"object","required":["number","name","created_by","created_at","created_at_label"],"properties":{"number":{"type":"integer"},"name":{"type":"string"},"created_by":{"$ref":"#/components/schemas/CodeRuleAuthor"},"created_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true}}},"CodeRuleSummary":{"type":"object","required":["id","slug","name","scope","enabled","state_version","latest_revision_number","active_revision_number","draft_pending","web_url","created_at","updated_at"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string","description":"Name of the latest revision"},"scope":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"state_version":{"type":"integer","description":"Send back as expected_version on every mutation"},"latest_revision_number":{"type":"integer"},"active_revision_number":{"type":"integer","nullable":true},"draft_pending":{"type":"boolean","description":"The latest revision is not the active one"},"web_url":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"CodeRuleDetail":{"allOf":[{"$ref":"#/components/schemas/CodeRuleSummary"},{"type":"object","required":["latest_revision","active_revision","revisions","history_truncated"],"properties":{"latest_revision":{"$ref":"#/components/schemas/CodeRuleRevision"},"active_revision":{"nullable":true,"description":"Present only when a revision is active and differs from the latest","allOf":[{"$ref":"#/components/schemas/CodeRuleRevision"}]},"revisions":{"type":"array","items":{"$ref":"#/components/schemas/CodeRuleRevisionSummary"}},"history_truncated":{"type":"boolean"}}}]},"CodeRuleCollectionResponse":{"type":"object","required":["repository","capabilities","limits","code_rules","selected_rule_reference","selected_rule"],"properties":{"repository":{"$ref":"#/components/schemas/CodeRuleTarget"},"capabilities":{"$ref":"#/components/schemas/CodeRuleCapabilities"},"limits":{"$ref":"#/components/schemas/CodeRuleLimits"},"code_rules":{"type":"array","items":{"$ref":"#/components/schemas/CodeRuleSummary"}},"selected_rule_reference":{"type":"string","nullable":true,"description":"The rule query parameter as received, when one was given"},"selected_rule":{"nullable":true,"description":"The requested rule expanded inline, or null when it does not exist in this Repo","allOf":[{"$ref":"#/components/schemas/CodeRuleDetail"}]}}},"CodeRuleDetailResponse":{"type":"object","required":["repository","capabilities","code_rule"],"properties":{"repository":{"$ref":"#/components/schemas/CodeRuleTarget"},"capabilities":{"$ref":"#/components/schemas/CodeRuleCapabilities"},"code_rule":{"$ref":"#/components/schemas/CodeRuleDetail"}}},"CodeRuleDeletedResponse":{"type":"object","required":["repository","capabilities","deleted"],"properties":{"repository":{"$ref":"#/components/schemas/CodeRuleTarget"},"capabilities":{"$ref":"#/components/schemas/CodeRuleCapabilities"},"deleted":{"type":"object","required":["id","slug"],"properties":{"id":{"type":"string"},"slug":{"type":"string"}}}}},"CodeRuleError":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"code":{"type":"string","enum":["forbidden","stale_version","duplicate_slug","limit_exceeded","revision_not_found","invalid_definition","payload_too_large"]},"current_version":{"type":"integer","description":"The rule's current state_version on a stale_version conflict"},"details":{"type":"array","items":{"type":"string"}}}},"ContactSubmissionRequest":{"type":"object","required":["name","email","message"],"additionalProperties":false,"properties":{"name":{"type":"string","maxLength":255},"email":{"type":"string","maxLength":255,"description":"Stored downcased and stripped."},"company":{"type":"string","maxLength":255,"nullable":true},"message":{"type":"string","maxLength":5000},"website":{"type":"string","nullable":true,"description":"Honeypot. Render it hidden and leave it empty; any value discards the submission."}}},"ContactSubmissionCreated":{"type":"object","required":["id","created_at"],"additionalProperties":false,"properties":{"id":{"type":"string","description":"Public id (`contact_submission_…`)."},"created_at":{"type":"string","description":"ISO8601 timestamp."}}},"ControlActivity":{"type":"object","additionalProperties":false,"required":["kind","items","next_cursor"],"properties":{"kind":{"type":"string","enum":["native","relay"]},"items":{"type":"array","maxItems":50,"items":{"$ref":"#/components/schemas/ControlActivityRecord"}},"next_cursor":{"type":["string","null"],"maxLength":200}}},"ControlActivityRecord":{"type":"object","additionalProperties":false,"required":["id","kind","action","state","status_label","provider","device_id","device_name","result_expired","created_at","updated_at"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["native","relay"]},"action":{"type":"string","maxLength":100},"state":{"type":"string","enum":["queued","claimed","completed","failed","expired","uncertain","pending","running"]},"status_label":{"type":"string"},"provider":{"type":["string","null"],"enum":["codex","claude","computer",null]},"device_id":{"type":["string","null"]},"device_name":{"type":["string","null"]},"result_expired":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"AdminInvitationResult":{"type":"object","required":["invitation","email_delivery_status"],"properties":{"email_delivery_status":{"type":"string"},"invitation":{"type":"object","required":["id","email","role","status","invite_url"],"properties":{"id":{"type":"string"},"email":{"type":"string","format":"email"},"role":{"type":"string"},"status":{"type":"string"},"invite_url":{"type":"string","format":"uri"}}}}},"AdminOrganization":{"type":"object","required":["id","slug","name","monthly_price_override_cents","package_id","billing_email","deployment_usage_visibility","deployment_usage_visible"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"monthly_price_override_cents":{"type":["integer","null"]},"package_id":{"type":["string","null"]},"billing_email":{"type":["string","null"]},"deployment_usage_visibility":{"type":"string","enum":["automatic","hidden","shown"]},"deployment_usage_visible":{"type":"boolean"},"onboarding_package_keys":{"type":["array","null"],"items":{"type":"string"}},"onboarding_custom_pricing":{"type":"boolean"}}},"HostingLocation":{"type":"object","required":["id","code","name","nomad_datacenter","created_at","updated_at"],"properties":{"id":{"type":"string"},"code":{"type":"string"},"name":{"type":"string"},"nomad_datacenter":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"AppEnvironment":{"type":"object","required":["id","hosted_app_id","location_id","slug","name","kind","status","location","branch_pattern","base_domain","auto_deploy","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"hosted_app_id":{"type":"string"},"location_id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string","enum":["production","staging","development","preview","ephemeral","custom"]},"status":{"type":"string","enum":["active","paused","archived"]},"location":{"oneOf":[{"$ref":"#/components/schemas/HostingLocation"},{"type":"null"}]},"branch_pattern":{"type":"string","nullable":true},"base_domain":{"type":"string","nullable":true},"auto_deploy":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"AppEnvironmentUpdatePayload":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string","enum":["production","staging","development","preview","ephemeral","custom"]},"status":{"type":"string","enum":["active","paused","archived"]},"location_id":{"type":"string"},"branch_pattern":{"type":"string","nullable":true},"base_domain":{"type":"string","nullable":true},"auto_deploy":{"type":"boolean"}}},"AppEnvironmentCreatePayload":{"type":"object","required":["slug","name","kind","status","location_id","auto_deploy"],"properties":{"slug":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string","enum":["production","staging","development","preview","ephemeral","custom"]},"status":{"type":"string","enum":["active","paused","archived"]},"location_id":{"type":"string"},"branch_pattern":{"type":"string"},"base_domain":{"type":"string"},"auto_deploy":{"type":"boolean"}}},"AppServiceUpdatePayload":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string","enum":["web","worker","cron","static","private"]},"runtime":{"type":"string","enum":["docker","node","ruby","python","go","rust","static","generic"]},"runtime_adapter_kind":{"type":"string","enum":["nomad","database"]},"runtime_adapter_settings_json":{"type":"string","nullable":true},"nomad_namespace":{"type":"string","nullable":true},"nomad_region":{"type":"string","nullable":true},"cpu_mhz":{"type":"integer","minimum":0,"nullable":true},"memory_mb":{"type":"integer","minimum":0,"nullable":true},"memory_max_mb":{"type":"integer","minimum":1,"nullable":true,"description":"Hard memory limit in MB the task may burst to (Nomad MemoryMaxMB). Must be >= memory_mb, which stays the scheduler reservation. Memory above the reservation is oversubscribed and best effort. Null clears the override."},"disk_mb":{"type":"integer","minimum":0,"nullable":true},"nomad_constraints_json":{"type":"string","nullable":true},"nomad_update_strategy_json":{"type":"string","nullable":true},"nomad_ulimits_json":{"type":"string","nullable":true,"description":"Docker task ulimits as a JSON object of rlimit name to \"soft:hard\" (e.g. {\"nofile\":\"65536:65536\"}). Null/absent leaves the container on the daemon default."},"nomad_kill_timeout_seconds":{"type":"integer","minimum":1,"maximum":30,"nullable":true,"description":"Seconds the task gets after SIGTERM before SIGKILL. Null clears the override and leaves Nomad's 5s default. Capped at 30 because a Nomad client silently clamps kill_timeout to its own max_kill_timeout (default 30s)."},"nomad_shutdown_delay_seconds":{"type":"integer","minimum":0,"maximum":120,"nullable":true,"description":"Seconds Nomad waits between deregistering the group's services and sending SIGTERM, so the edge stops routing new requests to the allocation before it is signalled. Null clears the override."},"source_path":{"type":"string"},"build_command":{"type":"string","nullable":true},"release_command":{"type":"string","nullable":true},"prestart_command":{"type":"string","nullable":true},"start_command":{"type":"string","nullable":true},"healthcheck_path":{"type":"string","nullable":true},"schedule":{"type":"string","nullable":true},"internal_port":{"type":"integer","minimum":1,"maximum":65535,"nullable":true},"desired_instances":{"type":"integer","minimum":0},"publicly_accessible":{"type":"boolean"},"auto_deploy":{"type":"boolean"},"deploy_paths":{"type":"array","description":"Repo-root-relative path prefixes/globs a push must touch for the service to auto-deploy. Empty array clears the override (default to app root_path).","items":{"type":"string"}}}},"AppDeployment":{"type":"object","required":["id","hosted_app_id","organization_id","app_service_id","app_environment_id","location_id","creator_user_id","number","display_id","status","location","source_ref","commit_sha","artifact_locator","deployed_url","trigger_kind","operation_key","build_role","is_rollback","rollback_source_release_id","rollback_target_release_id","rollback_source_deployment_id","rollback_reason","idempotency_key","failure_message","started_at","finished_at","created_at","updated_at","started_at_label","finished_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"hosted_app_id":{"type":"string"},"organization_id":{"type":"string"},"app_service_id":{"type":"string"},"app_environment_id":{"type":"string"},"location_id":{"type":"string"},"creator_user_id":{"type":"string","nullable":true},"number":{"type":"integer","minimum":1},"display_id":{"type":"integer","minimum":1},"status":{"type":"string","enum":["queued","building","deploying","active","failed","rolled_back","canceled"]},"location":{"oneOf":[{"$ref":"#/components/schemas/HostingLocation"},{"type":"null"}]},"source_ref":{"type":"string","nullable":true},"commit_sha":{"type":"string","nullable":true},"artifact_locator":{"type":"string","nullable":true},"deployed_url":{"type":"string","nullable":true},"trigger_kind":{"type":"string","enum":["manual","push","schedule","api","rollback"]},"operation_key":{"type":"string","nullable":true},"build_role":{"type":"string","enum":["leader","follower","standalone"],"nullable":true},"is_rollback":{"type":"boolean"},"rollback_source_release_id":{"type":"string","nullable":true},"rollback_target_release_id":{"type":"string","nullable":true},"rollback_source_deployment_id":{"type":"string","nullable":true},"rollback_reason":{"type":"string","nullable":true},"idempotency_key":{"type":"string","nullable":true},"failure_message":{"type":"string","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"started_at_label":{"type":"string","nullable":true},"finished_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"AppServicePlacement":{"type":"object","required":["id","organization_id","hosted_app_id","app_service_id","app_environment_id","mode","rollout_strategy","deployment_channel","replicas_per_region","region_count","total_replicas","targets","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"hosted_app_id":{"type":"string"},"app_service_id":{"type":"string"},"app_environment_id":{"type":"string"},"mode":{"type":"string","enum":["single_region","multi_region"]},"rollout_strategy":{"type":"string","enum":["health_gated","burst"]},"deployment_channel":{"type":"string","enum":["stable","blue_green"],"nullable":true,"description":"Preview-only override; null inherits the captured source channel."},"replicas_per_region":{"type":"integer","minimum":0},"region_count":{"type":"integer","minimum":0},"total_replicas":{"type":"integer","minimum":0},"targets":{"type":"array","items":{"type":"object","required":["id","location_id","location","position","enabled"],"properties":{"id":{"type":"string"},"location_id":{"type":"string"},"location":{"$ref":"#/components/schemas/HostingLocation"},"position":{"type":"integer","minimum":0},"enabled":{"type":"boolean"}}}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"AppServicePlacementPayload":{"type":"object","required":["app_service_id","app_environment_id","mode","rollout_strategy","replicas_per_region","targets"],"properties":{"app_service_id":{"type":"string"},"app_environment_id":{"type":"string"},"expected_generation":{"type":"integer","description":"Required for preview environments. Stale generations or unfinished cleanup return 409."},"mode":{"type":"string","enum":["single_region","multi_region"]},"rollout_strategy":{"type":"string","enum":["health_gated","burst"]},"deployment_channel":{"type":"string","enum":["stable","blue_green"],"nullable":true,"description":"Preview-only override; null inherits the captured source channel."},"replicas_per_region":{"type":"integer","minimum":0},"targets":{"type":"array","items":{"type":"object","required":["location_id"],"properties":{"location_id":{"type":"string"},"enabled":{"type":"boolean"}}}}}},"DeploymentOperation":{"type":"object","required":["id","number","status","app","service","environment","placement","rollout_strategy","replicas_per_region","total_replicas","trigger_kind","is_rollback","rollout_predecessor_id","rollback_source_release_id","rollback_target_release_id","rollback_reason","source_ref","commit_sha","artifact_locator","deployed_url","build_duration_seconds","duration_seconds","creator","build_status","rollout_status","history_kind","history_reason","ci_pipeline_id","ci_pipeline_run_id","build_source","region_count","live_region_count","is_live","children","created_at","updated_at"],"properties":{"rollout_predecessor_id":{"type":"string","nullable":true},"id":{"type":"string"},"number":{"type":"integer","minimum":1},"status":{"type":"string","enum":["queued","building","deploying","active","failed","rolled_back","canceled"]},"app":{"type":"object","required":["id","slug","name"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}}},"service":{"type":"object","required":["id","slug","name"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}}},"environment":{"type":"object","required":["id","slug","name","kind"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"}}},"placement":{"type":"object","nullable":true,"required":["id","mode","rollout_strategy","replicas_per_region","total_replicas"],"properties":{"id":{"type":"string"},"mode":{"type":"string","enum":["single_region","multi_region"]},"rollout_strategy":{"type":"string","enum":["health_gated","burst"]},"replicas_per_region":{"type":"integer","minimum":0},"total_replicas":{"type":"integer","minimum":0}}},"rollout_strategy":{"type":"string","enum":["health_gated","burst"]},"replicas_per_region":{"type":"integer","minimum":0},"total_replicas":{"type":"integer","minimum":0},"trigger_kind":{"type":"string","enum":["manual","push","schedule","api","rollback"]},"is_rollback":{"type":"boolean"},"rollback_source_release_id":{"type":"string","nullable":true},"rollback_target_release_id":{"type":"string","nullable":true},"rollback_reason":{"type":"string","nullable":true},"source_ref":{"type":"string","nullable":true},"commit_sha":{"type":"string","nullable":true},"artifact_locator":{"type":"string","nullable":true},"deployed_url":{"type":"string","format":"uri","nullable":true},"build_duration_seconds":{"type":"integer","minimum":0,"nullable":true},"duration_seconds":{"type":"integer","minimum":0,"nullable":true},"creator":{"type":"object","nullable":true,"required":["id","name","picture_url"],"properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"build_status":{"type":"string","enum":["queued","building","succeeded","failed","canceled","skipped"]},"rollout_status":{"type":"string","enum":["not_started","queued","running","succeeded","failed","canceled","mixed"]},"history_kind":{"type":"string","enum":["current","superseded","stale","historical"]},"history_reason":{"type":"string","nullable":true},"ci_pipeline_id":{"type":"string","nullable":true},"ci_pipeline_run_id":{"type":"string","nullable":true},"build_source":{"type":"object","nullable":true,"required":["phase","deployment_id","canonical_deployment_id","number"],"properties":{"phase":{"type":"string","enum":["waiting","reused"]},"deployment_id":{"type":"string"},"canonical_deployment_id":{"type":"string"},"number":{"type":"integer","minimum":1}}},"region_count":{"type":"integer","minimum":1},"live_region_count":{"type":"integer","minimum":0},"is_live":{"type":"boolean"},"children":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentOperationChild"}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"DeploymentOperationChild":{"type":"object","required":["deployment_id","target_id","number","environment","location","build_role","build_status","rollout_status","history_kind","history_reason","recorded_status","desired_replicas","live_replicas","is_live","release_id","rollout_id","failure_message","superseded_by_deployment_id","ci_pipeline_id","ci_pipeline_run_id","started_at","finished_at","created_at","updated_at"],"properties":{"deployment_id":{"type":"string"},"target_id":{"type":"string","nullable":true},"number":{"type":"integer","minimum":1},"environment":{"type":"object","required":["id","slug","name","kind"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"}}},"location":{"type":"object","nullable":true,"required":["id","code","name"],"properties":{"id":{"type":"string"},"code":{"type":"string"},"name":{"type":"string"}}},"build_role":{"type":"string","enum":["leader","follower","standalone"]},"build_status":{"type":"string","enum":["queued","building","succeeded","failed","canceled","skipped"]},"rollout_status":{"type":"string","enum":["not_started","queued","running","succeeded","failed","canceled"]},"history_kind":{"type":"string","enum":["current","superseded","stale","historical"]},"history_reason":{"type":"string","nullable":true},"recorded_status":{"type":"string","enum":["queued","building","deploying","active","failed","rolled_back","canceled"]},"desired_replicas":{"type":"integer","minimum":0},"live_replicas":{"type":"integer","minimum":0},"is_live":{"type":"boolean"},"release_id":{"type":"string","nullable":true},"rollout_id":{"type":"string","nullable":true},"failure_message":{"type":"string","nullable":true},"superseded_by_deployment_id":{"type":"string","nullable":true},"ci_pipeline_id":{"type":"string","nullable":true},"ci_pipeline_run_id":{"type":"string","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"AppDeploymentCreatePayload":{"type":"object","anyOf":[{"required":["app_service_placement_id"]},{"required":["app_service_id","app_environment_id"]}],"properties":{"app_service_placement_id":{"type":"string"},"app_service_id":{"type":"string"},"app_environment_id":{"type":"string"},"location_id":{"type":"string"},"status":{"type":"string","enum":["queued","building","deploying","active","failed","rolled_back","canceled"]},"source_ref":{"type":"string"},"commit_sha":{"type":"string"},"artifact_locator":{"type":"string"},"deployed_url":{"type":"string"},"trigger_kind":{"type":"string","enum":["manual","push","schedule","api","rollback"]},"failure_message":{"type":"string"},"started_at":{"type":"string","format":"date-time"},"finished_at":{"type":"string","format":"date-time"}}},"AppDesiredState":{"type":"object","required":["id","organization_id","hosted_app_id","app_environment_id","app_service_id","network_segment_id","slug","status","desired_instances","desired_version","image_locator","command","env_fingerprint","config_fingerprint","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"hosted_app_id":{"type":"string"},"app_environment_id":{"type":"string"},"app_service_id":{"type":"string"},"network_segment_id":{"type":"string","nullable":true},"slug":{"type":"string"},"status":{"type":"string","enum":["active","paused","archived"]},"desired_instances":{"type":"integer","minimum":0},"desired_version":{"type":"string","nullable":true},"image_locator":{"type":"string","nullable":true},"command":{"type":"string","nullable":true},"env_fingerprint":{"type":"string","nullable":true},"config_fingerprint":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"AppRollout":{"type":"object","required":["id","organization_id","app_release_id","strategy","status","deployment_phase","auto_safe_rollout","nomad_deployment_id","nomad_eval_id","target_percentage","summary","started_at","finished_at","created_at","updated_at","started_at_label","finished_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"app_release_id":{"type":"string"},"strategy":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","canceled"]},"deployment_phase":{"type":"string","enum":["queued","deploying","active","failed","unknown"]},"auto_safe_rollout":{"type":"boolean"},"nomad_deployment_id":{"type":"string","nullable":true},"nomad_eval_id":{"type":"string","nullable":true},"target_percentage":{"type":"integer","minimum":0,"maximum":100},"summary":{"type":"string","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"started_at_label":{"type":"string","nullable":true},"finished_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"DeploymentRollbackRelease":{"type":"object","required":["id","slug","version","release_kind","status","source_ref","commit_sha","app_deployment_id","rollback_target_release_id","created_at"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"version":{"type":"string"},"release_kind":{"type":"string","enum":["deployment","rollback","hotfix"]},"status":{"type":"string","enum":["draft","ready","deploying","active","failed","rolled_back"]},"source_ref":{"type":"string","nullable":true},"commit_sha":{"type":"string","nullable":true},"app_deployment_id":{"type":"string","nullable":true},"rollback_target_release_id":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"}}},"DeploymentRollbackPlan":{"type":"object","required":["app_id","service","environment","location","current_release","current_deployment","target_release","target_artifact_locator","candidate_releases","reason","force","blockers","warnings","execution_allowed","confirmation_text"],"properties":{"app_id":{"type":"string"},"service":{"oneOf":[{"$ref":"#/components/schemas/AppService"},{"type":"null"}]},"environment":{"oneOf":[{"$ref":"#/components/schemas/AppEnvironment"},{"type":"null"}]},"location":{"oneOf":[{"$ref":"#/components/schemas/HostingLocation"},{"type":"null"}]},"current_release":{"oneOf":[{"$ref":"#/components/schemas/DeploymentRollbackRelease"},{"type":"null"}]},"current_deployment":{"oneOf":[{"$ref":"#/components/schemas/AppDeployment"},{"type":"null"}]},"target_release":{"oneOf":[{"$ref":"#/components/schemas/DeploymentRollbackRelease"},{"type":"null"}]},"target_artifact_locator":{"type":"string","nullable":true},"candidate_releases":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentRollbackRelease"}},"reason":{"type":"string","nullable":true},"force":{"type":"boolean"},"blockers":{"type":"array","items":{"type":"string"}},"warnings":{"type":"array","items":{"type":"string"}},"execution_allowed":{"type":"boolean"},"confirmation_text":{"type":"string"}}},"DeploymentRollbackResult":{"allOf":[{"$ref":"#/components/schemas/DeploymentRollbackPlan"},{"type":"object","required":["idempotent_reuse","operation","deployment","rollback_release","desired_state","rollout"],"properties":{"idempotent_reuse":{"type":"boolean"},"operation":{"oneOf":[{"$ref":"#/components/schemas/DeploymentOperation"},{"type":"null"}]},"deployment":{"oneOf":[{"$ref":"#/components/schemas/AppDeployment"},{"type":"null"}]},"rollback_release":{"oneOf":[{"$ref":"#/components/schemas/DeploymentRollbackRelease"},{"type":"null"}]},"desired_state":{"oneOf":[{"$ref":"#/components/schemas/AppDesiredState"},{"type":"null"}]},"rollout":{"oneOf":[{"$ref":"#/components/schemas/AppRollout"},{"type":"null"}]}}}]},"DeploymentRollbackPayload":{"type":"object","properties":{"app_service_id":{"type":"string"},"service":{"type":"string"},"app_environment_id":{"type":"string"},"environment":{"type":"string"},"to":{"type":"string"},"deployment":{"type":"string"},"reason":{"type":"string"},"force":{"type":"boolean"},"idempotency_key":{"type":"string"}}},"AppCdnHostname":{"type":"object","required":["id","app_cdn_distribution_id","hostname","tls_status","dns_status","provider_hostname_id","force_ssl","created_at","updated_at"],"properties":{"id":{"type":"string"},"app_cdn_distribution_id":{"type":"string"},"hostname":{"type":"string"},"tls_status":{"type":"string","enum":["pending","active","failed"]},"dns_status":{"type":"string","enum":["pending","configured","failed"]},"provider_hostname_id":{"type":"string","nullable":true},"force_ssl":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"AppCdnDistribution":{"type":"object","required":["id","hosted_app_id","app_environment_id","app_service_id","slug","name","distribution_kind","status","origin_url","edge_hostname","provisioned","cache_settings_json","security_settings_json","routing_settings_json","failure_message","last_synced_at","last_deployed_at","last_purged_at","hostnames","created_at","updated_at","last_synced_at_label","last_deployed_at_label","last_purged_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"hosted_app_id":{"type":"string"},"app_environment_id":{"type":"string","nullable":true},"app_service_id":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"distribution_kind":{"type":"string","enum":["pull_zone"]},"status":{"type":"string","enum":["draft","provisioning","active","degraded","paused","archived","failed"]},"origin_url":{"type":"string","format":"uri"},"cache_path_prefix":{"type":"string","nullable":true},"edge_hostname":{"type":"string","nullable":true},"provisioned":{"type":"boolean"},"cache_settings_json":{"type":"string","nullable":true},"security_settings_json":{"type":"string","nullable":true},"routing_settings_json":{"type":"string","nullable":true},"failure_message":{"type":"string","nullable":true},"last_synced_at":{"type":"string","format":"date-time","nullable":true},"last_deployed_at":{"type":"string","format":"date-time","nullable":true},"last_purged_at":{"type":"string","format":"date-time","nullable":true},"hostnames":{"type":"array","items":{"$ref":"#/components/schemas/AppCdnHostname"}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"last_synced_at_label":{"type":"string","nullable":true},"last_deployed_at_label":{"type":"string","nullable":true},"last_purged_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"AppCdnDeployment":{"type":"object","required":["id","app_cdn_distribution_id","creator_user_id","status","action_kind","trigger_kind","source_ref","commit_sha","purge_urls","failure_message","started_at","finished_at","created_at","updated_at","started_at_label","finished_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"app_cdn_distribution_id":{"type":"string"},"creator_user_id":{"type":"string","nullable":true},"status":{"type":"string","enum":["queued","deploying","active","failed","canceled"]},"action_kind":{"type":"string","enum":["provision","reconfigure","hostname_sync","purge_all","purge_urls"]},"trigger_kind":{"type":"string","enum":["manual","push","schedule","api","rollback"]},"source_ref":{"type":"string","nullable":true},"commit_sha":{"type":"string","nullable":true},"purge_urls":{"type":"array","items":{"type":"string"}},"failure_message":{"type":"string","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"started_at_label":{"type":"string","nullable":true},"finished_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"AppCdnDistributionCreatePayload":{"type":"object","required":["slug","name","origin_url"],"properties":{"app_environment_id":{"type":"string"},"app_service_id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"distribution_kind":{"type":"string","enum":["pull_zone"]},"status":{"type":"string","enum":["draft","provisioning","active","degraded","paused","archived","failed"]},"origin_url":{"type":"string","format":"uri"},"cache_path_prefix":{"type":"string","nullable":true},"cache_settings_json":{"type":"string"},"security_settings_json":{"type":"string"},"routing_settings_json":{"type":"string"}}},"AppCdnDistributionUpdatePayload":{"type":"object","properties":{"app_environment_id":{"type":"string"},"app_service_id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"distribution_kind":{"type":"string","enum":["pull_zone"]},"status":{"type":"string","enum":["draft","provisioning","active","degraded","paused","archived","failed"]},"origin_url":{"type":"string","format":"uri"},"cache_path_prefix":{"type":"string","nullable":true},"cache_settings_json":{"type":"string"},"security_settings_json":{"type":"string"},"routing_settings_json":{"type":"string"}}},"AppCdnHostnameCreatePayload":{"type":"object","required":["hostname"],"properties":{"hostname":{"type":"string"},"force_ssl":{"type":"boolean"},"tls_status":{"type":"string","enum":["pending","active","failed"]},"dns_status":{"type":"string","enum":["pending","configured","failed"]}}},"AppCdnDeploymentPayload":{"type":"object","properties":{"source_ref":{"type":"string"},"commit_sha":{"type":"string"}}},"AppCdnPurgePayload":{"allOf":[{"$ref":"#/components/schemas/AppCdnDeploymentPayload"},{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string"}},"purge_urls":{"type":"array","items":{"type":"string"}}}}]},"HostedApp":{"type":"object","required":["id","organization_id","repository_id","repository_kind","slug","name","description","root_path","root_path_display","framework","status","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"repository_id":{"type":"string"},"repository_kind":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"root_path":{"type":"string"},"root_path_display":{"type":"string"},"framework":{"type":"string","nullable":true},"status":{"type":"string","enum":["draft","active","archived"]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"HostedAppCreatePayload":{"type":"object","required":["organization_id","repository_id","slug","name","root_path"],"properties":{"organization_id":{"type":"string"},"repository_id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"root_path":{"type":"string"},"framework":{"type":"string"},"status":{"type":"string","enum":["draft","active","archived"]}}},"HostedAppUpdatePayload":{"type":"object","properties":{"organization_id":{"type":"string"},"repository_id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"root_path":{"type":"string"},"framework":{"type":"string"},"status":{"type":"string","enum":["draft","active","archived"]}}},"ManagedDatabaseRegion":{"type":"object","required":["slug"],"properties":{"slug":{"type":"string"},"display_name":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"vex_location_code":{"type":"string","nullable":true},"provider":{"type":"string","nullable":true},"enabled":{"type":"boolean","nullable":true},"postgresql_supported":{"type":"boolean","nullable":true},"mysql_supported":{"type":"boolean","nullable":true},"current_default":{"type":"boolean","nullable":true},"source":{"type":"string","nullable":true}}},"ManagedDatabaseClusterSize":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"display_name":{"type":"string","nullable":true},"enabled":{"type":"boolean","nullable":true},"production":{"type":"boolean","nullable":true},"development":{"type":"boolean","nullable":true},"cpu":{"nullable":true,"oneOf":[{"type":"string"},{"type":"number"}]},"ram":{"nullable":true,"oneOf":[{"type":"string"},{"type":"number"}]},"storage":{"nullable":true,"oneOf":[{"type":"string"},{"type":"number"}]},"metal":{"nullable":true,"oneOf":[{"type":"string"},{"type":"boolean"}]},"architecture":{"type":"string","nullable":true}}},"ManagedDatabaseEngine":{"type":"object","required":["engine","kind","label","provider_kind"],"properties":{"engine":{"type":"string","enum":["postgres","mysql","valkey"]},"kind":{"type":"string","enum":["database","cache"]},"label":{"type":"string"},"provider_kind":{"type":"string"},"provider_database_kind":{"type":"string","nullable":true},"default_version":{"type":"string","nullable":true},"default_plan":{"type":"string","nullable":true},"default_cluster_size":{"type":"string","nullable":true},"default_connection_mode":{"type":"string","nullable":true},"sslmode":{"type":"string","nullable":true},"ssl_mode":{"type":"string","nullable":true},"supported_versions":{"type":"array","items":{"type":"string"}},"regions":{"type":"array","items":{"$ref":"#/components/schemas/ManagedDatabaseRegion"}},"cluster_sizes":{"type":"array","items":{"$ref":"#/components/schemas/ManagedDatabaseClusterSize"}}}},"ManagedDatabaseCatalog":{"type":"object","required":["default_provider_kind","fallback_provider_kind","provider_configured","live_catalog","engines"],"properties":{"default_provider_kind":{"type":"string"},"fallback_provider_kind":{"type":"string"},"provider_configured":{"type":"boolean"},"live_catalog":{"type":"boolean"},"engines":{"type":"array","items":{"$ref":"#/components/schemas/ManagedDatabaseEngine"}}}},"AppDomain":{"type":"object","required":["id","hosted_app_id","app_service_id","app_environment_id","static_site_id","hostname","kind","target_kind","dns_mode","record_type","record_name","record_value","tls_status","dns_status","verification_status","last_checked_at","failure_message","redirect_to","verification_record","certificate","path_rules","created_at","updated_at"],"properties":{"id":{"type":"string"},"hosted_app_id":{"type":"string"},"app_service_id":{"type":"string","nullable":true},"app_environment_id":{"type":"string","nullable":true},"static_site_id":{"type":"string","nullable":true},"hostname":{"type":"string"},"kind":{"type":"string","enum":["primary","redirect","preview","internal"]},"target_kind":{"type":"string","enum":["app_service","static_site"]},"dns_mode":{"type":"string","enum":["manual_cname","cloudflare"]},"record_type":{"type":"string","nullable":true},"record_name":{"type":"string","nullable":true},"record_value":{"type":"string","nullable":true},"tls_status":{"type":"string","enum":["pending","active","failed"]},"dns_status":{"type":"string","enum":["pending","configured","failed"]},"verification_status":{"type":"string"},"last_checked_at":{"type":"string","format":"date-time","nullable":true},"failure_message":{"type":"string","nullable":true},"redirect_to":{"type":"string","nullable":true},"certificate":{"type":"object","nullable":true,"required":["status","last_error","expires_at"],"properties":{"status":{"type":"string"},"last_error":{"type":"string","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true}}},"verification_record":{"type":"object","nullable":true,"required":["type","name","value"],"properties":{"type":{"type":"string","enum":["TXT"]},"name":{"type":"string"},"value":{"type":"string"}}},"path_rules":{"type":"array","items":{"$ref":"#/components/schemas/AppDomainPathRule"}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"AppConfigVariable":{"type":"object","required":["id","hosted_app_id","app_environment_id","app_service_id","scope_kind","key","value","has_value","value_kind","description","exposed_to_build","created_at","updated_at"],"properties":{"id":{"type":"string"},"hosted_app_id":{"type":"string"},"app_environment_id":{"type":"string","nullable":true},"app_service_id":{"type":"string","nullable":true},"scope_kind":{"type":"string","enum":["app","environment","service"]},"key":{"type":"string"},"value":{"type":"string","nullable":true},"has_value":{"type":"boolean"},"value_kind":{"type":"string","enum":["plain","secret","reference"]},"description":{"type":"string","nullable":true},"exposed_to_build":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"HostedAppCatalog":{"allOf":[{"$ref":"#/components/schemas/HostedApp"},{"type":"object","required":["locations","environments","services","deployments","cdns","cdn_deployments","data_resources","managed_database_catalog","storage_resources","domains","config_variables","service_bindings"],"properties":{"locations":{"type":"array","items":{"$ref":"#/components/schemas/HostingLocation"}},"environments":{"type":"array","items":{"$ref":"#/components/schemas/AppEnvironment"}},"services":{"type":"array","items":{"$ref":"#/components/schemas/AppService"}},"deployments":{"type":"array","items":{"$ref":"#/components/schemas/AppDeployment"}},"cdns":{"type":"array","items":{"$ref":"#/components/schemas/AppCdnDistribution"}},"cdn_deployments":{"type":"array","items":{"$ref":"#/components/schemas/AppCdnDeployment"}},"data_resources":{"type":"array","items":{"$ref":"#/components/schemas/AppDataResource"}},"managed_database_catalog":{"$ref":"#/components/schemas/ManagedDatabaseCatalog"},"storage_resources":{"type":"array","items":{"$ref":"#/components/schemas/AppStorageResource"}},"domains":{"type":"array","items":{"$ref":"#/components/schemas/AppDomain"}},"config_variables":{"type":"array","items":{"$ref":"#/components/schemas/AppConfigVariable"}},"service_bindings":{"type":"array","items":{"$ref":"#/components/schemas/AppServiceBinding"}}}}]},"AppRelease":{"type":"object","required":["id","organization_id","hosted_app_id","app_environment_id","app_service_id","location_id","created_by_user_id","app_deployment_id","ci_pipeline_run_id","slug","version","location","release_command_execution","nomad_job_id","nomad_namespace","nomad_job_version","nomad_deployment_id","nomad_eval_id","rendered_job_spec_digest","source_ref","commit_sha","release_kind","release_command","prestart_command","image_digest","image_reference","image_repository","source_commit","builder_image","builder_version","target_platform","ci_run_identity","is_rollback","rollback_target_release_id","status","deployment_phase","rollout_status","rollback_reason","self_hosted_managed","self_hosted_reconcile_enabled","self_hosted_apply_enabled","notes","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"hosted_app_id":{"type":"string"},"app_environment_id":{"type":"string"},"app_service_id":{"type":"string"},"location_id":{"type":"string"},"created_by_user_id":{"type":"string","nullable":true},"app_deployment_id":{"type":"string","nullable":true},"ci_pipeline_run_id":{"type":"string","nullable":true},"slug":{"type":"string"},"version":{"type":"string"},"location":{"oneOf":[{"$ref":"#/components/schemas/HostingLocation"},{"type":"null"}]},"release_command_execution":{"oneOf":[{"$ref":"#/components/schemas/AppReleaseCommandExecution"},{"type":"null"}]},"nomad_job_id":{"type":"string","nullable":true},"nomad_namespace":{"type":"string","nullable":true},"nomad_job_version":{"type":"integer","nullable":true},"nomad_deployment_id":{"type":"string","nullable":true},"nomad_eval_id":{"type":"string","nullable":true},"rendered_job_spec_digest":{"type":"string","nullable":true},"source_ref":{"type":"string","nullable":true},"commit_sha":{"type":"string","nullable":true},"release_kind":{"type":"string","enum":["deployment","rollback","hotfix"]},"release_command":{"type":"string","nullable":true},"prestart_command":{"type":"string","nullable":true},"image_digest":{"type":"string","nullable":true},"image_reference":{"type":"string","nullable":true},"image_repository":{"type":"string","nullable":true},"source_commit":{"type":"string","nullable":true},"builder_image":{"type":"string","nullable":true},"builder_version":{"type":"string","nullable":true},"target_platform":{"type":"string","nullable":true},"ci_run_identity":{"type":"string","nullable":true},"is_rollback":{"type":"boolean"},"rollback_target_release_id":{"type":"string","nullable":true},"status":{"type":"string","enum":["draft","ready","deploying","active","failed","rolled_back"]},"deployment_phase":{"type":"string","enum":["failed","active","deploying","ready","rolled_back","unknown"]},"rollout_status":{"type":"string","enum":["queued","running","succeeded","failed","canceled"],"nullable":true},"rollback_reason":{"type":"string","nullable":true},"self_hosted_managed":{"type":"boolean"},"self_hosted_reconcile_enabled":{"type":"boolean"},"self_hosted_apply_enabled":{"type":"boolean"},"notes":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"AppReleaseCommandExecution":{"type":"object","required":["id","app_release_id","app_deployment_id","ci_pipeline_run_id","status","provider_kind","attempt_count","max_attempts","timeout_seconds","logs","exit_code","failure_message","started_at","finished_at","created_at","updated_at","started_at_label","finished_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"app_release_id":{"type":"string"},"app_deployment_id":{"type":"string"},"ci_pipeline_run_id":{"type":"string","nullable":true},"status":{"type":"string","enum":["queued","running","succeeded","failed","timed_out"]},"provider_kind":{"type":"string"},"attempt_count":{"type":"integer","minimum":0},"max_attempts":{"type":"integer","minimum":1},"timeout_seconds":{"type":"integer","minimum":1},"logs":{"type":"string","nullable":true},"exit_code":{"type":"integer","nullable":true},"failure_message":{"type":"string","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"started_at_label":{"type":"string","nullable":true},"finished_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"RuntimeInstance":{"type":"object","required":["id","organization_id","hosted_app_id","app_environment_id","app_service_id","app_release_id","location_id","network_peer_id","slug","instance_key","service_name","location","status","adapter_kind","provider_instance_id","nomad_allocation_id","nomad_task_name","private_ipv4","private_ipv6","public_endpoint","booted_at","terminated_at","last_seen_at","last_reconciled_at","created_at","updated_at","booted_at_label","terminated_at_label","last_seen_at_label","last_reconciled_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"hosted_app_id":{"type":"string"},"app_environment_id":{"type":"string"},"app_service_id":{"type":"string"},"app_release_id":{"type":"string","nullable":true},"location_id":{"type":"string"},"network_peer_id":{"type":"string","nullable":true},"slug":{"type":"string"},"instance_key":{"type":"string"},"service_name":{"type":"string","description":"Name of the Vex service this instance runs, in the same vocabulary as `vex deploy list`. `nomad_task_name` is the scheduler's own name for the same workload."},"location":{"oneOf":[{"$ref":"#/components/schemas/HostingLocation"},{"type":"null"}]},"status":{"type":"string","enum":["starting","running","degraded","stopped","terminated","failed"]},"adapter_kind":{"type":"string","enum":["database","nomad"]},"provider_instance_id":{"type":"string","nullable":true},"nomad_allocation_id":{"type":"string","nullable":true},"nomad_task_name":{"type":"string","nullable":true},"private_ipv4":{"type":"string","nullable":true},"private_ipv6":{"type":"string","nullable":true},"public_endpoint":{"type":"string","nullable":true},"booted_at":{"type":"string","format":"date-time","nullable":true},"terminated_at":{"type":"string","format":"date-time","nullable":true},"last_seen_at":{"type":"string","format":"date-time","nullable":true},"last_reconciled_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"booted_at_label":{"type":"string","nullable":true},"terminated_at_label":{"type":"string","nullable":true},"last_seen_at_label":{"type":"string","nullable":true},"last_reconciled_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"ReconcilerTick":{"type":"object","required":["id","organization_id","hosted_app_id","app_environment_id","app_service_id","kind","status","observed_version","summary","started_at","finished_at","created_at","updated_at","started_at_label","finished_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"hosted_app_id":{"type":"string","nullable":true},"app_environment_id":{"type":"string","nullable":true},"app_service_id":{"type":"string","nullable":true},"kind":{"type":"string","enum":["generic","release","runtime","network","health","cdn"]},"status":{"type":"string","enum":["queued","running","succeeded","failed"]},"observed_version":{"type":"string","nullable":true},"summary":{"type":"string","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"started_at_label":{"type":"string","nullable":true},"finished_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"AuditEvent":{"type":"object","required":["id","observability_space_id","organization_id","actor_user_id","actor_kind","action","subject_kind","subject_id","subject_name","request_id","severity","payload","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"observability_space_id":{"type":"string","nullable":true},"organization_id":{"type":"string"},"actor_user_id":{"type":"string","nullable":true},"actor_kind":{"type":"string","enum":["user","service","system","agent"]},"action":{"type":"string"},"subject_kind":{"type":"string"},"subject_id":{"type":"string"},"subject_name":{"type":"string","nullable":true},"request_id":{"type":"string","nullable":true},"severity":{"type":"string","enum":["info","notice","warn","error"]},"payload":{},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"GrafanaEmbed":{"type":"object","required":["provider","scope","title","description","url","external_url"],"properties":{"provider":{"type":"string","enum":["grafana"]},"scope":{"type":"string","enum":["app","service","environment"]},"title":{"type":"string"},"description":{"type":"string"},"url":{"type":"string"},"external_url":{"type":"string","format":"uri"}}},"EnvironmentGrafanaEmbed":{"type":"object","required":["environment","grafana_embed"],"properties":{"environment":{"$ref":"#/components/schemas/AppEnvironment"},"grafana_embed":{"oneOf":[{"$ref":"#/components/schemas/GrafanaEmbed"},{"type":"null"}]}}},"ObservedMetricSeries":{"type":"object","required":["key","label","unit","points"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"unit":{"type":"string","enum":["percent","bytes","count","requests_per_second","seconds","milliseconds"]},"points":{"type":"array","items":{"type":"array","minItems":2,"maxItems":2,"items":{"oneOf":[{"type":"number"},{"type":"null"}]}}}}},"ObservedMetricResult":{"type":"object","required":["name","title","unit","step_seconds","series","truncated","rejected_series_count"],"properties":{"name":{"type":"string"},"title":{"type":"string"},"unit":{"type":"string","enum":["percent","bytes","count","requests_per_second","seconds","milliseconds"]},"step_seconds":{"type":"integer","minimum":1},"series":{"type":"array","items":{"$ref":"#/components/schemas/ObservedMetricSeries"}},"truncated":{"type":"boolean"},"rejected_series_count":{"type":"integer","minimum":0}}},"ObservedMetricsSnapshot":{"type":"object","required":["state","range","available_ranges","results","error"],"properties":{"state":{"type":"string","enum":["ready","collecting","unavailable"]},"range":{"type":"string","enum":["1h","6h","24h","7d"]},"available_ranges":{"type":"array","items":{"type":"string","enum":["1h","6h","24h","7d"]}},"results":{"type":"array","items":{"$ref":"#/components/schemas/ObservedMetricResult"}},"error":{"type":"string","nullable":true}}},"DeploymentDashboardObservability":{"type":"object","required":["grafana_embed","environment_embeds","observed_metrics"],"properties":{"grafana_embed":{"oneOf":[{"$ref":"#/components/schemas/GrafanaEmbed"},{"type":"null"}]},"environment_embeds":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentGrafanaEmbed"}},"observed_metrics":{"oneOf":[{"$ref":"#/components/schemas/ObservedMetricsSnapshot"},{"type":"null"}]}}},"EnvironmentRuntimeSummary":{"type":"object","required":["desired_instances","desired_version","total_instances","running_instances","degraded_instances","failed_instances"],"properties":{"desired_instances":{"type":"integer","minimum":0},"desired_version":{"type":"string","nullable":true},"total_instances":{"type":"integer","minimum":0},"running_instances":{"type":"integer","minimum":0},"degraded_instances":{"type":"integer","minimum":0},"failed_instances":{"type":"integer","minimum":0}}},"DeploymentNomadSummary":{"type":"object","required":["namespace","region","datacenters","constraints","update_strategy","deployment_channel","ownership_layer","managed_by_vex","self_hosted_managed","self_hosted_reconcile_enabled","self_hosted_apply_enabled","managed_service_allowlist","latest_job_id","latest_job_version","latest_deployment_id","latest_eval_id","allocation_ids","task_names"],"properties":{"namespace":{"type":"string"},"region":{"type":"string","nullable":true},"datacenters":{"type":"array","items":{"type":"string"}},"constraints":{"type":"array","items":{}},"update_strategy":{"type":"object","additionalProperties":true},"deployment_channel":{"type":"string"},"ownership_layer":{"type":"string"},"managed_by_vex":{"type":"boolean"},"self_hosted_managed":{"type":"boolean"},"self_hosted_reconcile_enabled":{"type":"boolean"},"self_hosted_apply_enabled":{"type":"boolean"},"managed_service_allowlist":{"type":"array","items":{"type":"string"}},"latest_job_id":{"type":"string","nullable":true},"latest_job_version":{"type":"integer","nullable":true},"latest_deployment_id":{"type":"string","nullable":true},"latest_eval_id":{"type":"string","nullable":true},"allocation_ids":{"type":"array","items":{"type":"string"}},"task_names":{"type":"array","items":{"type":"string"}}}},"ServiceCapacityResource":{"type":"object","required":["value","value_label","defaulted","total","total_label"],"properties":{"value":{"type":"integer","minimum":0},"value_label":{"type":"string"},"defaulted":{"type":"boolean"},"total":{"type":"integer","minimum":0},"total_label":{"type":"string"}}},"RolloutPeakCapacity":{"type":"object","required":["instances","cpu_mhz","memory_mb","disk_mb","cpu_label","memory_label","disk_label"],"properties":{"instances":{"type":"integer","minimum":0},"cpu_mhz":{"type":"integer","minimum":0},"memory_mb":{"type":"integer","minimum":0},"disk_mb":{"type":"integer","minimum":0},"cpu_label":{"type":"string"},"memory_label":{"type":"string"},"disk_label":{"type":"string"}}},"ServiceCapacity":{"type":"object","required":["reservation_instances","deployment_channel","rollout_extra_instances","rollout_peak","resources"],"properties":{"reservation_instances":{"type":"integer","minimum":1},"deployment_channel":{"type":"string"},"rollout_extra_instances":{"type":"integer","minimum":0},"rollout_peak":{"$ref":"#/components/schemas/RolloutPeakCapacity"},"resources":{"type":"object","required":["cpu","memory","disk"],"properties":{"cpu":{"$ref":"#/components/schemas/ServiceCapacityResource"},"memory":{"$ref":"#/components/schemas/ServiceCapacityResource"},"disk":{"$ref":"#/components/schemas/ServiceCapacityResource"}}}}},"ServiceEnvironmentView":{"type":"object","required":["environment","grafana_embed","desired_state","latest_deployment","latest_release","latest_rollout","runtime_instances","reconciler_ticks","audit_events","stats","nomad"],"properties":{"environment":{"$ref":"#/components/schemas/AppEnvironment"},"grafana_embed":{"oneOf":[{"$ref":"#/components/schemas/GrafanaEmbed"},{"type":"null"}]},"desired_state":{"oneOf":[{"$ref":"#/components/schemas/AppDesiredState"},{"type":"null"}]},"latest_deployment":{"oneOf":[{"$ref":"#/components/schemas/AppDeployment"},{"type":"null"}]},"latest_release":{"oneOf":[{"$ref":"#/components/schemas/AppRelease"},{"type":"null"}]},"latest_rollout":{"oneOf":[{"$ref":"#/components/schemas/AppRollout"},{"type":"null"}]},"runtime_instances":{"type":"array","items":{"$ref":"#/components/schemas/RuntimeInstance"}},"reconciler_ticks":{"type":"array","items":{"$ref":"#/components/schemas/ReconcilerTick"}},"audit_events":{"type":"array","items":{"$ref":"#/components/schemas/AuditEvent"}},"stats":{"$ref":"#/components/schemas/EnvironmentRuntimeSummary"},"nomad":{"$ref":"#/components/schemas/DeploymentNomadSummary"}}},"ServiceConnection":{"type":"object","required":["source_service_id","target_kind","target_id","binding_types"],"properties":{"source_service_id":{"type":"string"},"target_kind":{"type":"string","enum":["service","data_resource","storage_resource"]},"target_id":{"type":"string"},"binding_types":{"type":"array","items":{"type":"string","enum":["connection","mount","env","private_network","service"]}}}},"ServiceRegionFootprint":{"type":"object","required":["location_id","location_name","live","desired"],"properties":{"location_id":{"type":"string"},"location_name":{"type":"string"},"live":{"type":"integer","minimum":0},"desired":{"type":"integer","minimum":0}}},"ServiceView":{"type":"object","required":["service","grafana_embed","runtime_summary","status","region_footprints","capacity","latest_release","latest_rollout","latest_deployment","nomad","audit_events","environment_views"],"properties":{"service":{"$ref":"#/components/schemas/AppService"},"grafana_embed":{"oneOf":[{"$ref":"#/components/schemas/GrafanaEmbed"},{"type":"null"}]},"runtime_summary":{"$ref":"#/components/schemas/EnvironmentRuntimeSummary"},"status":{"type":"string"},"region_footprints":{"type":"array","items":{"$ref":"#/components/schemas/ServiceRegionFootprint"}},"capacity":{"$ref":"#/components/schemas/ServiceCapacity"},"latest_release":{"oneOf":[{"$ref":"#/components/schemas/AppRelease"},{"type":"null"}]},"latest_rollout":{"oneOf":[{"$ref":"#/components/schemas/AppRollout"},{"type":"null"}]},"latest_deployment":{"oneOf":[{"$ref":"#/components/schemas/AppDeployment"},{"type":"null"}]},"nomad":{"$ref":"#/components/schemas/DeploymentNomadSummary"},"audit_events":{"type":"array","items":{"$ref":"#/components/schemas/AuditEvent"}},"environment_views":{"type":"array","items":{"$ref":"#/components/schemas/ServiceEnvironmentView"}}}},"DeploymentCapacity":{"type":"object","required":["cpu_mhz","memory_mb","disk_mb","cpu_label","memory_label","disk_label","running_instances","desired_instances","public_endpoints"],"properties":{"cpu_mhz":{"type":"integer","minimum":0},"memory_mb":{"type":"integer","minimum":0},"disk_mb":{"type":"integer","minimum":0},"cpu_label":{"type":"string"},"memory_label":{"type":"string"},"disk_label":{"type":"string"},"running_instances":{"type":"integer","minimum":0},"desired_instances":{"type":"integer","minimum":0},"public_endpoints":{"type":"integer","minimum":0}}},"DeploymentActivityItem":{"type":"object","required":["id","source","title","subtitle","timestamp","timestamp_label","service_id","environment_id","status","tone","detail"],"properties":{"id":{"type":"string"},"source":{"type":"string","enum":["deployment","release","rollout","reconciler","event"]},"title":{"type":"string"},"subtitle":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"timestamp_label":{"type":"string"},"service_id":{"type":"string","nullable":true},"environment_id":{"type":"string","nullable":true},"status":{"type":"string"},"tone":{"type":"string","enum":["neutral","success","warning","danger","info"]},"detail":{"type":"string","nullable":true}}},"DeploymentDashboardSummary":{"type":"object","required":["service_count","environment_count","desired_state_count","deployment_count","active_release_count","in_flight_release_count","running_instance_count","unhealthy_instance_count","nomad_job_count","nomad_deployment_count","nomad_eval_count","nomad_allocation_count","recent_event_count"],"properties":{"service_count":{"type":"integer","minimum":0},"environment_count":{"type":"integer","minimum":0},"desired_state_count":{"type":"integer","minimum":0},"deployment_count":{"type":"integer","minimum":0},"active_release_count":{"type":"integer","minimum":0},"in_flight_release_count":{"type":"integer","minimum":0},"running_instance_count":{"type":"integer","minimum":0},"unhealthy_instance_count":{"type":"integer","minimum":0},"nomad_job_count":{"type":"integer","minimum":0},"nomad_deployment_count":{"type":"integer","minimum":0},"nomad_eval_count":{"type":"integer","minimum":0},"nomad_allocation_count":{"type":"integer","minimum":0},"recent_event_count":{"type":"integer","minimum":0}}},"DeploymentDashboard":{"type":"object","required":["app","observability","summary","capacity","activity","locations","environments","services","data_resources","managed_database_catalog","storage_resources","service_bindings","connections","placements","desired_states","operations","deployments","rollback_deployments","releases","rollouts","runtime_instances","reconciler_ticks","audit_events","service_views"],"properties":{"app":{"$ref":"#/components/schemas/HostedApp"},"observability":{"$ref":"#/components/schemas/DeploymentDashboardObservability"},"summary":{"$ref":"#/components/schemas/DeploymentDashboardSummary"},"capacity":{"$ref":"#/components/schemas/DeploymentCapacity"},"activity":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentActivityItem"}},"locations":{"type":"array","items":{"$ref":"#/components/schemas/HostingLocation"}},"environments":{"type":"array","items":{"$ref":"#/components/schemas/AppEnvironment"}},"services":{"type":"array","items":{"$ref":"#/components/schemas/AppService"}},"data_resources":{"type":"array","items":{"$ref":"#/components/schemas/AppDataResource"}},"managed_database_catalog":{"$ref":"#/components/schemas/ManagedDatabaseCatalog"},"storage_resources":{"type":"array","items":{"$ref":"#/components/schemas/AppStorageResource"}},"service_bindings":{"type":"array","items":{"$ref":"#/components/schemas/AppServiceBinding"}},"connections":{"type":"array","items":{"$ref":"#/components/schemas/ServiceConnection"}},"placements":{"type":"array","items":{"$ref":"#/components/schemas/AppServicePlacement"}},"desired_states":{"type":"array","items":{"$ref":"#/components/schemas/AppDesiredState"}},"operations":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentOperation"}},"deployments":{"type":"array","items":{"$ref":"#/components/schemas/AppDeployment"}},"rollback_deployments":{"type":"array","items":{"$ref":"#/components/schemas/AppDeployment"}},"releases":{"type":"array","items":{"$ref":"#/components/schemas/AppRelease"}},"rollouts":{"type":"array","items":{"$ref":"#/components/schemas/AppRollout"}},"runtime_instances":{"type":"array","items":{"$ref":"#/components/schemas/RuntimeInstance"}},"reconciler_ticks":{"type":"array","items":{"$ref":"#/components/schemas/ReconcilerTick"}},"audit_events":{"type":"array","items":{"$ref":"#/components/schemas/AuditEvent"}},"service_views":{"type":"array","items":{"$ref":"#/components/schemas/ServiceView"}}}},"DeploymentDetailsPage":{"type":"object","additionalProperties":true,"required":["filters","deploy_targets","app_id","app","health","nomad","capacity","environments","placements","desired_states","service_views","operations","deployments","releases","runtime_instances","reconciler_ticks","audit_events","service_bindings","data_resources","storage_resources","activity"],"properties":{"filters":{"$ref":"#/components/schemas/DeploymentFilters"},"deploy_targets":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentTarget"}},"app_id":{"type":"string","nullable":true},"app":{"oneOf":[{"$ref":"#/components/schemas/HostedApp"},{"type":"null"}]},"health":{"$ref":"#/components/schemas/DeploymentScopeHealth"},"nomad":{"$ref":"#/components/schemas/DeploymentScopeNomad"},"capacity":{"$ref":"#/components/schemas/DeploymentCapacity"},"environments":{"type":"array","items":{"$ref":"#/components/schemas/AppEnvironment"}},"placements":{"type":"array","items":{"$ref":"#/components/schemas/AppServicePlacement"}},"desired_states":{"type":"array","items":{"$ref":"#/components/schemas/AppDesiredState"}},"service_views":{"type":"array","items":{"$ref":"#/components/schemas/DetailsServiceView"}},"operations":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentOperation"}},"deployments":{"type":"array","items":{"$ref":"#/components/schemas/DetailsDeploymentRow"}},"releases":{"type":"array","items":{"$ref":"#/components/schemas/DetailsReleaseRow"}},"runtime_instances":{"type":"array","items":{"$ref":"#/components/schemas/RuntimeInstance"}},"reconciler_ticks":{"type":"array","items":{"$ref":"#/components/schemas/ReconcilerTick"}},"audit_events":{"type":"array","items":{"$ref":"#/components/schemas/AuditEvent"}},"service_bindings":{"type":"array","items":{"$ref":"#/components/schemas/AppServiceBinding"}},"data_resources":{"type":"array","items":{"$ref":"#/components/schemas/AppDataResource"}},"storage_resources":{"type":"array","items":{"$ref":"#/components/schemas/AppStorageResource"}},"activity":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentActivityItem"}}}},"AppServiceBinding":{"type":"object","required":["id","hosted_app_id","app_service_id","bindable_type","bindable_id","binding_type","name","mount_path","read_only","required","created_at","updated_at"],"properties":{"id":{"type":"string"},"hosted_app_id":{"type":"string"},"app_service_id":{"type":"string"},"bindable_type":{"type":"string"},"bindable_id":{"type":"string"},"binding_type":{"type":"string"},"name":{"type":"string"},"mount_path":{"type":"string","nullable":true},"read_only":{"type":"boolean"},"required":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"AppService":{"type":"object","required":["id","hosted_app_id","slug","name","kind","runtime","runtime_adapter_kind","runtime_adapter_settings_json","nomad_namespace","nomad_region","cpu_mhz","memory_mb","memory_max_mb","disk_mb","nomad_constraints_json","nomad_update_strategy_json","nomad_ulimits_json","nomad_kill_timeout_seconds","nomad_shutdown_delay_seconds","source_path","repo_source_path","build_command","release_command","prestart_command","start_command","healthcheck_path","schedule","internal_port","desired_instances","publicly_accessible","auto_deploy","deploy_paths","effective_deploy_paths","bindings","created_at","updated_at","created_at_label","updated_at_label","cpu_label","memory_label","memory_max_label","disk_label"],"properties":{"id":{"type":"string"},"hosted_app_id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string","enum":["web","worker","cron","static","private"]},"runtime":{"type":"string","enum":["docker","node","ruby","python","go","rust","static","generic"]},"runtime_adapter_kind":{"type":"string","enum":["nomad","database"]},"runtime_adapter_settings_json":{"type":"string","nullable":true},"nomad_namespace":{"type":"string","nullable":true},"nomad_region":{"type":"string","nullable":true},"cpu_mhz":{"type":"integer","minimum":0,"nullable":true},"memory_mb":{"type":"integer","minimum":0,"nullable":true},"memory_max_mb":{"type":"integer","minimum":1,"nullable":true,"description":"Hard memory limit in MB the task may burst to (Nomad MemoryMaxMB). memory_mb stays the reservation the scheduler places against, so raising this does not make a rollout harder to place. Must be >= memory_mb. Memory above the reservation is oversubscribed and best effort: under node pressure the kernel reclaims it and can OOM-kill the task. Null/absent renders no limit beyond the reservation."},"disk_mb":{"type":"integer","minimum":0,"nullable":true},"nomad_constraints_json":{"type":"string","nullable":true},"nomad_update_strategy_json":{"type":"string","nullable":true},"nomad_ulimits_json":{"type":"string","nullable":true,"description":"Docker task ulimits as a JSON object of rlimit name to \"soft:hard\" (e.g. {\"nofile\":\"65536:65536\"}). Null/absent leaves the container on the daemon default."},"nomad_kill_timeout_seconds":{"type":"integer","minimum":1,"maximum":30,"nullable":true,"description":"Seconds the task gets after SIGTERM before SIGKILL. Null/absent leaves Nomad's 5s default. Capped at 30 because a Nomad client silently clamps kill_timeout to its own max_kill_timeout (default 30s)."},"nomad_shutdown_delay_seconds":{"type":"integer","minimum":0,"maximum":120,"nullable":true,"description":"Seconds Nomad waits between deregistering the group's services and sending SIGTERM, so the edge stops routing new requests to the allocation before it is signalled. Null/absent leaves Nomad's 0s default."},"source_path":{"type":"string"},"repo_source_path":{"type":"string"},"build_command":{"type":"string","nullable":true},"release_command":{"type":"string","nullable":true},"prestart_command":{"type":"string","nullable":true},"start_command":{"type":"string","nullable":true},"healthcheck_path":{"type":"string","nullable":true},"schedule":{"type":"string","nullable":true},"internal_port":{"type":"integer","minimum":1,"maximum":65535,"nullable":true},"desired_instances":{"type":"integer","minimum":0},"publicly_accessible":{"type":"boolean"},"auto_deploy":{"type":"boolean"},"deploy_paths":{"type":"array","description":"Explicit repo-root-relative path prefixes/globs a push must touch to auto-deploy. Empty means default to the app root_path.","items":{"type":"string"}},"effective_deploy_paths":{"type":"array","description":"Tracked paths actually applied by the auto-deploy trigger (explicit deploy_paths, else [root_path]).","items":{"type":"string"}},"bindings":{"type":"array","items":{"$ref":"#/components/schemas/AppServiceBinding"}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true},"cpu_label":{"type":"string","nullable":true},"memory_label":{"type":"string","nullable":true},"memory_max_label":{"type":"string","nullable":true},"disk_label":{"type":"string","nullable":true}}},"AppServiceCreatePayload":{"type":"object","required":["slug","name","kind","runtime","runtime_adapter_kind","source_path","start_command","desired_instances","publicly_accessible","auto_deploy"],"properties":{"slug":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string","enum":["web","worker","cron","static","private"]},"runtime":{"type":"string","enum":["docker","node","ruby","python","go","rust","static","generic"]},"runtime_adapter_kind":{"type":"string","enum":["nomad","database"]},"runtime_adapter_settings_json":{"type":"string"},"nomad_namespace":{"type":"string"},"nomad_region":{"type":"string"},"cpu_mhz":{"type":"integer","minimum":0},"memory_mb":{"type":"integer","minimum":0},"memory_max_mb":{"type":"integer","minimum":1,"description":"Hard memory limit in MB the task may burst to (Nomad MemoryMaxMB). Must be >= memory_mb, which stays the scheduler reservation. Omit to render no limit beyond the reservation."},"disk_mb":{"type":"integer","minimum":0},"nomad_constraints_json":{"type":"string"},"nomad_update_strategy_json":{"type":"string"},"nomad_ulimits_json":{"type":"string","description":"Docker task ulimits as a JSON object of rlimit name to \"soft:hard\" (e.g. {\"nofile\":\"65536:65536\"})."},"nomad_kill_timeout_seconds":{"type":"integer","minimum":1,"maximum":30,"description":"Seconds the task gets after SIGTERM before SIGKILL. Omit to leave Nomad's 5s default."},"nomad_shutdown_delay_seconds":{"type":"integer","minimum":0,"maximum":120,"description":"Seconds Nomad waits between deregistering the group's services and sending SIGTERM. Omit to leave Nomad's 0s default."},"source_path":{"type":"string"},"build_command":{"type":"string"},"release_command":{"type":"string"},"prestart_command":{"type":"string"},"start_command":{"type":"string"},"healthcheck_path":{"type":"string"},"schedule":{"type":"string"},"internal_port":{"type":"integer","minimum":1,"maximum":65535},"desired_instances":{"type":"integer","minimum":0},"publicly_accessible":{"type":"boolean"},"auto_deploy":{"type":"boolean"},"deploy_paths":{"type":"array","items":{"type":"string"}}}},"AppDataResource":{"type":"object","required":["id","hosted_app_id","app_environment_id","slug","name","kind","engine","version","plan","region","status","storage_gb","storage_label","high_availability","provider_metadata","failure_message","created_at","updated_at"],"properties":{"id":{"type":"string"},"hosted_app_id":{"type":"string"},"app_environment_id":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string","enum":["database","cache","queue","search","vector"]},"engine":{"type":"string","enum":["postgres","mysql","valkey"]},"version":{"type":"string","nullable":true},"plan":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"status":{"type":"string","enum":["provisioning","available","updating","failed","archived"]},"storage_gb":{"type":"integer","minimum":0,"nullable":true},"storage_label":{"type":"string","nullable":true},"high_availability":{"type":"boolean"},"provider_metadata":{"type":"object","additionalProperties":true},"failure_message":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"AppDataResourceCreatePayload":{"type":"object","required":["slug","name","kind","engine"],"properties":{"app_environment_id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string","enum":["database","cache","queue","search","vector"]},"engine":{"type":"string","enum":["postgres","mysql","valkey"]},"version":{"type":"string"},"plan":{"type":"string"},"region":{"type":"string"},"storage_gb":{"type":"integer","minimum":0},"high_availability":{"type":"boolean"}}},"AppDataResourceRestorePayload":{"type":"object","properties":{"app_environment_id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"branch_name":{"type":"string"},"backup_id":{"type":"string"},"restore_point":{"type":"string"},"plan":{"type":"string"},"region":{"type":"string"},"storage_gb":{"type":"integer","minimum":0},"high_availability":{"type":"boolean"}}},"AppStorageResource":{"type":"object","required":["id","hosted_app_id","app_environment_id","location_id","location_code","slug","name","kind","provider","region","access_mode","mount_path","capacity_gb","capacity_label","status","external_volume_id","attachment","ephemeral","provider_error","created_at","updated_at"],"properties":{"id":{"type":"string"},"hosted_app_id":{"type":"string"},"app_environment_id":{"type":"string","nullable":true},"location_id":{"type":"string","nullable":true,"description":"Volume datacenter pin (volume kind only)"},"location_code":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string","enum":["bucket","volume"]},"provider":{"type":"string","enum":["s3","tigris","nomad_csi","local_nvme","local_nvme_authority"],"description":"Storage backend. `local_nvme` is a directory on the node's own NVMe, created as a Nomad dynamic host volume — fast, node-local and EPHEMERAL: the platform may delete it at any time and it does not survive the loss of its node. Use it as a cache, never as a system of record. `local_nvme_authority` is a single-node, single-writer authority volume that refuses destructive repair. Node loss requires restoration from remote replication into a new volume."},"region":{"type":"string","nullable":true},"access_mode":{"type":"string","enum":["private","public","internal"],"description":"Object-store semantics only; ignored for volume resources"},"mount_path":{"type":"string","nullable":true},"capacity_gb":{"type":"integer","minimum":0,"nullable":true},"capacity_label":{"type":"string","nullable":true},"status":{"type":"string","enum":["provisioning","available","updating","failed","archived"]},"external_volume_id":{"type":"string","nullable":true,"description":"Nomad/CSI volume id assigned at provisioning"},"attachment":{"type":"object","nullable":true,"description":"Attachment readback: CSI publish state for nomad_csi, or the nodes carrying the directory for local_nvme. Nil until provisioned","properties":{"state":{"type":"string","enum":["attached","detached"]},"node_ids":{"type":"array","items":{"type":"string"}},"alloc_ids":{"type":"array","items":{"type":"string"}}}},"ephemeral":{"type":"boolean","description":"True when the contents may be deleted at any time and do not survive the loss of the underlying node. Ephemeral storage is a cache and must never hold a system of record."},"provider_error":{"type":"string","nullable":true,"description":"Last provisioning/teardown error from the storage provider"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"AppStorageResourceCreatePayload":{"type":"object","required":["slug","name","kind","provider","access_mode","status"],"properties":{"app_environment_id":{"type":"string"},"location_id":{"type":"string","description":"Required for volume kind. nomad_csi needs a CSI-plugin-enabled location; local_nvme works in any location and pins the volume to that datacenter"},"slug":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string","enum":["bucket","volume"]},"provider":{"type":"string","enum":["s3","tigris","nomad_csi","local_nvme","local_nvme_authority"],"description":"Storage backend. `local_nvme` volumes are node-local NVMe caches and are EPHEMERAL by contract — deletable at any time, gone with their node, and safe to lose. They ignore capacity_gb (it is advisory) and are not resizable. `local_nvme_authority` provisions one pinned single-writer directory and refuses destructive repair or empty replacement after node loss. Remote replication and fenced restoration are required for repository authority durability."},"region":{"type":"string"},"access_mode":{"type":"string","enum":["private","public","internal"]},"mount_path":{"type":"string"},"capacity_gb":{"type":"integer","minimum":0,"description":"Enforced for nomad_csi (minimum 10 GB). Advisory only for local_nvme, which claims no reservation"},"status":{"type":"string","enum":["provisioning","available","updating","failed","archived"]}}},"DeploymentServiceLogAllocation":{"type":"object","required":["allocation_id","app_service_id","service_name","app_environment_id","environment_name","app_release_id","release_version","task","status","details","unreachable_reason"],"properties":{"allocation_id":{"type":"string"},"app_service_id":{"type":"string","nullable":true},"service_name":{"type":"string"},"app_environment_id":{"type":"string","nullable":true},"environment_name":{"type":"string"},"app_release_id":{"type":"string","nullable":true},"release_version":{"type":"string","nullable":true},"task":{"type":"string","nullable":true},"status":{"type":"string"},"details":{"oneOf":[{"$ref":"#/components/schemas/NomadAllocationDetails"},{"type":"null"}]},"unreachable_reason":{"type":"string","nullable":true}}},"DeploymentServiceLogLine":{"type":"object","required":["id","index","allocation_id","allocation_label","service_name","task","stream","text"],"properties":{"id":{"type":"string"},"index":{"type":"integer","minimum":1},"allocation_id":{"type":"string"},"allocation_label":{"type":"string"},"service_name":{"type":"string"},"task":{"type":"string"},"stream":{"type":"string","enum":["stdout","stderr"]},"text":{"type":"string"}}},"NomadTaskEvent":{"type":"object","required":["type","display_message","message","time","fails_task","restart_reason","exit_code"],"properties":{"type":{"type":"string","nullable":true},"display_message":{"type":"string","nullable":true},"message":{"type":"string","nullable":true},"time":{"type":"string","nullable":true},"fails_task":{"type":"boolean","nullable":true},"restart_reason":{"type":"string","nullable":true},"exit_code":{"type":"integer","nullable":true}}},"NomadTaskState":{"type":"object","required":["name","state","failed","started_at","finished_at","last_restart","restarts","events"],"properties":{"name":{"type":"string"},"state":{"type":"string","nullable":true},"failed":{"type":"boolean","nullable":true},"started_at":{"type":"string","nullable":true},"finished_at":{"type":"string","nullable":true},"last_restart":{"type":"string","nullable":true},"restarts":{"type":"integer","minimum":0,"nullable":true},"events":{"type":"array","items":{"$ref":"#/components/schemas/NomadTaskEvent"}}}},"NomadAllocationDetails":{"type":"object","required":["allocation_id","name","namespace","job_id","task_group","node_id","node_name","datacenter","client_status","desired_status","desired_description","create_time","modify_time","task_states","resources","fetched_at"],"properties":{"allocation_id":{"type":"string"},"name":{"type":"string","nullable":true},"namespace":{"type":"string"},"job_id":{"type":"string","nullable":true},"task_group":{"type":"string","nullable":true},"node_id":{"type":"string","nullable":true},"node_name":{"type":"string","nullable":true},"datacenter":{"type":"string","nullable":true},"client_status":{"type":"string","nullable":true},"desired_status":{"type":"string","nullable":true},"desired_description":{"type":"string","nullable":true},"create_time":{"type":"string","nullable":true},"modify_time":{"type":"string","nullable":true},"task_states":{"type":"array","items":{"$ref":"#/components/schemas/NomadTaskState"}},"verify_runner_images":{"type":"array","description":"Public Verify image pins from tasks in this allocation's attached job group, not current app settings. Empty when attached job metadata is unavailable. Other environment values are never returned; malformed pins are named in invalid_keys without their values. References and fingerprints are reported independently so callers can detect mismatches.","items":{"type":"object","required":["name","values","invalid_keys"],"properties":{"name":{"type":"string"},"values":{"type":"object","additionalProperties":false,"required":["VEX_VERIFY_RUNNER_IMAGE","VEX_VERIFY_RUNNER_IMAGE_DIGEST","VEX_VERIFY_BROWSER_SESSION_IMAGE"],"properties":{"VEX_VERIFY_RUNNER_IMAGE":{"type":"string","nullable":true},"VEX_VERIFY_RUNNER_IMAGE_DIGEST":{"type":"string","nullable":true},"VEX_VERIFY_BROWSER_SESSION_IMAGE":{"type":"string","nullable":true}}},"invalid_keys":{"type":"array","items":{"type":"string","enum":["VEX_VERIFY_RUNNER_IMAGE","VEX_VERIFY_RUNNER_IMAGE_DIGEST","VEX_VERIFY_BROWSER_SESSION_IMAGE"]}}}}},"resources":{"type":"object","additionalProperties":true},"fetched_at":{"type":"string","format":"date-time"}}},"NomadAllocationLogs":{"type":"object","required":["allocation_id","task","type","namespace","origin","offset","logs","fetched_at"],"properties":{"allocation_id":{"type":"string"},"service":{"type":"string"},"environment":{"type":"string"},"location":{"type":"string","nullable":true},"task":{"type":"string"},"type":{"type":"string","enum":["stdout","stderr"]},"namespace":{"type":"string"},"origin":{"type":"string","enum":["start","end"]},"offset":{"type":"integer","minimum":0,"maximum":262144},"logs":{"type":"string"},"fetched_at":{"type":"string","format":"date-time"}}},"DeviceInvocationChallengeInput":{"type":"object","additionalProperties":false,"required":["invocation_id","request_hash"],"properties":{"invocation_id":{"type":"string","minLength":1,"maxLength":200},"request_hash":{"type":"string","pattern":"^[0-9a-f]{64}$"}}},"DeviceInvocationChallengeResponse":{"type":"object","additionalProperties":false,"required":["challenge"],"properties":{"challenge":{"type":"string","minLength":1,"maxLength":8192}}},"DeviceExecutionLeaseInput":{"type":"object","additionalProperties":false,"required":["challenge","signature"],"properties":{"challenge":{"type":"string","minLength":1,"maxLength":8192},"signature":{"type":"string","pattern":"^[A-Za-z0-9_-]{86}$"}}},"DeviceExecutionLease":{"type":"object","additionalProperties":false,"required":["lease_id","organization_id","device_id","native_device_id","environment","channel","invocation_id","request_hash","native_pairing_generation","command","capability","native_agent_id","native_instance_id","input_run_id","conversation_id","agent_id","principal_id","grant_id","issued_at","expires_at","pairing_generation","grant_revision","agent_name","principal_name","version","local_approval_required"],"properties":{"lease_id":{"type":"string"},"organization_id":{"type":"string"},"device_id":{"type":"string"},"native_device_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"environment":{"type":"string"},"channel":{"type":"string","enum":["dev","alpha","release"]},"invocation_id":{"type":"string"},"request_hash":{"type":"string","pattern":"^[0-9a-f]{64}$"},"native_pairing_generation":{"type":"string"},"command":{"type":"string"},"capability":{"type":"string","enum":["browser","computer","files","harnesses","processes"]},"native_agent_id":{"type":"string"},"native_instance_id":{"type":"string"},"input_run_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"conversation_id":{"type":"string"},"agent_id":{"type":"string"},"principal_id":{"type":"string"},"grant_id":{"type":"string"},"issued_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","format":"date-time"},"pairing_generation":{"type":"integer","minimum":1,"maximum":9007199254740991},"grant_revision":{"type":"integer","minimum":1,"maximum":9007199254740991},"agent_name":{"type":["string","null"]},"principal_name":{"type":["string","null"]},"version":{"type":"integer","const":1},"local_approval_required":{"type":"boolean","const":true}}},"DeviceExecutionLeaseResponse":{"type":"object","additionalProperties":false,"required":["lease"],"properties":{"lease":{"$ref":"#/components/schemas/DeviceExecutionLease"}}},"DeviceWorkerControlLease":{"type":"object","additionalProperties":false,"required":["version","lease_id","organization_id","device_id","native_device_id","pairing_generation","environment","channel","invocation_id","request_hash","native_pairing_generation","command","issued_at","expires_at","kind","control_purpose","local_machine_required"],"properties":{"version":{"type":"integer","const":1},"lease_id":{"type":"string"},"organization_id":{"type":"string"},"device_id":{"type":"string"},"native_device_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"pairing_generation":{"type":"integer","minimum":1,"maximum":9007199254740991},"environment":{"type":"string"},"channel":{"type":"string","enum":["dev","alpha","release"]},"invocation_id":{"type":"string"},"request_hash":{"type":"string","pattern":"^[0-9a-f]{64}$"},"native_pairing_generation":{"type":"string"},"command":{"type":"string","enum":["worker.bundle.install.v1","worker.workspace.prepare.v1","worker.workspace.validate.v1","worker.workspace.drain.v1","worker.cancel.v1","worker.environment.stop.v1","worker.processes.v1"]},"issued_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","format":"date-time"},"kind":{"type":"string","enum":["worker_control"]},"control_purpose":{"type":"string","enum":["runtime-installation","workspace-preparation","cleanup","runtime-observation"]},"local_machine_required":{"type":"boolean","enum":[true]}}},"DeviceWorkerControlLeaseResponse":{"type":"object","additionalProperties":false,"required":["lease"],"properties":{"lease":{"$ref":"#/components/schemas/DeviceWorkerControlLease"}}},"DeviceAgentConnectionBinding":{"type":"object","additionalProperties":false,"required":["organizationId","agentId","nativeAgentId","namespaceId","enterpriseAgentId","revisionId","generation"],"properties":{"organizationId":{"type":"string"},"agentId":{"type":"string"},"nativeAgentId":{"type":"string"},"namespaceId":{"type":"string"},"enterpriseAgentId":{"type":"string"},"revisionId":{"type":"string"},"generation":{"type":"integer","minimum":1}}},"DeviceAgentNodePlan":{"type":"object","additionalProperties":false,"required":["version","organization_id","device_id","native_device_id","pairing_generation","environment","channel","connection","agent","websocket_url","bootstrap_token","expires_at","execution_available"],"properties":{"version":{"type":"integer","enum":[3]},"organization_id":{"type":"string"},"device_id":{"type":"string"},"native_device_id":{"type":"string","pattern":"^[a-f0-9]{64}$"},"pairing_generation":{"type":"integer","minimum":1},"environment":{"type":"string","minLength":1,"maxLength":200},"channel":{"type":"string","enum":["dev","alpha","release"]},"connection":{"type":"string","minLength":1,"maxLength":1800,"pattern":"^[A-Za-z0-9_-]+$"},"agent":{"$ref":"#/components/schemas/DeviceAgentConnectionBinding"},"websocket_url":{"type":"string","maxLength":2048},"bootstrap_token":{"type":"string","minLength":1,"maxLength":8192},"expires_at":{"type":"string","format":"date-time"},"execution_available":{"type":"boolean","enum":[false]}},"description":"Ephemeral bootstrap plan returned only to this physical pairing after native_plan key proof. It grants no execution. The host must connect and advertise its installed surface before native_surface can approve it automatically. Never persist or log bootstrap_token."},"DeviceAgentNodeSurface":{"type":"object","additionalProperties":false,"properties":{"version":{"type":"integer","enum":[3]},"organization_id":{"type":"string"},"device_id":{"type":"string"},"native_device_id":{"type":"string","pattern":"^[a-f0-9]{64}$"},"pairing_generation":{"type":"integer","minimum":1},"environment":{"type":"string","minLength":1,"maxLength":200},"channel":{"type":"string","enum":["dev","alpha","release"]},"connection":{"type":"string","minLength":1,"maxLength":1800,"pattern":"^[A-Za-z0-9_-]+$"},"agent":{"$ref":"#/components/schemas/DeviceAgentConnectionBinding"},"commands":{"type":"array","uniqueItems":true,"maxItems":7,"items":{"type":"string","enum":["system.run","system.run.prepare","system.which","embedded.composal.codex.run.v1","embedded.composal.roder.run.v1","embedded.composal.claude.run.v1","embedded.composal.computer.run.v1"]}}},"required":["version","organization_id","device_id","native_device_id","pairing_generation","environment","channel","connection","agent","commands"],"description":"Current native capability surface approved after the selected node has advertised its installed commands. This is structural approval only; execution still needs current native and Rails leases."},"DeviceGrant":{"type":"object","additionalProperties":false,"required":["id","agent_id","principal_id","capabilities","revision","revoked_at","created_at","updated_at","agent_name","principal_name","can_edit","can_revoke"],"properties":{"id":{"type":"string"},"agent_id":{"type":"string"},"principal_id":{"type":"string"},"capabilities":{"type":"array","minItems":1,"maxItems":7,"uniqueItems":true,"items":{"type":"string","enum":["browser","claude_code","coding_agents","computer","files","harnesses","processes"]}},"revision":{"type":"integer","minimum":1},"revoked_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"agent_name":{"type":["string","null"]},"principal_name":{"type":["string","null"]},"can_edit":{"type":"boolean"},"can_revoke":{"type":"boolean"}}},"DeviceGrantInput":{"type":"object","additionalProperties":false,"required":["agent_id","principal_id","capabilities"],"properties":{"agent_id":{"type":"string"},"principal_id":{"type":"string"},"capabilities":{"type":"array","minItems":1,"maxItems":7,"uniqueItems":true,"items":{"type":"string","enum":["browser","claude_code","coding_agents","computer","files","harnesses","processes"]}}}},"DeviceGrantRevisionInput":{"type":"object","additionalProperties":false,"required":["revision","capabilities"],"properties":{"revision":{"type":"integer","minimum":1,"maximum":9223372036854775806},"capabilities":{"type":"array","minItems":1,"maxItems":7,"uniqueItems":true,"items":{"type":"string","enum":["browser","claude_code","coding_agents","computer","files","harnesses","processes"]}}}},"DeviceGrantResponse":{"type":"object","additionalProperties":false,"required":["grant","execution_available"],"properties":{"grant":{"$ref":"#/components/schemas/DeviceGrant"},"execution_available":{"type":"boolean","const":false}}},"DeviceGrantList":{"type":"object","additionalProperties":false,"required":["grants","next_cursor","execution_available","agent_choices","active_grants","all_agents_access"],"properties":{"grants":{"type":"array","items":{"$ref":"#/components/schemas/DeviceGrant"}},"next_cursor":{"type":["string","null"]},"execution_available":{"type":"boolean","const":false},"agent_choices":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","name","principal_id","grant_to_revise"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"principal_id":{"type":"string"},"grant_to_revise":{"anyOf":[{"$ref":"#/components/schemas/DeviceGrant"},{"type":"null"}]}}},"description":"Eligible picker choices, with current owner grant targets, on the first page only. Cursor pages return an empty array; retain first-page choices while combining grant pages."},"active_grants":{"type":"array","items":{"$ref":"#/components/schemas/DeviceGrant"}},"all_agents_access":{"type":"boolean","description":"Whether every agent the owner can use may use this computer for the owner's messages, including agents added later."}}},"DeviceAllAgentsAccessInput":{"type":"object","additionalProperties":false,"required":["enabled"],"properties":{"enabled":{"type":"boolean"}}},"DeviceAllAgentsAccessResponse":{"type":"object","additionalProperties":false,"required":["all_agents_access","execution_available"],"properties":{"all_agents_access":{"type":"boolean"},"execution_available":{"type":"boolean","const":false}}},"DeviceBrowserCommand":{"type":"string","enum":["open","tabs","navigate","back","reload","screenshot","close","open_external","share_tab","read","click","type","press","scroll"],"description":"The in-app browser takes open through open_external; the person's own browser (arguments.browser user) takes open, tabs, share_tab, navigate, back, reload, screenshot, read, click, type, press, scroll and close."},"DeviceBrowserArguments":{"type":"object","additionalProperties":false,"properties":{"url":{"type":"string","maxLength":2048,"description":"An http or https address, including localhost and 127.0.0.1."},"tab_id":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"},"new_tab":{"type":"boolean"},"browser":{"type":"string","enum":["user"],"description":"The person's own Chrome-family browser instead of Composal Desktop's in-app browser."},"match":{"type":"string","maxLength":200,"description":"Part of the address or title of a tab to ask the person to share."},"ref":{"type":"string","pattern":"^e[0-9]{1,5}$","description":"An element reference from read."},"text":{"type":"string","minLength":1,"maxLength":4000},"key":{"type":"string","enum":["Enter","Tab","Escape","Backspace","Delete","Space","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","PageUp","PageDown","Home","End"]},"direction":{"type":"string","enum":["up","down"]}}},"DeviceBrowserOperationQueue":{"type":"object","additionalProperties":false,"required":["operations"],"properties":{"operations":{"type":"array","maxItems":10,"items":{"type":"object","additionalProperties":false,"required":["id","command","created_at"],"properties":{"id":{"type":"string"},"command":{"$ref":"#/components/schemas/DeviceBrowserCommand"},"created_at":{"type":"string","format":"date-time"}}}}}},"DeviceBrowserOperationClaim":{"type":"object","additionalProperties":false,"required":["id","claim_token","command","arguments","expires_at","agent","conversation_id"],"properties":{"id":{"type":"string"},"claim_token":{"type":"string"},"command":{"$ref":"#/components/schemas/DeviceBrowserCommand"},"arguments":{"$ref":"#/components/schemas/DeviceBrowserArguments"},"expires_at":{"type":"string","format":"date-time"},"agent":{"type":"object","additionalProperties":false,"required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}},"conversation_id":{"type":"string"},"user_browser_access":{"type":"string","enum":["agent_tabs","all_tabs"],"description":"Present for the person's own browser. agent_tabs limits the agent to tabs it opened or the person shared."}}},"DeviceBrowserOperationFinishInput":{"type":"object","additionalProperties":false,"required":["claim_token","response"],"properties":{"claim_token":{"type":"string"},"response":{"oneOf":[{"type":"object","additionalProperties":false,"required":["ok","result"],"properties":{"ok":{"type":"boolean","const":true},"result":{"type":"object"}}},{"type":"object","additionalProperties":false,"required":["ok","code","error"],"properties":{"ok":{"type":"boolean","const":false},"code":{"type":"string","pattern":"^[a-z_]{1,40}$"},"error":{"type":"string","minLength":1,"maxLength":500}}}]}}},"ClawderDeviceBrowserOperationInput":{"type":"object","additionalProperties":false,"required":["native_agent_id","input_run_id","key","command","arguments"],"properties":{"native_agent_id":{"type":"string","minLength":1,"maxLength":512},"input_run_id":{"type":"string","minLength":1,"maxLength":512},"key":{"type":"string","minLength":1,"maxLength":512},"command":{"$ref":"#/components/schemas/DeviceBrowserCommand"},"arguments":{"$ref":"#/components/schemas/DeviceBrowserArguments"},"device_id":{"type":"string","minLength":1,"maxLength":200}}},"ClawderDeviceBrowserOperationResponse":{"type":"object","additionalProperties":false,"required":["operation"],"properties":{"operation":{"type":"object","additionalProperties":false,"required":["id","command","state","result"],"properties":{"id":{"type":"string"},"command":{"$ref":"#/components/schemas/DeviceBrowserCommand"},"state":{"type":"string","enum":["queued","claimed","completed","failed","expired","uncertain"]},"result":{"type":["object","null"],"description":"The desktop's answer once completed or failed."}}}}},"ClawderDeviceBrowserOperationError":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"},"code":{"type":"string","enum":["desktop_not_connected","browser_not_allowed","user_browser_off","unavailable","conflict"]}}},"DeviceFolderListingInput":{"type":"object","additionalProperties":false,"required":["key","path"],"properties":{"key":{"type":"string","minLength":1,"maxLength":512,"description":"Stable idempotency key for this listing."},"path":{"type":"string","minLength":1,"maxLength":4096,"description":"A folder starting with ~ or /."}}},"DeviceFolderListing":{"type":"object","additionalProperties":false,"required":["id","state"],"properties":{"id":{"type":"string"},"state":{"type":"string","enum":["queued","claimed","completed","failed","expired","uncertain"]},"path":{"type":"string","description":"The resolved folder."},"parent":{"type":["string","null"]},"folders":{"type":"array","maxItems":500,"items":{"type":"string"}},"truncated":{"type":"boolean"},"code":{"type":"string"},"error":{"type":"string"}}},"DeviceFolderListingResponse":{"type":"object","additionalProperties":false,"required":["listing"],"properties":{"listing":{"$ref":"#/components/schemas/DeviceFolderListing"}}},"DeviceRegistration":{"type":"object","additionalProperties":false,"required":["id","name","environment","native_device_id","platform","architecture","channel","pairing_generation","paired_at","created_at","revoked_at","connection_status","connection_checked_at","project_visibility","user_browser_access"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"environment":{"type":"string"},"native_device_id":{"type":"string"},"platform":{"type":"string","enum":["darwin","win32","linux"]},"architecture":{"type":"string","enum":["arm64","x64"]},"channel":{"type":"string","enum":["dev","alpha","release"]},"pairing_generation":{"type":"integer","minimum":1},"paired_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"revoked_at":{"type":["string","null"],"format":"date-time"},"connection_status":{"type":"string","enum":["registered","connected","offline","unknown","revoked"],"description":"Display-only native presence. Does not grant execution or placement authority."},"connection_checked_at":{"type":["string","null"],"format":"date-time","description":"When this native presence observation was obtained; null when unobserved or unavailable."},"coding_connection":{"type":["object","null"],"description":"Independent organization coding-control service state for the current device owner. Null when unavailable or using the legacy transport. A retry request does not imply readiness.","properties":{"status":{"type":"string","enum":["provisioning","ready","failed"]},"can_retry":{"type":"boolean"}},"required":["status","can_retry"],"additionalProperties":false},"project_visibility":{"$ref":"#/components/schemas/DeviceProjectVisibility"},"user_browser_access":{"type":"string","enum":["off","agent_tabs","all_tabs"],"description":"Whether agents may use the owner's own Chrome-family browser here: off, only tabs agents open or the owner shares, or every tab."}}},"DeviceRegistrationResponse":{"type":"object","additionalProperties":false,"required":["device","execution_available"],"properties":{"device":{"$ref":"#/components/schemas/DeviceRegistration"},"execution_available":{"type":"boolean","const":false}}},"DeviceUserBrowserAccessInput":{"type":"object","additionalProperties":false,"required":["access"],"properties":{"access":{"type":"string","enum":["off","agent_tabs","all_tabs"],"description":"Whether agents may use the owner's own Chrome-family browser here: off, only tabs agents open or the owner shares, or every tab."}}},"DeviceRegistrationList":{"type":"object","additionalProperties":false,"required":["devices","next_cursor","execution_available"],"properties":{"devices":{"type":"array","items":{"$ref":"#/components/schemas/DeviceRegistration"}},"next_cursor":{"type":["string","null"]},"execution_available":{"type":"boolean","const":false}}},"DevicePairingInput":{"type":"object","additionalProperties":false,"required":["name","platform","architecture","channel","public_key"],"properties":{"name":{"type":"string","minLength":1,"maxLength":100},"platform":{"type":"string","enum":["darwin","win32","linux"]},"architecture":{"type":"string","enum":["arm64","x64"]},"channel":{"type":"string","enum":["dev","alpha","release"]},"public_key":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"}}},"DevicePairingProof":{"type":"object","additionalProperties":false,"required":["token","signature"],"properties":{"token":{"type":"string","maxLength":512},"signature":{"type":"string","pattern":"^[A-Za-z0-9_-]{86}$"}}},"DevicePairingResponse":{"type":"object","additionalProperties":false,"required":["pairing","execution_available"],"properties":{"pairing":{"type":"object","additionalProperties":false,"required":["id","token","payload","expires_at"],"properties":{"id":{"type":"string"},"token":{"type":"string"},"payload":{"type":"string"},"expires_at":{"type":"string","format":"date-time"}}},"execution_available":{"type":"boolean","const":false}}},"DeviceEnrollmentError":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}},"field_errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}},"DeviceRenameInput":{"type":"object","additionalProperties":false,"required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":100}}},"DeviceProjectVisibility":{"type":"object","additionalProperties":false,"required":["mode","folders","version"],"properties":{"mode":{"type":"string","enum":["all","selected"]},"folders":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":4096}},"version":{"type":"integer","minimum":1}},"description":"Folder discovery and new-thread selection. Does not restrict existing threads or OS-account command access."},"DockerBuilder":{"type":"object","additionalProperties":false,"properties":{"backend":{"type":"string","enum":["classic","gen2"]},"gateway_url":{"type":"string","nullable":true,"description":"Organization-addressed public WSS gateway; null until configured"},"id":{"type":"string"},"organization_id":{"type":"string"},"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z][a-z0-9]*(-[a-z0-9]+)*$"},"status":{"type":"string","enum":["sleeping","starting","ready","stopping","failed"]},"generation":{"type":"integer","minimum":0},"startup_attempt":{"type":"integer","minimum":0},"startup_stage":{"type":"string","nullable":true},"startup_failure":{"type":"string","nullable":true,"description":"Safe failure reason for the most recent startup attempt"},"last_activity_at":{"type":"string","format":"date-time","nullable":true},"ready_at":{"type":"string","format":"date-time","nullable":true},"slept_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}},"required":["backend","id","organization_id","slug","status","generation","startup_attempt","startup_stage","startup_failure","last_activity_at","ready_at","slept_at","created_at","updated_at"]},"DockerBuilderResponse":{"type":"object","additionalProperties":false,"properties":{"docker_builder":{"$ref":"#/components/schemas/DockerBuilder"}},"required":["docker_builder"]},"DockerBuildersResponse":{"type":"object","additionalProperties":false,"properties":{"docker_builders":{"type":"array","items":{"$ref":"#/components/schemas/DockerBuilder"}}},"required":["docker_builders"]},"DockerBuilderSettings":{"type":"object","additionalProperties":false,"properties":{"organization_id":{"type":"string"},"max_concurrency":{"type":"integer","minimum":1,"maximum":128,"default":1},"idle_timeout_seconds":{"type":"integer","minimum":60,"maximum":86400,"default":600},"runtime_timeout_seconds":{"type":"integer","minimum":300,"maximum":86400,"default":3600},"region":{"type":"string","enum":["us-east","us-west","eu-west","ap-southeast"],"default":"us-east"}},"required":["organization_id","max_concurrency","idle_timeout_seconds","runtime_timeout_seconds","region"]},"DockerBuilderSettingsResponse":{"type":"object","additionalProperties":false,"properties":{"docker_builder_settings":{"$ref":"#/components/schemas/DockerBuilderSettings"}},"required":["docker_builder_settings"]},"DockerBuilderSettingsUpdate":{"type":"object","additionalProperties":false,"properties":{"max_concurrency":{"type":"integer","minimum":1,"maximum":128,"default":1},"idle_timeout_seconds":{"type":"integer","minimum":60,"maximum":86400,"default":600},"runtime_timeout_seconds":{"type":"integer","minimum":300,"maximum":86400,"default":3600},"region":{"type":"string","enum":["us-east","us-west","eu-west","ap-southeast"],"default":"us-east"}}},"DockerBuilderCreate":{"type":"object","additionalProperties":false,"properties":{"backend":{"type":"string","enum":["classic","gen2"],"default":"classic"},"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z][a-z0-9]*(-[a-z0-9]+)*$","default":"main"}}},"DockerBuilderRename":{"type":"object","additionalProperties":false,"properties":{"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z][a-z0-9]*(-[a-z0-9]+)*$"}},"required":["slug"]},"DockerBuilderSession":{"type":"object","additionalProperties":false,"properties":{"gateway_url":{"type":"string","nullable":true,"description":"Organization-addressed public WSS gateway; null until configured"},"id":{"type":"string"},"organization_id":{"type":"string"},"docker_builder_id":{"type":"string"},"user_id":{"type":"string"},"generation":{"type":"integer","minimum":0},"expires_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"revoked_at":{"type":"string","format":"date-time","nullable":true}},"required":["id","organization_id","docker_builder_id","user_id","generation","expires_at","created_at","revoked_at"]},"DockerBuilderSessionResponse":{"type":"object","additionalProperties":false,"properties":{"docker_builder_session":{"$ref":"#/components/schemas/DockerBuilderSession"}},"required":["docker_builder_session"]},"DockerBuilderSessionIssued":{"type":"object","additionalProperties":false,"properties":{"docker_builder_session":{"$ref":"#/components/schemas/DockerBuilderSession"},"token":{"type":"string","description":"Opaque secret returned once; never persist on builder cache or print to logs"}},"required":["docker_builder_session","token"]},"DockerBuilderGatewayConnection":{"type":"object","additionalProperties":false,"properties":{"organization_id":{"type":"string"},"backend":{"type":"string","enum":["classic","gen2"]},"actor_id":{"type":"string"},"active_actor_run":{"type":"boolean"},"session_id":{"type":"string"},"builder_id":{"type":"string"},"generation":{"type":"integer"},"sandbox_id":{"type":"string"},"expires_at":{"type":"string","format":"date-time"},"run_id":{"type":"string"},"status":{"type":"string","enum":["running","succeeded","failed","canceled"]}},"required":["backend","organization_id","session_id","builder_id","generation","sandbox_id","expires_at"]},"DockerBuilderGatewayCompletion":{"type":"object","additionalProperties":false,"properties":{"run_id":{"type":"string"},"generation":{"type":"integer"},"status":{"type":"string","enum":["succeeded","failed","canceled"]}},"required":["run_id","generation","status"]},"GitImportStatus":{"type":"object","required":["id","git_url","git_status","native_status","organization","slug","root_path","source_branch","target_branch"],"properties":{"id":{"type":"string"},"git_url":{"type":"string"},"organization":{"type":"string"},"slug":{"type":"string"},"root_path":{"type":"string"},"source_branch":{"type":"string"},"target_branch":{"type":"string"},"git_status":{"type":"string","enum":["receiving","durable"]},"native_status":{"type":"string","enum":["pending","running","ready","failed","canceled"]},"error":{"type":"string","nullable":true},"repository_id":{"type":"string","nullable":true}}},"GitImportTransfer":{"allOf":[{"$ref":"#/components/schemas/GitImportStatus"},{"type":"object","required":["transfer_token"],"properties":{"transfer_token":{"type":"string","readOnly":true,"description":"Short-lived credential scoped to this isolated Git source; never persist in logs."}}}]},"GithubAppInstallation":{"type":"object","required":["id","organization_id","installation_id","account_login","account_id","account_avatar_url","manage_access_url","status","permissions","permission_entries","installed_at","installed_at_label","suspended_at","suspended_at_label","created_at","created_at_label","updated_at","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"installation_id":{"type":"string"},"account_login":{"type":"string"},"account_id":{"type":"string","nullable":true},"account_avatar_url":{"type":"string","format":"uri","nullable":true},"manage_access_url":{"type":"string","format":"uri"},"status":{"type":"string","enum":["active","suspended"]},"permissions":{"type":"object","additionalProperties":true},"permission_entries":{"description":"GitHub's permission hash as a display-ready list, sorted by name.","type":"array","items":{"type":"object","required":["key","name","access"],"properties":{"key":{"type":"string"},"name":{"type":"string"},"access":{"type":"string"}}}},"installed_at":{"type":"string","format":"date-time","nullable":true},"installed_at_label":{"type":"string","nullable":true},"suspended_at":{"type":"string","format":"date-time","nullable":true},"suspended_at_label":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at":{"type":"string","format":"date-time"},"updated_at_label":{"type":"string","nullable":true}}},"GithubCiRepository":{"type":"object","required":["id","organization_id","github_app_installation_id","ci_runner_pool_id","github_repository_id","repository_owner","repository_name","repository_full_name","default_branch","status","adoption_mode","check_name_prefix","permission_status","last_webhook_delivery_id","last_webhook_event","last_webhook_action","last_webhook_at","last_webhook_at_label","last_head_sha","last_ref","last_pull_request_number","webhook_delivery_count","last_compatibility_status","last_error_message","metadata","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"github_app_installation_id":{"type":"string"},"ci_runner_pool_id":{"type":"string","nullable":true},"github_repository_id":{"type":"string"},"repository_owner":{"type":"string"},"repository_name":{"type":"string"},"repository_full_name":{"type":"string"},"default_branch":{"type":"string"},"status":{"type":"string","enum":["active","paused","archived"]},"adoption_mode":{"type":"string","enum":["shadow","reporting","required"]},"check_name_prefix":{"type":"string"},"permission_status":{"type":"string","enum":["unchecked","ok","missing"]},"last_webhook_delivery_id":{"type":"string","nullable":true},"last_webhook_event":{"type":"string","nullable":true},"last_webhook_action":{"type":"string","nullable":true},"last_webhook_at":{"type":"string","format":"date-time","nullable":true},"last_webhook_at_label":{"type":"string","nullable":true},"last_head_sha":{"type":"string","nullable":true},"last_ref":{"type":"string","nullable":true},"last_pull_request_number":{"type":"integer","nullable":true},"webhook_delivery_count":{"type":"integer"},"last_compatibility_status":{"type":"string","enum":["executable","warning","blocked","error"],"nullable":true},"last_error_message":{"type":"string","nullable":true},"metadata":{"type":"object","additionalProperties":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"GithubCiCompatibilityReport":{"type":"object","required":["id","organization_id","github_ci_repository_id","ci_pipeline_id","ci_pipeline_run_id","workflow_path","source_sha","source_blob_sha","parser_version","workflow_name","event_name","event_action","ref_name","head_sha","pull_request_number","status","execution_allowed","required_secrets","runner_labels","referenced_actions","supported_features","diagnostics","warnings","errors","metadata","analyzed_at","analyzed_at_label","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"github_ci_repository_id":{"type":"string"},"ci_pipeline_id":{"type":"string","nullable":true},"ci_pipeline_run_id":{"type":"string","nullable":true},"workflow_path":{"type":"string"},"source_sha":{"type":"string"},"source_blob_sha":{"type":"string","nullable":true},"parser_version":{"type":"string"},"workflow_name":{"type":"string","nullable":true},"event_name":{"type":"string"},"event_action":{"type":"string","nullable":true},"ref_name":{"type":"string","nullable":true},"head_sha":{"type":"string","nullable":true},"pull_request_number":{"type":"integer","nullable":true},"status":{"type":"string","enum":["executable","warning","blocked","error"]},"execution_allowed":{"type":"boolean"},"required_secrets":{"type":"array","items":{"type":"string"}},"runner_labels":{"type":"array","items":{"type":"string"}},"referenced_actions":{"type":"array","items":{"type":"string"}},"supported_features":{"type":"object","additionalProperties":true},"diagnostics":{"type":"array","items":{"type":"object","required":["severity","code","path","message","metadata"],"properties":{"severity":{"type":"string","enum":["error","warning"]},"code":{"type":"string"},"path":{"type":"string"},"message":{"type":"string"},"metadata":{"type":"object","additionalProperties":true}}}},"warnings":{"type":"array","items":{"type":"object","required":["severity","code","path","message","metadata"],"properties":{"severity":{"type":"string","enum":["error","warning"]},"code":{"type":"string"},"path":{"type":"string"},"message":{"type":"string"},"metadata":{"type":"object","additionalProperties":true}}}},"errors":{"type":"array","items":{"type":"object","required":["severity","code","path","message","metadata"],"properties":{"severity":{"type":"string","enum":["error","warning"]},"code":{"type":"string"},"path":{"type":"string"},"message":{"type":"string"},"metadata":{"type":"object","additionalProperties":true}}}},"metadata":{"type":"object","additionalProperties":true},"analyzed_at":{"type":"string","format":"date-time"},"analyzed_at_label":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"GithubIntegrationSummary":{"type":"object","required":["id","account_login","account_avatar_url","connection_status","connection_status_label","imported_repositories_count","imported_repositories_count_label","health"],"properties":{"id":{"type":"string"},"account_login":{"type":"string"},"account_avatar_url":{"type":"string","format":"uri","nullable":true},"connection_status":{"type":"string","enum":["connected","unavailable","needs_attention","checking","could_not_verify","not_verified"]},"connection_status_label":{"type":"string"},"imported_repositories_count":{"type":"integer","minimum":0},"imported_repositories_count_label":{"type":"string"},"health":{"$ref":"#/components/schemas/GithubConnectionHealth"}}},"GithubIntegrationDetail":{"allOf":[{"$ref":"#/components/schemas/GithubIntegrationSummary"},{"type":"object","required":["manage_access_url","permission_entries"],"properties":{"manage_access_url":{"type":"string","format":"uri"},"permission_entries":{"type":"array","items":{"type":"object","required":["key","name","access"],"properties":{"key":{"type":"string"},"name":{"type":"string"},"access":{"type":"string"}}}}}}]},"GithubIntegrationRepository":{"type":"object","required":["id","slug","name","github_repository","health"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"github_repository":{"type":"string"},"health":{"$ref":"#/components/schemas/GithubRepositoryAccessHealth"}}},"GithubConnectionHealth":{"type":"object","required":["status","label","configured_count","accessible_count","affected_count","checked_at","checking","reason","generation","completed_generation","guidance"],"properties":{"status":{"type":"string","enum":["connected","needs_attention","checking","could_not_verify","not_verified"]},"label":{"type":"string"},"configured_count":{"type":"integer"},"accessible_count":{"type":"integer"},"affected_count":{"type":"integer"},"checked_at":{"type":"string","nullable":true},"checking":{"type":"boolean"},"reason":{"type":"string","nullable":true},"guidance":{"type":"string"},"generation":{"type":"integer"},"completed_generation":{"type":"integer"}}},"GithubRepositoryAccessHealth":{"type":"object","required":["state","reason","label","checked_at","repository","installation_id"],"properties":{"state":{"type":"string","enum":["unknown","available","unavailable"]},"reason":{"type":"string","nullable":true},"label":{"type":"string"},"checked_at":{"type":"string","nullable":true},"repository":{"type":"string","nullable":true},"installation_id":{"type":"string","nullable":true}}},"OrganizationImportBranchPolicy":{"type":"object","required":["default_trunk_bookmark"],"properties":{"default_trunk_bookmark":{"type":"string"}}},"GithubOnboardingState":{"type":"object","required":["installations","accounts","batches","active_batch_id","capabilities"],"properties":{"installations":{"type":"array","items":{"type":"object","required":["id","organization_id","installation_id","account_login","account_id","account_avatar_url","manage_access_url","status","permissions","permission_entries","installed_at","suspended_at","created_at","updated_at","installed_at_label","suspended_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"installation_id":{"type":"string"},"account_login":{"type":"string"},"account_id":{"type":"string","nullable":true},"account_avatar_url":{"type":"string","format":"uri","nullable":true},"manage_access_url":{"type":"string","format":"uri"},"status":{"type":"string","enum":["active","suspended"]},"permissions":{"type":"object","additionalProperties":{"type":"string"}},"permission_entries":{"type":"array","items":{"type":"object","required":["key","name","access"],"properties":{"key":{"type":"string"},"name":{"type":"string"},"access":{"type":"string"}}}},"installed_at":{"type":"string","format":"date-time","nullable":true},"suspended_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"installed_at_label":{"type":"string","nullable":true},"suspended_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}}},"accounts":{"type":"array","items":{"type":"object","required":["github_app_installation_id","account_login","repositories"],"properties":{"github_app_installation_id":{"type":"string"},"account_login":{"type":"string"},"repositories":{"type":"array","items":{"type":"object","required":["owner","name","full_name","default_branch","visibility","private","empty","html_url","updated_at","already_imported"],"properties":{"owner":{"type":"string"},"name":{"type":"string"},"full_name":{"type":"string"},"default_branch":{"type":"string"},"visibility":{"type":"string"},"private":{"type":"boolean"},"empty":{"type":"boolean","nullable":true},"html_url":{"type":"string","format":"uri"},"updated_at":{"type":"string","nullable":true},"already_imported":{"type":"boolean"}}}}}}},"batches":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/GithubImportBatch"}},"active_batch_id":{"type":"string","nullable":true,"description":"The batch the wizard's import step should resume — the most recent batch still working, else the most recent overall."},"capabilities":{"type":"object","required":["can_manage_connections"],"properties":{"can_manage_connections":{"type":"boolean"}}}}},"GithubImportBatch":{"type":"object","required":["id","github_app_installation_id","account_login","status","complete","item_count","terminal_item_count","failed_item_count","imported_item_count","items","created_at","updated_at"],"properties":{"id":{"type":"string"},"github_app_installation_id":{"type":"string"},"account_login":{"type":"string"},"status":{"type":"string","enum":["running","completed"]},"complete":{"type":"boolean","description":"Whether every item has settled and the wizard should treat the import as finished."},"item_count":{"type":"integer"},"terminal_item_count":{"type":"integer"},"failed_item_count":{"type":"integer"},"imported_item_count":{"type":"integer"},"items":{"type":"array","items":{"type":"object","required":["id","repository_id","repository_owner","repository_name","repository_full_name","root_path","include_in_home","status","terminal","error_message","repository_slug","phase","can_retry","created_at","updated_at"],"properties":{"id":{"type":"string"},"repository_id":{"type":"string","nullable":true},"repository_owner":{"type":"string"},"repository_name":{"type":"string"},"repository_full_name":{"type":"string"},"root_path":{"type":"string"},"include_in_home":{"type":"boolean"},"status":{"type":"string","enum":["queued","running","succeeded","failed","already_imported","invalid"]},"terminal":{"type":"boolean","description":"Whether this item has settled (no further work expected without a retry)."},"error_message":{"type":"string","nullable":true},"repository_slug":{"type":"string","nullable":true},"phase":{"type":"string"},"can_retry":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"GithubReviewSummary":{"type":"object","properties":{"kind":{"type":"string","enum":["github_pr"]},"id":{"type":"string"},"number":{"type":"integer"},"title":{"type":"string"},"state":{"type":"string","enum":["open","closed","merged"]},"draft":{"type":"boolean"},"github_repository_id":{"type":"string"},"repository_full_name":{"type":"string"},"head_sha":{"type":"string","nullable":true},"base_branch":{"type":"string","nullable":true},"github_url":{"type":"string"},"internal_path":{"type":"string"},"submitted_at":{"type":"string"},"updated_at":{"type":"string"},"updated_at_label":{"type":"string"},"author":{"type":"object","properties":{"id":{"type":"string","nullable":true},"login":{"type":"string","nullable":true},"avatar_url":{"type":"string","nullable":true}},"required":["login"]},"labels":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"color":{"type":"string","nullable":true}},"required":["name","color"]}},"conversation_count":{"type":"integer"},"stack":{"type":"object","nullable":true,"properties":{"code":{"type":"string"},"name":{"type":"string"},"member_count":{"type":"integer"},"position":{"type":"integer"}},"required":["code","name","member_count","position"]},"head_branch":{"type":"string","nullable":true}},"required":["kind","id","number","title","state","draft","github_repository_id","repository_full_name","head_sha","base_branch","github_url","internal_path","submitted_at","updated_at","updated_at_label","author","labels","conversation_count","stack","head_branch"]},"GithubReviewEntry":{"type":"object","properties":{"id":{"type":"string"},"node_id":{"type":"string","nullable":true},"kind":{"type":"string"},"body":{"type":"string"},"title":{"type":"string"},"author":{"type":"object","properties":{"id":{"type":"string","nullable":true},"login":{"type":"string","nullable":true},"avatar_url":{"type":"string","nullable":true}},"required":["login"]},"created_at":{"type":"string","nullable":true},"updated_at":{"type":"string","nullable":true},"state":{"type":"string"},"path":{"type":"string"},"patch":{"type":"string"},"previous_path":{"type":"string"},"sha":{"type":"string"},"additions":{"type":"integer"},"deletions":{"type":"integer"},"partial":{"type":"boolean"},"resolved":{"type":"boolean"},"outdated":{"type":"boolean"},"line":{"type":"integer","nullable":true},"side":{"type":"string","nullable":true},"next_cursor":{"type":"string","nullable":true},"reactions":{"type":"array","items":{"type":"string"}},"children":{"type":"array","items":{"$ref":"#/components/schemas/GithubReviewEntry"}},"can_edit":{"type":"boolean"},"can_delete":{"type":"boolean"},"check_id":{"type":"string","nullable":true},"parent_id":{"type":"string","nullable":true},"start_line":{"type":"integer","nullable":true},"run_id":{"type":"string"},"job_id":{"type":"string"},"log":{"type":"string"},"can_rerun":{"type":"boolean"},"can_cancel":{"type":"boolean"}},"required":["id","kind"]},"GithubReviewSync":{"type":"object","properties":{"error":{"type":"string","nullable":true},"complete":{"type":"boolean"},"updated_at":{"type":"string","nullable":true},"team_reviews_complete":{"type":"boolean"}},"required":["error","complete","updated_at","team_reviews_complete"]},"GithubReviewPage":{"type":"object","properties":{"pull_request":{"allOf":[{"$ref":"#/components/schemas/GithubReviewSummary"},{"type":"object","properties":{"body":{"type":"string"},"reviewers":{"type":"array","items":{"type":"string"}},"assignees":{"type":"array","items":{"type":"string"}},"linked_change_path":{"type":"string","nullable":true}},"required":["body","reviewers","assignees","linked_change_path"]}]},"content":{"type":"object","properties":{"section":{"type":"string"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/GithubReviewEntry"}},"next_page":{"type":"integer","nullable":true},"next_cursor":{"type":"string","nullable":true},"partial":{"type":"boolean"},"thread_id":{"type":"string","nullable":true},"check_id":{"type":"string","nullable":true},"run_id":{"type":"string","nullable":true},"job_id":{"type":"string","nullable":true}},"required":["section","entries","next_page","next_cursor","partial"]},"capabilities":{"type":"object","properties":{"write":{"type":"boolean"},"identity":{"type":"string"}},"required":["write","identity"]},"fetched_at":{"type":"string"},"transcript_paths":{"type":"array","items":{"type":"object","required":["label","path"],"properties":{"label":{"type":"string"},"path":{"type":"string"}}}},"stack":{"$ref":"#/components/schemas/GithubReviewStack"},"magic_merge":{"$ref":"#/components/schemas/MagicMergeReviewSnapshot","nullable":true}},"required":["pull_request","content","capabilities","fetched_at","transcript_paths","stack","magic_merge"]},"GithubReviewMutation":{"type":"object","properties":{"operation_key":{"type":"string"},"action_name":{"type":"string","enum":["comment","inline","reply","review","edit_comment","delete_comment","edit_inline","delete_inline","resolve","unresolve","add_label","remove_label","rerun","cancel_run"]},"body":{"type":"string"},"expected_head_sha":{"type":"string"},"event":{"type":"string","enum":["COMMENT","APPROVE","REQUEST_CHANGES"]},"path":{"type":"string"},"line":{"type":"integer"},"side":{"type":"string","enum":["LEFT","RIGHT"]},"start_line":{"type":"integer"},"start_side":{"type":"string"},"comment_id":{"type":"string"},"thread_id":{"type":"string"},"label":{"type":"string"},"run_id":{"type":"string"},"comments":{"type":"array","maxItems":100,"items":{"type":"object","required":["path","line","side","body"],"properties":{"path":{"type":"string"},"line":{"type":"integer","minimum":1},"side":{"type":"string","enum":["LEFT","RIGHT"]},"body":{"type":"string","minLength":1,"maxLength":65000}}}}},"required":["operation_key","action_name"]},"GithubReviewOperation":{"type":"object","properties":{"status":{"type":"string","enum":["pending","sent","failed","unknown"]},"error":{"type":"string","nullable":true},"result":{"type":"object","nullable":true,"properties":{"id":{"type":"string","nullable":true},"node_id":{"type":"string","nullable":true}}}},"required":["status","error","result"]},"GithubReviewStack":{"type":"object","properties":{"status":{"type":"string","enum":["available","unavailable"]},"stacks":{"type":"array","items":{"type":"object","properties":{"number":{"type":"integer"},"base_branch":{"type":"string","nullable":true},"entries":{"type":"array","items":{"type":"object","properties":{"number":{"type":"integer"},"title":{"type":"string"},"state":{"type":"string"},"draft":{"type":"boolean"},"current":{"type":"boolean"},"source":{"type":"string"},"path":{"type":"string"}},"required":["number","title","state","draft","current","source","path"]}}},"required":["number","base_branch","entries"]}}},"required":["status","stacks"]},"MagicMergeAssessmentSummary":{"type":"object","properties":{"apply_status":{"type":"string","nullable":true},"apply_reason":{"type":"string","nullable":true},"applied_at":{"type":"string","nullable":true},"status":{"type":"string"},"reason":{"type":"string","nullable":true},"merge_base_sha":{"type":"string","nullable":true},"tip_sha":{"type":"string","nullable":true},"resolution_ref":{"type":"string","nullable":true},"conflict_paths":{"type":"array","items":{"type":"string"}},"classification":{"type":"array","items":{"type":"object","additionalProperties":true}},"resolution_decisions":{"type":"array","items":{"type":"object","additionalProperties":true}},"commits":{"type":"array","items":{"type":"object","properties":{"original_sha":{"type":"string"},"rewritten_sha":{"type":"string","nullable":true},"conflict_paths":{"type":"array","items":{"type":"string"}}},"required":["original_sha","rewritten_sha","conflict_paths"]}},"assessed_at":{"type":"string","nullable":true}},"required":["status"]},"MagicMergeReviewSnapshot":{"type":"object","properties":{"head_sha":{"type":"string","nullable":true},"base_sha":{"type":"string","nullable":true},"observed_at":{"type":"string","nullable":true},"open":{"type":"boolean"},"merge":{"$ref":"#/components/schemas/MagicMergeAssessmentSummary"},"rebase":{"$ref":"#/components/schemas/MagicMergeAssessmentSummary"},"prior_attempts":{"type":"array","items":{"type":"object","properties":{"mode":{"type":"string"},"status":{"type":"string"},"head_sha":{"type":"string"},"base_sha":{"type":"string"},"assessed_at":{"type":"string","nullable":true}},"required":["mode","status","head_sha","base_sha","assessed_at"]}},"can_apply_rebase":{"type":"boolean"},"can_apply_merge":{"type":"boolean"},"can_resolve_rebase":{"type":"boolean"},"can_resolve_merge":{"type":"boolean"},"rebase_application_status":{"type":"string","nullable":true}},"required":["head_sha","base_sha","observed_at","open","merge","rebase","prior_attempts","can_apply_rebase","can_apply_merge","can_resolve_rebase","can_resolve_merge","rebase_application_status"]},"MagicMergeApplyResult":{"type":"object","properties":{"status":{"type":"string"},"reason":{"type":"string","nullable":true},"expected_head_sha":{"type":"string"},"tip_sha":{"type":"string"},"applied_at":{"type":"string","nullable":true}},"required":["status","reason","expected_head_sha","tip_sha","applied_at"]},"GithubRunnerEgress":{"type":"object","required":["status","ipv4","cidr","requested_at_label","can_request"],"properties":{"status":{"type":"string","enum":["not_requested","pending","active","unavailable"]},"ipv4":{"type":"string","nullable":true},"cidr":{"type":"string","nullable":true},"requested_at_label":{"type":"string","nullable":true},"can_request":{"type":"boolean"}}},"GithubRunnerHistoryRun":{"type":"object","required":["id","status","conclusion","github_runner_id","image_version","attempts","last_error","finished_at","cleaned_up_at","created_at","execution_job_id","execution_run_id","history_job_url","outcome","repository_full_name","label","job_name","cpu_millicores","memory_mb","launched_at","started_at","completed_at","github_run_attempt"],"properties":{"id":{"type":"string"},"status":{"type":"string"},"conclusion":{"type":"string","nullable":true},"github_runner_id":{"type":"integer","nullable":true},"image_version":{"type":"string","nullable":true},"attempts":{"type":"integer"},"last_error":{"type":"string","nullable":true},"finished_at":{"type":"string","nullable":true},"cleaned_up_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"execution_job_id":{"type":"integer"},"execution_run_id":{"type":"integer"},"history_job_url":{"type":"string"},"outcome":{"type":"string","enum":["success","failed","active","cancelled"]},"repository_full_name":{"type":"string"},"label":{"type":"string"},"job_name":{"type":"string","nullable":true},"cpu_millicores":{"type":"integer","nullable":true},"memory_mb":{"type":"integer","nullable":true},"launched_at":{"type":"string","nullable":true},"started_at":{"type":"string","nullable":true},"completed_at":{"type":"string","nullable":true},"github_run_attempt":{"type":"integer","nullable":true}}},"GithubRunnerHistoryCounts":{"type":"object","required":["success","failed","active","cancelled"],"properties":{"success":{"type":"integer"},"failed":{"type":"integer"},"active":{"type":"integer"},"cancelled":{"type":"integer"}}},"GithubRunnerUsageChart":{"type":"object","description":"Daily stacked usage. Minutes follow the history filters; spend is the organization CI ledger at its package rates, before included credit.","required":["unit","total","series","days"],"properties":{"unit":{"type":"string","enum":["minutes","cents"]},"total":{"type":"integer"},"series":{"type":"array","description":"Largest first, at most five, then \"Other\" for the rest","items":{"type":"object","required":["key","label","total","members"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"total":{"type":"integer"},"members":{"type":"array","description":"The series folded into \"Other\"; empty for any other series","items":{"type":"object","required":["label","total"],"properties":{"label":{"type":"string"},"total":{"type":"integer"}}}}}}},"days":{"type":"array","items":{"type":"object","required":["date","total","values"],"properties":{"date":{"type":"string"},"total":{"type":"integer"},"values":{"type":"array","description":"One value per series, in series order","items":{"type":"integer"}}}}}}},"CiRunnerMigration":{"type":"object","required":["id","status","status_label","roder_thread_id","repository_full_name","pull_request_url","summary","error","runner_labels"],"properties":{"id":{"type":"string"},"status":{"type":"string","enum":["queued","starting","running","publishing","completed","failed","unknown"]},"status_label":{"type":"string"},"roder_thread_id":{"type":"string","nullable":true},"repository_full_name":{"type":"string"},"pull_request_url":{"type":"string","nullable":true},"summary":{"type":"string","nullable":true},"error":{"type":"string","nullable":true},"runner_labels":{"type":"array","items":{"type":"string"}}}},"GithubRunnerSetupResult":{"type":"object","required":["repository_full_name","label","max_concurrency","enabled","builder_slug","workflow"],"properties":{"repository_full_name":{"type":"string"},"label":{"type":"string"},"max_concurrency":{"type":"integer"},"enabled":{"type":"boolean"},"builder_slug":{"type":"string"},"workflow":{"type":"string"}}},"GithubRunnerSetup":{"type":"object","required":["migration","configuration","organization_id","can_manage","needs_setup","repositories","default_label","max_concurrency","runner_sizes"],"properties":{"migration":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/CiRunnerMigration"}]},"configuration":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/GithubRunnerSetupResult"}]},"organization_id":{"type":"string"},"can_manage":{"type":"boolean"},"needs_setup":{"type":"boolean"},"repositories":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"default_label":{"type":"string"},"max_concurrency":{"type":"integer"},"runner_sizes":{"type":"array","items":{"type":"object","required":["label","cpu","memory_gb","price_per_minute_dollars"],"properties":{"label":{"type":"string"},"cpu":{"type":"integer"},"memory_gb":{"type":"integer"},"price_per_minute_dollars":{"type":"string","description":"USD per runner minute from the organization plan, or the list price when no plan rate exists."}}}}}},"GithubRunnerHistory":{"type":"object","required":["success_rate","pagination","observed_at","repositories","counts","activity","runs"],"properties":{"setup":{"description":"CI onboarding. Older Rails replicas omit this additive field during deployment.","allOf":[{"$ref":"#/components/schemas/GithubRunnerSetup"}]},"success_rate":{"type":"integer","nullable":true},"pagination":{"type":"object","required":["count","page","last"],"properties":{"count":{"type":"integer"},"page":{"type":"integer"},"last":{"type":"integer"},"previous":{"type":"integer"},"next":{"type":"integer"}}},"observed_at":{"type":"string"},"repositories":{"type":"array","items":{"type":"string"}},"counts":{"$ref":"#/components/schemas/GithubRunnerHistoryCounts"},"activity":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/GithubRunnerHistoryCounts"},{"type":"object","required":["date"],"properties":{"date":{"type":"string"},"total":{"type":"integer","description":"All jobs that day; older API replicas omit it during a rolling release"}}}]}},"usage":{"type":"object","required":["minutes","spend"],"properties":{"minutes":{"$ref":"#/components/schemas/GithubRunnerUsageChart"},"spend":{"$ref":"#/components/schemas/GithubRunnerUsageChart"}}},"runs":{"type":"array","items":{"$ref":"#/components/schemas/GithubRunnerHistoryRun"}}}},"GithubRunnerPrivateLink":{"type":"object","required":["name","region","endpoint_id","service_name","hostname","ports","setup_status"],"properties":{"name":{"type":"string"},"region":{"type":"string"},"endpoint_id":{"type":"string"},"service_name":{"type":"string"},"hostname":{"type":"string"},"ports":{"type":"array","items":{"type":"integer"}},"setup_status":{"type":"string","enum":["pending_allowlist","pending_validation","enabled"]}}},"RunnerScaleSetBrokerRequest":{"type":"object","required":["operation","boxmad_organization_id","class"],"properties":{"operation":{"type":"string","enum":["credential","credential_rejected","reserve","registered","launched","retired","acquire"]},"boxmad_organization_id":{"type":"string"},"class":{"type":"string"},"slot_id":{"type":"string","pattern":"^runner_slot_[a-f0-9]{32}$"},"reservation_id":{"type":"integer","format":"int64","minimum":0},"runner_id":{"type":"integer","format":"int64","minimum":0},"runner_name":{"type":"string"},"jit_config":{"type":"string","format":"password","minLength":1,"maxLength":100000},"fingerprint":{"type":"string","pattern":"^[0-9a-f]{64}$"},"warm_idle_seconds":{"type":"integer","enum":[0,3600]},"box_id":{"type":"string"},"spot_interrupted_at":{"type":"integer","format":"int64","minimum":1,"description":"Confirmed Spot interruption time in Unix seconds, sent with a cleaned runner retirement."},"jobs":{"type":"array","maxItems":50,"items":{"type":"object","required":["runnerRequestId","ownerName","repositoryName","requestLabels"],"properties":{"runnerRequestId":{"type":"integer","format":"int64","minimum":1},"ownerName":{"type":"string"},"repositoryName":{"type":"string"},"requestLabels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}}},"allOf":[{"if":{"required":["spot_interrupted_at"]},"then":{"properties":{"operation":{"enum":["retired"]},"box_id":{"pattern":"^box_[a-f0-9]{32}$"},"reservation_id":{"minimum":1},"runner_id":{"minimum":1}}}},{"oneOf":[{"properties":{"operation":{"enum":["credential"]}}},{"required":["fingerprint"],"properties":{"operation":{"enum":["credential_rejected"]}}},{"required":["slot_id"],"properties":{"operation":{"enum":["reserve"]}}},{"required":["slot_id","reservation_id","runner_id","runner_name","jit_config"],"properties":{"operation":{"enum":["registered"]}}},{"required":["slot_id","reservation_id","runner_id","box_id"],"properties":{"operation":{"enum":["launched","retired"]}}},{"required":["jobs"],"properties":{"operation":{"enum":["acquire"]}}}]}]},"RunnerScaleSetLaunchRequest":{"type":"object","required":["name","image","command","env","cpu_millicores","memory_mb","disk_mb","timeout_seconds","working_directory","external_reference"],"properties":{"name":{"type":"string"},"image":{"type":"string"},"command":{"type":"array","items":{"type":"string"}},"env":{"type":"object","additionalProperties":{"type":"string"}},"cpu_millicores":{"type":"integer","minimum":1000,"maximum":16000},"memory_mb":{"type":"integer","minimum":128,"maximum":65536},"disk_mb":{"type":"integer","minimum":128,"maximum":32768},"timeout_seconds":{"type":"integer","minimum":1,"maximum":22200},"working_directory":{"type":"string","enum":["/opt/actions-runner"]},"external_reference":{"type":"string"},"checkout_scope":{"type":["string","null"]}}},"GithubRunnerInvocation":{"type":"object","required":["id","github_job_id","github_run_id","status","conclusion","outcome","job_name","cleanup_pending","github_runner_id","assigned_job_id","assigned_run_id","provider","sandbox_id","modal_sandbox_id","image_version","job_url","attempts","last_error","spawned_at","finished_at","cleaned_up_at","created_at"],"properties":{"id":{"type":"string"},"github_job_id":{"type":"integer"},"github_run_id":{"type":"integer"},"assigned_job_id":{"type":"integer","nullable":true},"assigned_run_id":{"type":"integer","nullable":true},"status":{"type":"string"},"conclusion":{"type":"string","nullable":true},"outcome":{"type":"string","enum":["success","failed","active","cancelled"],"description":"Same grouping as run history"},"job_name":{"type":"string","nullable":true},"cleanup_pending":{"type":"boolean","description":"Finished but its runner is not yet removed"},"github_runner_id":{"type":"integer","nullable":true},"provider":{"type":"string","enum":["modal","boxmad"]},"sandbox_id":{"type":"string","nullable":true},"modal_sandbox_id":{"type":"string","nullable":true},"image_version":{"type":"string","nullable":true},"job_url":{"type":"string","nullable":true},"attempts":{"type":"integer"},"last_error":{"type":"string","nullable":true},"spawned_at":{"type":"string","nullable":true},"finished_at":{"type":"string","nullable":true},"cleaned_up_at":{"type":"string","nullable":true},"created_at":{"type":"string"}}},"GithubRunnerImage":{"type":"object","required":["id","name","image_reference","registry_secret_name","status","modal_image_id","last_error","created_at","updated_at"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"image_reference":{"type":"string","description":"Immutable linux/amd64 Ubuntu 24.04 image, registry/repository@sha256:digest, with Node 22+"},"registry_secret_name":{"type":"string","nullable":true,"description":"Name of an organization CI secret containing REGISTRY_USERNAME and REGISTRY_PASSWORD JSON fields"},"status":{"type":"string","enum":["pending","building","ready","failed"]},"modal_image_id":{"type":"string","nullable":true},"last_error":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}}},"GithubRunnerRepository":{"type":"object","required":["repository_full_name","enabled_pool_count","pools"],"properties":{"repository_full_name":{"type":"string"},"enabled_pool_count":{"type":"integer"},"pools":{"type":"array","description":"Enabled first, then most recently used, then by label","items":{"$ref":"#/components/schemas/GithubRunnerPool"}}}},"GithubRunnerPool":{"type":"object","required":["id","organization_id","github_app_installation_id","github_repository_id","repository_full_name","label","enabled","max_concurrency","timeout_seconds","cpu_millicores","memory_mb","provider","runtime_kind","github_runner_image","last_error","last_polled_at","invocations"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"github_app_installation_id":{"type":"string"},"github_repository_id":{"type":"string"},"repository_full_name":{"type":"string"},"label":{"type":"string"},"enabled":{"type":"boolean"},"max_concurrency":{"type":"integer"},"timeout_seconds":{"type":"integer"},"provider":{"type":"string","enum":["modal","boxmad"]},"runtime_kind":{"type":"string","enum":["vm","sandbox"]},"github_runner_image":{"anyOf":[{"$ref":"#/components/schemas/GithubRunnerImage"},{"type":"null"}]},"cpu_millicores":{"type":"integer"},"memory_mb":{"type":"integer"},"last_error":{"type":"string","nullable":true},"last_polled_at":{"type":"string","nullable":true},"invocations":{"type":"array","items":{"$ref":"#/components/schemas/GithubRunnerInvocation"}}}},"GitlabIntegration":{"type":"object","required":["id","username","status","name","avatar_url","host","webhook_authentication"],"properties":{"id":{"type":"string"},"username":{"type":"string"},"status":{"type":"string"},"name":{"type":"string","nullable":true},"avatar_url":{"type":"string","nullable":true},"host":{"type":"string"},"webhook_authentication":{"type":"string","enum":["signing_token","secret_token"]}}},"GitlabProject":{"type":"object","required":["project_id","name","path_with_namespace","default_branch","web_url","visibility","unavailable_reason","connection_id","import_status","can_link","repository_id"],"properties":{"project_id":{"type":"integer"},"name":{"type":"string"},"path_with_namespace":{"type":"string"},"default_branch":{"type":"string","nullable":true},"web_url":{"type":"string"},"visibility":{"type":"string"},"unavailable_reason":{"type":"string","nullable":true},"connection_id":{"type":"string","nullable":true},"import_status":{"type":"string","nullable":true},"can_link":{"type":"boolean","description":"Whether a Verify project can link this project now: it has no connection yet, or its connection is queued, importing or ready."},"repository_id":{"type":"string","nullable":true,"description":"The workspace repository its connection reserved, if any."}}},"GitlabConnection":{"type":"object","required":["id","gitlab_project_id","path_with_namespace","source_branch","repo_slug","status","error_message","web_url","import_status","import_terminal","can_retry","import_detail","repository_id"],"properties":{"id":{"type":"string"},"gitlab_project_id":{"type":"integer"},"path_with_namespace":{"type":"string"},"source_branch":{"type":"string"},"repo_slug":{"type":"string"},"status":{"type":"string"},"error_message":{"type":"string","nullable":true},"web_url":{"type":"string"},"integration_id":{"type":"string"},"import_status":{"type":"string","enum":["queued","running","succeeded","failed"]},"import_terminal":{"type":"boolean"},"can_retry":{"type":"boolean"},"import_detail":{"type":"string"},"repository_id":{"type":"string","nullable":true,"description":"The workspace repository, reserved when the import starts."}}},"GitlabPage":{"type":"object","required":["organization","configured","integrations","selected_integration_id","projects","next_page","connections","redirect_uri"],"properties":{"organization":{"type":"object","required":["id","slug","name"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}}},"configured":{"type":"boolean"},"integrations":{"type":"array","items":{"$ref":"#/components/schemas/GitlabIntegration"}},"selected_integration_id":{"type":"string","nullable":true},"projects":{"type":"array","items":{"$ref":"#/components/schemas/GitlabProject"}},"next_page":{"type":"integer","nullable":true},"connections":{"type":"array","items":{"$ref":"#/components/schemas/GitlabConnection"}},"inventory_error":{"type":"string","nullable":true},"redirect_uri":{"type":"string","nullable":true,"description":"The OAuth redirect URI a self-managed GitLab application must use; null when GitLab callbacks aren't configured."}}},"GitlabAuthorizationUrl":{"type":"object","required":["authorization_url"],"properties":{"authorization_url":{"type":"string"}}},"RepositoryImportPage":{"type":"object","required":["github_installations","gitlab_integrations","can_manage_connections","gitlab_configured","gitlab_imports","github_imports","organization_id","repositories","inventory_errors","gitlab_self_managed_available","gitlab_redirect_uri"],"properties":{"github_installations":{"type":"array","items":{"$ref":"#/components/schemas/GithubAppInstallation"}},"gitlab_integrations":{"type":"array","items":{"$ref":"#/components/schemas/GitlabIntegration"}},"can_manage_connections":{"type":"boolean"},"gitlab_configured":{"type":"boolean"},"gitlab_imports":{"type":"array","items":{"$ref":"#/components/schemas/GitlabConnection"}},"github_imports":{"type":"array","items":{"$ref":"#/components/schemas/GithubImportBatchSummary"}},"organization_id":{"type":"string"},"repositories":{"type":"array","items":{"$ref":"#/components/schemas/RepositoryImportRepository"}},"inventory_errors":{"type":"array","items":{"type":"string"}},"gitlab_self_managed_available":{"type":"boolean"},"gitlab_redirect_uri":{"type":"string","nullable":true}}},"GithubImportBatchSummary":{"type":"object","required":["id","account_login","complete","import_outcome"],"properties":{"id":{"type":"string"},"account_login":{"type":"string"},"complete":{"type":"boolean"},"import_outcome":{"type":"string","enum":["success","attention"]}}},"RepositoryImportRepository":{"type":"object","required":["id","provider","account_id","account_name","name","full_name","visibility","owner","default_branch","unavailable_reason","project_id","connection_id"],"properties":{"id":{"type":"string"},"provider":{"type":"string","enum":["github","gitlab"]},"account_id":{"type":"string"},"account_name":{"type":"string"},"name":{"type":"string"},"full_name":{"type":"string"},"visibility":{"type":"string"},"owner":{"type":"string","nullable":true},"default_branch":{"type":"string","nullable":true},"unavailable_reason":{"type":"string","nullable":true},"project_id":{"type":"integer","nullable":true},"connection_id":{"type":"string","nullable":true}}},"AppDomainCreatePayload":{"type":"object","required":["app_service_id","hostname","kind"],"properties":{"app_service_id":{"type":"string"},"app_environment_id":{"type":"string"},"hostname":{"type":"string"},"kind":{"type":"string","enum":["primary","redirect","preview","internal"]},"tls_status":{"type":"string","enum":["pending","active","failed"]},"dns_status":{"type":"string","enum":["pending","configured","failed"]},"redirect_to":{"type":"string"}}},"AppConfigVariableCreatePayload":{"type":"object","required":["scope_kind","key","value_kind","exposed_to_build"],"properties":{"app_environment_id":{"type":"string"},"app_service_id":{"type":"string"},"scope_kind":{"type":"string","enum":["app","environment","service"]},"key":{"type":"string"},"value":{"type":"string"},"value_kind":{"type":"string","enum":["plain","secret","reference"]},"description":{"type":"string"},"exposed_to_build":{"type":"boolean"}}},"AppConfigVariableRotatePayload":{"type":"object","required":["value"],"properties":{"value":{"type":"string"},"value_kind":{"type":"string","enum":["plain","secret","reference"]}}},"AppDomainPathRule":{"type":"object","required":["id","path_prefix","status","action_kind","last_error","app_service_id","backend_ref","app_service_endpoint_id","created_at","updated_at"],"properties":{"id":{"type":"string"},"path_prefix":{"type":"string"},"status":{"type":"string","enum":["pending","active","failed","disabled"]},"action_kind":{"type":"string","enum":["proxy","redirect","fixed_response","external"]},"last_error":{"type":"string","nullable":true},"app_service_id":{"type":"string","nullable":true},"backend_ref":{"type":"string","nullable":true},"app_service_endpoint_id":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"AppDomainPathRuleUpsertPayload":{"type":"object","required":["path_prefix","app_service_id"],"properties":{"path_prefix":{"type":"string"},"app_service_id":{"type":"string"},"app_service_endpoint_id":{"type":"string"}}},"HostedAppLocationPayload":{"type":"object","required":["location_id"],"properties":{"location_id":{"type":"string"}}},"ImageRepository":{"type":"object","required":["id","organization_id","hosted_app_id","slug","name","provider_kind","repository_path","visibility","status","auth_configured","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"hosted_app_id":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"provider_kind":{"type":"string","enum":["oci","docker_registry"]},"repository_path":{"type":"string"},"visibility":{"type":"string","enum":["private","internal","public"]},"status":{"type":"string","enum":["active","paused","archived"]},"auth_configured":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"ImageRepositoryCreatePayload":{"type":"object","required":["slug","name"],"properties":{"hosted_app_id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"provider_kind":{"type":"string","enum":["oci","docker_registry"]},"repository_path":{"type":"string"},"visibility":{"type":"string","enum":["private","internal","public"]},"status":{"type":"string","enum":["active","paused","archived"]},"registry_auth_token":{"type":"string"}}},"ImageRepositoryContractPayload":{"type":"object","required":["operation","reference"],"properties":{"operation":{"type":"string","enum":["push","pull"]},"reference":{"type":"string"},"ttl_seconds":{"type":"integer","minimum":1}}},"ImageRepositoryContractAuth":{"type":"object","required":["username","required"],"properties":{"username":{"type":"string"},"required":{"type":"boolean"},"token_hint":{"type":"string","nullable":true},"login_command":{"type":"string","nullable":true},"token_realm":{"type":"string","nullable":true},"service":{"type":"string","nullable":true},"scope":{"type":"string","nullable":true}}},"ImageRepositoryContract":{"type":"object","required":["provider","operation","repository_path","reference","expires_in_seconds"],"properties":{"provider":{"type":"string"},"operation":{"type":"string","enum":["push","pull"]},"repository_path":{"type":"string"},"reference":{"type":"string"},"push_registry_host":{"type":"string"},"pull_registry_host":{"type":"string"},"push_image_reference":{"type":"string"},"pull_image_reference":{"type":"string"},"image_reference":{"type":"string"},"auth":{"$ref":"#/components/schemas/ImageRepositoryContractAuth"},"expires_in_seconds":{"type":"integer","minimum":1}}},"ImageRepositoryContractResponse":{"type":"object","required":["image_repository","contract"],"properties":{"image_repository":{"$ref":"#/components/schemas/ImageRepository"},"contract":{"$ref":"#/components/schemas/ImageRepositoryContract"}}},"ImageRepositoryTagsResponse":{"type":"object","required":["image_repository","tags","name","registry_url"],"properties":{"image_repository":{"$ref":"#/components/schemas/ImageRepository"},"tags":{"type":"array","items":{"type":"string"}},"name":{"type":"string"},"registry_url":{"type":"string","format":"uri"}}},"AccountDeletionResponse":{"type":"object","required":["request"],"properties":{"request":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/AccountDeletionReceipt"}]}}},"AccountDeletionReceipt":{"type":"object","required":["id","status","requested_at","due_at"],"properties":{"id":{"type":"string"},"status":{"type":"string","enum":["requested","processing","completed"]},"requested_at":{"type":"string","format":"date-time"},"due_at":{"type":"string","format":"date-time"}}},"DeviceControlInput":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":512},"action":{"type":"string","enum":["agents.list","threads.list","threads.read","threads.start","threads.adopt","threads.release","threads.end","turns.start","turns.interrupt","claude.agents.list","claude.threads.list","claude.threads.read","claude.threads.start","claude.threads.release","claude.threads.end","claude.turns.start","claude.turns.interrupt","threads.rename","claude.threads.rename"]},"arguments":{"type":"object","additionalProperties":true}},"required":["key","action","arguments"],"additionalProperties":false},"DeviceControlOperation":{"type":"object","properties":{"id":{"type":"string"},"device_id":{"type":"string"},"provider":{"type":"string","enum":["codex","claude"]},"action":{"type":"string","enum":["agents.list","threads.list","threads.read","threads.start","threads.adopt","threads.release","threads.end","turns.start","turns.interrupt","claude.agents.list","claude.threads.list","claude.threads.read","claude.threads.start","claude.threads.release","claude.threads.end","claude.turns.start","claude.turns.interrupt","threads.rename","claude.threads.rename"]},"state":{"type":"string","enum":["queued","claimed","completed","failed","expired","uncertain"]},"result":{"anyOf":[{"$ref":"#/components/schemas/DeviceControlResult"},{"type":"null"}]},"expires_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"result_expired":{"type":"boolean","description":"Private cached prompts/results expire after one hour; intent digests and native references remain as replay fences."},"delivery":{"type":"object","description":"Present while a request waits on an offline computer and after it expires unclaimed: whether the computer is checking for requests and when it last did.","properties":{"status":{"type":"string","enum":["connected","offline","unknown"]},"last_seen_at":{"type":["string","null"],"format":"date-time"},"message":{"type":"string"}},"required":["status","last_seen_at","message"],"additionalProperties":false},"references":{"type":"object","properties":{"provider":{"type":"string","enum":["codex","claude"]},"thread_id":{"type":"string","maxLength":200},"turn_id":{"type":"string","maxLength":200},"source_operation_id":{"type":"string","maxLength":200}},"additionalProperties":false},"end":{"$ref":"#/components/schemas/AgentRelaySourceEnd"}},"required":["id","device_id","provider","action","state","result","expires_at","created_at","result_expired","references"],"additionalProperties":false},"DeviceControlOperationResponse":{"type":"object","properties":{"operation":{"$ref":"#/components/schemas/DeviceControlOperation"}},"required":["operation"],"additionalProperties":false},"ControlComputerConsent":{"type":"object","properties":{"revision":{"type":["integer","null"],"minimum":1},"enabled":{"type":"boolean"},"providers":{"type":"array","uniqueItems":true,"maxItems":2,"items":{"type":"string","enum":["codex","claude"]}}},"required":["revision","enabled","providers"],"additionalProperties":false},"ControlComputer":{"type":"object","properties":{"device":{"$ref":"#/components/schemas/ControlComputerIdentity"},"consent":{"$ref":"#/components/schemas/ControlComputerConsent"},"connection":{"$ref":"#/components/schemas/ControlConnection"}},"required":["device","consent"],"additionalProperties":false},"ControlComputers":{"type":"object","properties":{"computers":{"type":"array","items":{"$ref":"#/components/schemas/ControlComputer"},"maxItems":50},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["computers","next_cursor"],"additionalProperties":false},"DeviceControlProof":{"type":"object","properties":{"payload":{"type":"string","minLength":1,"maxLength":600000,"description":"Exact signed JSON array: [\"composal-coding-control\",1,organization_id,device_id,pairing_generation,unix_milliseconds,nonce_hex_32,action,arguments,environment]. Signature is unpadded base64url Ed25519 over these UTF-8 bytes; timestamp must be within 15 seconds. Actions: connect {transports?}, pending {providers?,features?}, claim {operation_id,request_digest,provider?,features?}, finish {operation_id,request_digest,claim_token,response}. Omitted providers/provider select legacy Codex only. Desktop requests feature relay_mcp_v1 only when connect advertises it; an agent-attributed create then returns a source-bound MCP connection with a separate opaque bearer. Automatic native Relay deliveries require relay_delivery_wait_v1, advertised by connect and sent on both pending and claim. Their pending metadata contains relay_delivery {thread_id,mode:wait,expires_at}; Desktop checks native availability before claiming and retains one original queued receipt while busy. Parent-only actions native_plan {connection} and native_surface {connection} return DeviceAgentNodePlan and DeviceAgentNodeSurface respectively; surface approval follows native advertisement and the coding signer retains only connect/pending/claim/finish. Browser credentials do not replace this proof."},"signature":{"type":"string","minLength":86,"maxLength":86}},"required":["payload","signature"],"additionalProperties":false},"DeviceControlRuntimeResponse":{"anyOf":[{"$ref":"#/components/schemas/DeviceAgentNodePlan"},{"$ref":"#/components/schemas/DeviceAgentNodeSurface"},{"type":"object","additionalProperties":true}]},"ControlAdmissionInput":{"type":"object","properties":{"device_id":{"type":"string"},"native_device_id":{"type":"string","pattern":"^[a-f0-9]{64}$"},"pairing_generation":{"type":"integer","minimum":1}},"required":["device_id","native_device_id","pairing_generation"],"additionalProperties":false},"ControlAdmissionResponse":{"type":"object","properties":{"authorized":{"type":"boolean","enum":[true]}},"required":["authorized"],"additionalProperties":false},"ControlThread":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"cwd":{"type":"string"},"loaded":{"type":"boolean"},"metadata_available":{"type":"boolean","description":"False for loaded-session identities whose full thread metadata has not appeared in this page."},"provider":{"type":"string","enum":["codex","claude"]}},"required":["id","name","cwd","loaded","metadata_available","provider"],"additionalProperties":false},"ControlMessage":{"type":"object","properties":{"id":{"type":"string"},"turn_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"role":{"type":"string","enum":["user","assistant","system"]},"text":{"type":"string"},"relay":{"$ref":"#/components/schemas/ControlRelayOrigin"}},"required":["id","turn_id","role","text"],"additionalProperties":false},"ControlThreadPage":{"type":"object","properties":{"threads":{"type":"array","items":{"$ref":"#/components/schemas/ControlThread"}},"next_cursor":{"type":["string","null"]},"loaded_cursor":{"type":["string","null"]},"available_providers":{"type":"array","items":{"$ref":"#/components/schemas/ControlProvider"},"maxItems":2}},"required":["threads","next_cursor","loaded_cursor","available_providers"],"additionalProperties":false},"ControlHistoryPage":{"type":"object","properties":{"thread":{"$ref":"#/components/schemas/ControlThread"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ControlMessage"}},"active_turn":{"type":["string","null"]},"next_cursor":{"type":["string","null"]},"final_answer":{"$ref":"#/components/schemas/ControlNativeFinalAnswer"}},"required":["thread","messages","active_turn","next_cursor"],"additionalProperties":false},"ControlAgent":{"type":"object","properties":{"id":{"type":"string"},"thread_id":{"type":"string"},"provider":{"type":"string","enum":["codex","claude"]},"loaded":{"type":"boolean","enum":[true]}},"required":["id","thread_id","provider","loaded"],"additionalProperties":false},"ControlAgentPage":{"type":"object","properties":{"agents":{"type":"array","items":{"$ref":"#/components/schemas/ControlAgent"}},"next_cursor":{"type":["string","null"]},"available_providers":{"type":"array","items":{"$ref":"#/components/schemas/ControlProvider"},"maxItems":2}},"required":["agents","next_cursor","available_providers"],"additionalProperties":false},"ControlThreadCreated":{"type":"object","properties":{"thread":{"$ref":"#/components/schemas/ControlThread"},"turn":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":["string","null"]}},"required":["id","status"],"additionalProperties":false}},"required":["thread"],"additionalProperties":false},"ControlTurnReceipt":{"type":"object","properties":{"turn":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":["string","null"]}},"required":["id","status"],"additionalProperties":false}},"required":["turn"],"additionalProperties":false},"DeviceControlResult":{"oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"action":{"type":"string","enum":["agents.list","claude.agents.list"]},"data":{"$ref":"#/components/schemas/ControlAgentPage"}},"required":["ok","action","data"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"action":{"type":"string","enum":["threads.list","claude.threads.list"]},"data":{"$ref":"#/components/schemas/ControlThreadPage"}},"required":["ok","action","data"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"action":{"type":"string","enum":["threads.read","claude.threads.read"]},"data":{"$ref":"#/components/schemas/ControlHistoryPage"}},"required":["ok","action","data"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"action":{"type":"string","enum":["threads.start","threads.adopt","claude.threads.start"]},"data":{"$ref":"#/components/schemas/ControlThreadCreated"}},"required":["ok","action","data"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"action":{"type":"string","enum":["turns.start","claude.turns.start"]},"data":{"$ref":"#/components/schemas/ControlTurnReceipt"}},"required":["ok","action","data"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"action":{"type":"string","enum":["turns.interrupt","claude.turns.interrupt"]},"data":{"type":"object","properties":{},"required":[],"additionalProperties":false}},"required":["ok","action","data"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"action":{"type":"string","enum":["threads.release","threads.end","claude.threads.release","claude.threads.end"]},"data":{"$ref":"#/components/schemas/ControlThreadReleased"}},"required":["ok","action","data"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"action":{"type":"string","enum":["threads.rename","claude.threads.rename"]},"data":{"$ref":"#/components/schemas/ControlThreadCreated"}},"required":["ok","action","data"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"error":{"type":"string"}},"required":["ok","code","error"],"additionalProperties":false}]},"ControlComputerIdentity":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","enum":["darwin","linux","win32"]}},"required":["id","name","platform"],"additionalProperties":false},"ControlComputerConsentInput":{"type":"object","properties":{"persistent_agent_id":{"type":"string"},"enabled":{"type":"boolean"},"expected_revision":{"type":["integer","null"],"minimum":1},"providers":{"type":"array","uniqueItems":true,"maxItems":2,"items":{"type":"string","enum":["codex","claude"]},"minItems":1,"description":"Explicit providers for this consent. Omitted keeps legacy Codex-only consent."}},"required":["persistent_agent_id","enabled","expected_revision"],"additionalProperties":false},"ControlComputerResponse":{"type":"object","properties":{"computer":{"$ref":"#/components/schemas/ControlComputer"}},"required":["computer"],"additionalProperties":false},"ControlProvider":{"type":"object","properties":{"provider":{"type":"string","enum":["codex","claude"]},"available":{"type":"boolean"},"state":{"type":"string","enum":["ready","checking","not-installed","sign-in-required","unavailable","unknown"]},"version":{"anyOf":[{"type":"string"},{"type":"null"}]},"can_start":{"type":"boolean"},"can_adopt":{"type":"boolean","description":"Ready native provider on a Desktop Relay connection supporting existing-session adoption. Absent on older API responses; treat absence as false."}},"required":["provider","available","state","version","can_start"],"additionalProperties":false},"ControlThreadReleased":{"type":"object","properties":{"status":{"type":["string","null"],"enum":["closed","notLoaded","notSubscribed","unsubscribed",null]}},"required":["status"],"additionalProperties":false},"ControlConnection":{"type":"object","properties":{"status":{"type":"string","enum":["connected","offline","unknown"]},"checked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["status","checked_at"],"additionalProperties":false,"description":"A point-in-time control transport observation. Unknown means no valid observation; it never means offline. This grants no execution access or provider readiness."},"ControlRelayOrigin":{"type":"object","description":"Verified incoming Relay capture bound to this source and exact acknowledged native turn. Pasted lookalikes have no origin.","properties":{"sender_name":{"type":"string"},"participant":{"type":"string"},"provider":{"type":["string","null"],"enum":["codex","claude",null]},"device_name":{"type":["string","null"]},"message_id":{"type":"string"},"channel_id":{"type":"string"},"text_omitted":{"type":"boolean"}},"required":["sender_name","participant","provider","device_name","message_id","channel_id","text_omitted"],"additionalProperties":false},"AgentRelaySourceEnd":{"type":"object","additionalProperties":false,"properties":{"can_dismiss":{"type":"boolean","description":"Durable permission to dismiss this End receipt after safe refusal, unclaimed expiry, or confirmed retirement."},"operation_id":{"type":"string"},"status":{"type":"string","enum":["ending","cleanup_pending","ended","failed","expired","uncertain"]},"native_finished_at":{"type":["string","null"],"format":"date-time"},"retired_at":{"type":["string","null"],"format":"date-time"}},"required":["can_dismiss","operation_id","status","native_finished_at","retired_at"]},"ControlNativeFinalAnswer":{"type":"object","additionalProperties":false,"required":["turn_id","state","input_digest","text"],"properties":{"turn_id":{"type":"string","maxLength":200},"state":{"type":"string","enum":["pending","completed","unavailable"]},"input_digest":{"type":["string","null"],"pattern":"^[0-9a-f]{64}$"},"text":{"type":["string","null"],"maxLength":4000}}},"LocalAgentResponsesRequest":{"type":"object","description":"An OpenAI Responses request from the agent built into `com`, relayed with the platform's credentials. The model must be gpt-6-luna or gpt-5.6-luna; the request must stream and set store to false; stored-state fields and tools the provider runs (web search, file search, code interpreter, MCP) are refused. At most 24 MiB.","required":["model","input","stream","store"],"additionalProperties":true,"properties":{"model":{"type":"string","enum":["gpt-6-luna","gpt-5.6-luna"]},"input":{"type":"array","items":{"type":"object","additionalProperties":true}},"stream":{"type":"boolean","enum":[true]},"store":{"type":"boolean","enum":[false]},"service_tier":{"type":"string","enum":["auto","default","flex","priority"],"nullable":true},"tools":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"LocalAgentDecisionsRequest":{"type":"object","required":["request"],"additionalProperties":false,"properties":{"request":{"type":"object","additionalProperties":true,"description":"A native OpenAI Decisions request for gpt-6-luna, at most 1600 KiB, with inline images only"}}},"LocalAgentInferenceError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","additionalProperties":true,"properties":{"message":{"type":"string"},"code":{"type":"string"}}}}},"MergeResolutionInput":{"type":"object","required":["base","ours","theirs"],"additionalProperties":false,"properties":{"path":{"type":"string","description":"Repository-relative path of the conflicted file"},"base":{"type":"string","description":"Common ancestor file contents"},"ours":{"type":"string","description":"Current / left file contents"},"theirs":{"type":"string","description":"Incoming / right file contents"},"context":{"type":"object","additionalProperties":{"type":"string"},"description":"Optional surrounding files keyed by path"}}},"MergeResolutionResult":{"type":"object","required":["resolved","action","fallback","duration_ms"],"properties":{"resolved":{"type":"boolean"},"action":{"type":"string"},"fallback":{"type":"boolean"},"content":{"type":"string","nullable":true},"model":{"type":"string"},"duration_ms":{"type":"integer"}}},"ModelSubscriptionAccounts":{"type":"object","required":["accounts","connection_agent"],"properties":{"accounts":{"type":"array","items":{"type":"object","required":["id","provider","label","status","saved","can_disconnect","usable","agents"],"properties":{"id":{"type":"string"},"provider":{"type":"string","enum":["anthropic","openai","xai"]},"label":{"type":"string"},"email":{"type":"string"},"status":{"type":"string"},"saved":{"type":"boolean"},"can_disconnect":{"type":"boolean"},"usable":{"type":"boolean"},"agents":{"type":"array","items":{"type":"object","required":["id","name","organization"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"string"}}}}}}},"connection_agent":{"type":"object","nullable":true,"required":["id","organization_id"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"}}}}},"NativeRelayPeerInput":{"oneOf":[{"type":"object","properties":{"action":{"type":"string","enum":["authorize","tools","resources"]}},"required":["action"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","enum":["read","subscribe","unsubscribe"]},"uri":{"type":"string","maxLength":1024,"pattern":"^relay://"}},"required":["action","uri"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","const":"call"},"key":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string","pattern":"^[a-z][a-z0-9_.]{0,99}$"},"arguments":{"type":"object","additionalProperties":true}},"required":["action","key","name","arguments"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","const":"operation"},"operation_id":{"type":"string","maxLength":200,"pattern":"^agent_relay_operation_"}},"required":["action","operation_id"],"additionalProperties":false}]},"NowMergeQueueItem":{"type":"object","required":["id","kind","state","checks_status","repo","change","github_pr_number","member_count","member_count_label","queue_rank","queue_length","created_at","updated_at","completed_at","completed_at_label","recovery"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["change","github_pr"]},"state":{"type":"string","enum":["queued","validating","ready","merging","merged","ejected","cancelled","needs_attention"]},"checks_status":{"type":"string","enum":["pending","passing","failing","stale","missing"]},"repo":{"type":"object","required":["slug","name","target_branch"],"properties":{"slug":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"target_branch":{"type":"string","nullable":true}}},"change":{"nullable":true,"type":"object","required":["id","number","reference","title","author"],"properties":{"id":{"type":"string"},"number":{"type":"integer","nullable":true},"reference":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"author":{"nullable":true,"type":"object","required":["id"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"picture_url":{"type":"string"}}}}},"github_pr_number":{"type":"integer","nullable":true},"member_count":{"type":"integer","nullable":true},"member_count_label":{"type":"string","nullable":true},"queue_rank":{"type":"integer","nullable":true},"queue_length":{"type":"integer"},"created_at":{"type":"string","nullable":true},"updated_at":{"type":"string","nullable":true},"completed_at":{"type":"string","nullable":true},"completed_at_label":{"type":"string","nullable":true},"recovery":{"nullable":true,"type":"object","required":["kind","summary","next_step","action_required_by","action_kind"],"properties":{"kind":{"type":"string","enum":["checks_failed","landing_conflict","github_state_changed","github_access_problem","queue_policy_changed","merge_outcome_unknown","unknown"]},"summary":{"type":"string"},"next_step":{"type":"string"},"action_required_by":{"type":"string","enum":["author","repo_admin","vex"]},"action_kind":{"type":"string","enum":["open_checks","open_change","open_integration","open_queue"]}}}}},"VerifyDiscoveryRun":{"type":"object","additionalProperties":false,"required":["id","status","result","environment_revision_id","account_id","failure_code","queued_at","deadline_at"],"properties":{"recording":{"$ref":"#/components/schemas/VerifyMediaRecording"},"evidence":{"type":"array","items":{"$ref":"#/components/schemas/VerifyEvidenceItem"}},"id":{"type":"string"},"status":{"type":"string","enum":["queued","running","completed","partial","failed","canceled"]},"result":{"type":"object","nullable":true,"required":["report","status"],"properties":{"status":{"type":"string","enum":["completed","partial"]},"error":{"type":"string"},"usage":{"type":"object","additionalProperties":true},"report":{"$ref":"#/components/schemas/VerifyDiscoveryReport"}}},"environment_revision_id":{"type":"string"},"account_id":{"type":"string","nullable":true},"failure_code":{"type":"string","nullable":true},"queued_at":{"type":"string","format":"date-time"},"deadline_at":{"type":"string","format":"date-time"}}},"VerifyDiscoveryReport":{"type":"object","additionalProperties":false,"required":["pages","stopping_reason","pages","stopping_reason"],"properties":{"code_evidence":{"type":"array","items":{"type":"object","required":["execution_id","tool","input","result","execution_id","tool","input","result"],"properties":{"execution_id":{"type":"string"},"tool":{"type":"string","enum":["exec_command","write_file","exec_command","write_file"]},"input":{"type":"object","additionalProperties":true},"result":{"type":"object","additionalProperties":true}}}},"stopping_reason":{"type":"string","minLength":1},"pages":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["url","title","description","controls","url","title","description","controls"],"properties":{"url":{"type":"string","format":"uri"},"title":{"type":"string"},"description":{"type":"string"},"controls":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["label","attempted","destination","label","attempted","destination"],"properties":{"label":{"type":"string"},"attempted":{"type":"boolean"},"destination":{"type":"string","format":"uri","nullable":true,"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}}}}}}},"checks":{"type":"array","maxItems":200,"items":{"type":"object","additionalProperties":false,"required":["charter","expectation","expectation_source","actual","outcome","steps","url"],"properties":{"charter":{"type":"string","maxLength":4000},"expectation":{"type":"string","maxLength":4000},"expectation_source":{"enum":["explicit","inferred"]},"actual":{"type":"string","maxLength":4000},"outcome":{"enum":["observed","issue","blocked","inconclusive"]},"steps":{"type":"array","maxItems":40,"items":{"type":"string","maxLength":4000}},"url":{"type":"string","format":"uri"},"evidence_step_ids":{"type":"array","maxItems":16,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":200}},"source_agent_id":{"type":"string","description":"For a review, the tester whose result this restates."}}}},"findings":{"type":"array","maxItems":200,"items":{"type":"object","additionalProperties":false,"required":["title","severity","confidence","expected","actual","reproduction_steps","url","evidence_timestamp_ms"],"properties":{"title":{"type":"string","maxLength":4000},"severity":{"enum":["high","medium","low"]},"confidence":{"enum":["reproduced","suspected"]},"expected":{"type":"string","maxLength":4000},"actual":{"type":"string","maxLength":4000},"reproduction_steps":{"type":"array","maxItems":40,"items":{"type":"string","maxLength":4000}},"url":{"type":"string","format":"uri"},"evidence_step_ids":{"type":"array","maxItems":16,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":200}},"evidence_timestamp_ms":{"type":"integer","nullable":true,"minimum":0},"check_indices":{"type":"array","description":"Optional zero-based references to checks in this same tester report. Missing means no explicit link was saved.","maxItems":200,"uniqueItems":true,"items":{"type":"integer","minimum":0}},"source_agent_id":{"type":"string","description":"For a review, the tester whose result this restates."}}}},"unvisited":{"type":"array","maxItems":200,"items":{"type":"string","maxLength":4000}},"cleanup":{"type":"array","maxItems":200,"items":{"type":"string","maxLength":4000}},"assignments":{"type":"array","maxItems":40,"items":{"type":"object","additionalProperties":false,"required":["role","charter"],"properties":{"role":{"enum":["breakdown","qa","ui"]},"charter":{"type":"string","minLength":1,"maxLength":4000}}}}}},"VerifyPage":{"type":"object","required":["organization","permissions","checkout_required","cli_signed_in_at","suggested_app_url","url_first_start","included_deep_scan","demo_project","repositories","environments","counts","runs_pagination","runs","active_runs","project"],"properties":{"cli_signed_in_at":{"type":"string","format":"date-time","nullable":true,"description":"When the signed-in user last finished a CLI sign-in for this organization, so agent setup can show the CLI is connected."},"suggested_app_url":{"type":"string","nullable":true,"description":"The URL first-run setup prefills for a new app, from the workspace's project website or the signed-in user's work email domain. Only the environments section sets it."},"demo_project":{"type":"object","nullable":true,"description":"The workspace's copy of the demo project, which setup offers as example data. Only the environments section sets it.","required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"}}},"url_first_start":{"type":"boolean","description":"Whether setup opens on the URL-first screen, which saves the app and asks for test access next. True only in the environments section while the workspace's included scan is still available to the signed-in user."},"included_deep_scan":{"type":"boolean","description":"Whether a new app gets the signed-in user's included Deep Scan (verify_onboarding_deep_scan) once it has a test account, so setup asks for one right after the app. True only in the environments section."},"onboarding_discovery":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/VerifyOnboardingDiscovery"}]},"checkout_required":{"type":"boolean"},"project":{"description":"The project the page is limited to, or null for the whole organization.","oneOf":[{"type":"object","required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"}}},{"type":"null"}]},"organization":{"type":"object","required":["id","slug","name"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}}},"permissions":{"type":"object","required":["manage"],"properties":{"manage":{"type":"boolean"},"knowledge_connections":{"type":"boolean"}}},"repositories":{"type":"array","items":{"type":"object","required":["id","slug","name"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}}}},"environments":{"type":"array","items":{"$ref":"#/components/schemas/VerifyPageEnvironment"}},"runs_pagination":{"$ref":"#/components/schemas/VerifyRunsPagination"},"counts":{"type":"object","required":["environments","ready_environments","active_runs","open_findings","scenarios"],"properties":{"environments":{"type":"integer","minimum":0},"ready_environments":{"type":"integer","minimum":0},"open_findings":{"type":"integer","minimum":0},"scenarios":{"$ref":"#/components/schemas/VerifyScenarioStateCounts"},"active_runs":{"type":"integer","minimum":0}}},"runs":{"type":"array","items":{"$ref":"#/components/schemas/ProjectRunSummary"}},"active_runs":{"type":"array","items":{"$ref":"#/components/schemas/ProjectRunSummary"}},"pull_requests":{"type":"array","items":{"$ref":"#/components/schemas/VerifyPullRequestSummary"}},"pull_request_launch_options":{"type":"array","items":{"$ref":"#/components/schemas/VerifyPullRequestLaunchOption"}}}},"VerifyRunSearch":{"type":"object","required":["runs"],"properties":{"runs":{"type":"array","items":{"$ref":"#/components/schemas/ProjectRunSummary"}}}},"VerifyRunUpdates":{"allOf":[{"$ref":"#/components/schemas/VerifyPage"}],"properties":{"pull_requests":{"type":"array","items":{"$ref":"#/components/schemas/VerifyPullRequestSummary"}}}},"VerifyScenarioStateCounts":{"type":"object","description":"Scenarios by the state of their latest execution. Timeouts count as failing.","required":["total","passing","failing","blocked","cancelled","running","not_run"],"properties":{"total":{"type":"integer","minimum":0},"passing":{"type":"integer","minimum":0},"failing":{"type":"integer","minimum":0},"blocked":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0},"running":{"type":"integer","minimum":0},"not_run":{"type":"integer","minimum":0}}},"VerifyRunsPagination":{"type":"object","required":["count","page","limit","last","previous","next","series"],"properties":{"count":{"type":"integer"},"page":{"type":"integer"},"limit":{"type":"integer"},"last":{"type":"integer"},"previous":{"type":"integer","nullable":true},"next":{"type":"integer","nullable":true},"series":{"type":"array","items":{"oneOf":[{"type":"integer"},{"type":"string"}]}}}},"VerifyPageEnvironment":{"type":"object","required":["id","repository_id","name","slug","status","updated_at","run_count","test_account"],"properties":{"id":{"type":"string"},"repository_id":{"type":"string","nullable":true},"name":{"type":"string"},"slug":{"type":"string"},"status":{"type":"string"},"connection":{"type":"string","enum":["managed","external"]},"target_url":{"type":"string","format":"uri","nullable":true},"target_kind":{"type":"string","nullable":true},"updated_at":{"type":"string","format":"date-time"},"run_count":{"type":"integer","minimum":0},"test_account":{"type":"string","nullable":true,"enum":["none","waiting","added","public",null],"description":"Whether the app's project has a test account ready to sign in (added), one awaiting the password its owner chose (waiting), only an anonymous visitor Persona (public), or none of these. Only the apps section (section=environments) reports it; other pages return null."},"active_revision":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/VerifyPageActiveRevision"}]}}},"VerifyPageActiveRevision":{"type":"object","required":["id","status","cleanup_state","ready_at","expires_at","retention_hours","blockers"],"properties":{"id":{"type":"string"},"status":{"type":"string"},"cleanup_state":{"type":"string"},"ready_at":{"type":"string","format":"date-time","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true},"retention_hours":{"type":"integer","minimum":1},"blockers":{"type":"array","maxItems":20,"items":{"type":"object","additionalProperties":true}}}},"VerifyFindingDetail":{"type":"object","required":["permissions","finding"],"properties":{"permissions":{"type":"object","required":["manage"],"properties":{"manage":{"type":"boolean"}}},"finding":{"$ref":"#/components/schemas/VerifyFindingRecord"},"reported_occurrence":{"description":"The Discovery or Deep Scan report behind the finding; null for scenario run findings","type":"object","nullable":true,"required":["exploration_id","source","source_title","web_path","observed_at","expected","reproduction_steps","url"],"properties":{"exploration_id":{"type":"string"},"source":{"type":"string","enum":["exploration","deep_scan"]},"source_title":{"type":"string"},"web_path":{"type":"string"},"observed_at":{"type":"string","format":"date-time"},"expected":{"type":"string","nullable":true},"reproduction_steps":{"type":"array","items":{"type":"string"}},"url":{"type":"string","nullable":true}}},"scenario_occurrences":{"type":"array","items":{"type":"object","required":["run_id","scenario_run_id","project_id","scenario_name","evidence_ids","observed_at"],"properties":{"run_id":{"type":"string"},"scenario_run_id":{"type":"string"},"project_id":{"type":"string"},"scenario_name":{"type":"string"},"evidence_ids":{"type":"array","items":{"type":"string"}},"observed_at":{"type":"string","format":"date-time"}}}}}},"VerifyFindingRecord":{"type":"object","required":["id","organization_id","repository_id","fingerprint","status","severity","confidence","title","safe_summary","locked","occurrence_count","first_seen_at","last_seen_at","created_at","updated_at","verification"],"properties":{"deferred_until":{"type":"string","format":"date-time","nullable":true},"verification":{"$ref":"#/components/schemas/VerifyFindingVerification"},"id":{"type":"string"},"organization_id":{"type":"string"},"repository_id":{"type":"string","nullable":true},"fingerprint":{"type":"string"},"status":{"$ref":"#/components/schemas/ProjectFindingStatus"},"severity":{"type":"string"},"confidence":{"type":"string"},"title":{"type":"string"},"safe_summary":{"type":"string"},"locked":{"type":"boolean","description":"True when the workspace's included scan reported this finding, it is not one of the free ones, and the workspace has not paid. Its title, summary and verification reason are empty."},"occurrence_count":{"type":"integer","minimum":0},"first_seen_at":{"type":"string","format":"date-time"},"last_seen_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"VerifyFindingVerification":{"description":"Whether a model that did not report the finding, and for a P0 or P1 Deep Scan finding an independent rerun, confirmed it. Null for findings recorded before findings were checked.","oneOf":[{"type":"object","required":["state","reason","verified_at"],"properties":{"state":{"type":"string","description":"pending while the model checks it, reproducing while its rerun runs, then confirmed, unverified or dismissed. Unverified means the check did not confirm it, could not decide or run, or a rerun did not see it again; dismissed means the screenshots show the expected result. Unverified and dismissed findings stay listed below confirmed ones.","enum":["pending","reproducing","confirmed","unverified","dismissed"]},"reason":{"type":["string","null"],"description":"What the check saw, in plain words."},"verified_at":{"type":["string","null"],"format":"date-time"}}},{"type":"null"}]},"VerifyFindingChangeLinks":{"type":"object","required":["items","truncated"],"properties":{"items":{"type":"array","maxItems":100,"items":{"$ref":"#/components/schemas/VerifyFindingChangeLink"}},"truncated":{"type":"boolean"}}},"VerifyFindingChangeLink":{"type":"object","required":["swarm_id","handoff_digest","local","changes","changes_truncated","reverification"],"properties":{"swarm_id":{"type":"string"},"handoff_digest":{"type":"string"},"local":{"type":"object","required":["phase","status","outcome"],"properties":{"phase":{"type":"string"},"status":{"type":"string"},"outcome":{"type":"string","nullable":true}}},"changes":{"type":"array","maxItems":100,"items":{"$ref":"#/components/schemas/VerifyFindingChange"}},"changes_truncated":{"type":"boolean"},"reverification":{"type":"object","required":["items","truncated"],"properties":{"items":{"type":"array","maxItems":100,"items":{"type":"object","required":["sweep_id","state","outcome","release_reference","finished_at"],"properties":{"sweep_id":{"type":"string"},"state":{"type":"string"},"outcome":{"type":"string","nullable":true},"release_reference":{"type":"string"},"finished_at":{"type":"string","format":"date-time","nullable":true}}}},"truncated":{"type":"boolean"}}}}},"VerifyFindingChange":{"type":"object","required":["number","title","submission","queue","landed","deployments"],"properties":{"number":{"type":"integer"},"title":{"type":"string"},"submission":{"type":"object","required":["state","submitted_at"],"properties":{"state":{"type":"string"},"submitted_at":{"type":"string","format":"date-time","nullable":true}}},"queue":{"type":"object","additionalProperties":true},"landed":{"type":"object","required":["status","landed_at","commit_id"],"properties":{"status":{"type":"string"},"landed_at":{"type":"string","format":"date-time","nullable":true},"commit_id":{"type":"string","nullable":true}}},"deployments":{"type":"object","additionalProperties":true}}},"VerifyFixHandoff":{"type":"object","required":["finding_id","swarm_id","handoff_digest","replayed"],"properties":{"finding_id":{"type":"string"},"swarm_id":{"type":"string","nullable":true},"handoff_digest":{"type":"string"},"replayed":{"type":"boolean"}}},"VerifyEnvironmentDetail":{"type":"object","required":["permissions","environment","revisions","test_accounts","cleanup","billing","network_connections","discovery_defaults","sign_in_check_available","agent_sign_up_available","managed_google_available","managed_google_email","included_deep_scan"],"properties":{"permissions":{"type":"object","required":["manage"],"properties":{"manage":{"type":"boolean"},"knowledge_connections":{"type":"boolean"}}},"environment":{"$ref":"#/components/schemas/VerifyEnvironment"},"billing":{"$ref":"#/components/schemas/BillingOnboarding"},"revisions":{"type":"array","items":{"$ref":"#/components/schemas/VerifyEnvironmentRevision"}},"test_accounts":{"$ref":"#/components/schemas/VerifyTestAccountCollection"},"network_connections":{"type":"array","items":{"$ref":"#/components/schemas/VerifyNetworkConnection"}},"cleanup":{"type":"array","items":{"$ref":"#/components/schemas/VerifyCleanupItem"}},"setup_discovery_id":{"type":"string","nullable":true,"description":"Existing discovery to resume after setup or Checkout, selected within this environment."},"onboarding_discovery":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/VerifyOnboardingDiscovery"}]},"first_run":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/VerifyFirstRun"}]},"discovery_defaults":{"$ref":"#/components/schemas/VerifyDiscoveryDefaults"},"explorations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"goal":{"type":"string"},"status":{"type":"string"},"created_at":{"type":"string"}},"required":["id","goal","status","created_at"]}},"pending_accounts":{"type":"array","description":"Credentials on a Composal address still waiting for the password the customer chose at signup.","items":{"$ref":"#/components/schemas/VerifyLoginAccount"}},"exploration_accounts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"login_method":{"type":"string"},"managed":{"type":"boolean"},"sign_in_verified":{"type":"boolean","description":"A sign-in check confirmed this account signs in with its current settings."},"selectable":{"type":"boolean","description":"Whether setup offers it among the saved accounts to pick. Not for a managed Google account, which setup offers on its own, or for a test user Verify's agent made that has not signed up to the app yet. One whose latest sign-up ended without signing up is left out of the list."},"sign_in_check":{"type":"object","nullable":true,"description":"The account's most recent sign-in check today, if any.","required":["id","outcome","reason"],"properties":{"id":{"type":"string"},"outcome":{"$ref":"#/components/schemas/VerifySignInOutcome"},"reason":{"type":"string","nullable":true,"description":"Why a waiting, blocked or stopped check needs the person, in the agent's words: its question or first blocker. Null otherwise."}}}},"required":["id","name","login_method","managed","sign_in_verified","selectable","sign_in_check"]}},"sign_in_check_available":{"type":"boolean","description":"Whether a test account's live sign-in check can run on this app."},"agent_sign_up_available":{"type":"boolean","description":"Whether the signed-in admin can have Verify's agent create a test user for the included Deep Scan (`POST .../first_run/test_user`). False once the agent stopped on something only the person can resolve."},"included_deep_scan":{"type":"boolean","description":"Whether this app still gets the signed-in user's included Deep Scan (verify_onboarding_deep_scan) once it has a test account or is marked as having no sign-in, so setup asks for one before anything else."},"managed_google_available":{"type":"boolean","description":"Whether the managed Google account can be offered for this app."},"managed_google_email":{"type":"string"}}},"VerifyTestAccountCollection":{"type":"object","required":["revision_id","target_available","accounts"],"properties":{"revision_id":{"type":"string","nullable":true},"target_available":{"type":"boolean"},"unavailable_reason":{"type":"string"},"accounts":{"type":"array","items":{"$ref":"#/components/schemas/VerifyTestAccount"}}}},"VerifyTestAccount":{"type":"object","required":["persona","role","tenant","configured","credentials"],"properties":{"persona":{"type":"string"},"role":{"type":"string"},"tenant":{"type":"string"},"configured":{"type":"boolean"},"credentials":{"type":"array","items":{"type":"object","required":["key","kind","configured","secret_id","source","pinned"],"properties":{"key":{"type":"string"},"kind":{"type":"string","enum":["literal","totp_seed"]},"configured":{"type":"boolean"},"secret_id":{"type":"string","nullable":true},"source":{"type":"string","nullable":true},"pinned":{"type":"boolean"}}}}}},"VerifyTestAccountUpdateInput":{"type":"object","additionalProperties":false,"required":["revision_id","credentials"],"properties":{"revision_id":{"type":"string"},"credentials":{"type":"object","minProperties":1,"additionalProperties":{"oneOf":[{"type":"string","minLength":1,"writeOnly":true},{"type":"object","additionalProperties":false,"required":["secret_id"],"properties":{"secret_id":{"type":"string"},"secret_version_id":{"type":"string"}}}]}}}},"VerifyEnvironmentCreateInput":{"type":"object","additionalProperties":false,"required":["slug"],"anyOf":[{"required":["target_url"]},{"required":["name"]}],"properties":{"project_id":{"type":"string","description":"Project slug or public ID. When omitted, creates a separate project for this environment."},"repository_id":{"type":"string","nullable":true},"slug":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"description":"Optional for a website target; defaults to its hostname. Required for a draft environment without a target URL."},"target_url":{"type":"string","format":"uri"},"target_kind":{"type":"string","enum":["production","staging","preview","development","custom"],"default":"staging"},"default_policy":{"type":"object","additionalProperties":true},"allowed_actions":{"type":"string","enum":["read_only","writes"],"description":"read_only only looks around; writes may create, change and delete data. Defaults to read_only for production and writes otherwise."},"imessage_number":{"type":"string","nullable":true,"description":"International destination number; blank or null clears it on an added environment."},"messaging_tester_number":{"type":"string","nullable":true,"description":"One configured tester number. Copied to each preview; may be overridden locally before preparation."}}},"VerifyEnvironmentRevisionImportInput":{"type":"object","additionalProperties":false,"required":["blueprint"],"properties":{"blueprint":{"type":"object","additionalProperties":true},"source_metadata":{"type":"object","additionalProperties":true},"dry_run":{"type":"boolean"}}},"VerifyBlueprintValidation":{"type":"object","required":["valid","digest"],"properties":{"valid":{"type":"boolean"},"digest":{"type":"string"}}},"VerifyEnvironment":{"type":"object","required":["id","organization_id","project_id","repository_id","hosted_app_id","active_revision_id","verify_network_connection_id","slug","name","status","connection","target_url","target_kind","allowed_actions","default_policy_json","created_at","updated_at","imessage_number","lock_version"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"project_id":{"type":"string","nullable":true,"description":"Owning project. Null only for unassigned legacy environments."},"repository_id":{"type":"string","nullable":true},"hosted_app_id":{"type":"string","nullable":true},"active_revision_id":{"type":"string","nullable":true},"verify_network_connection_id":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"connection":{"type":"string","enum":["managed","external"]},"target_url":{"type":"string","format":"uri","nullable":true},"target_kind":{"type":"string","nullable":true},"allowed_actions":{"type":"string","enum":["read_only","writes"]},"default_policy_json":{"type":"object","additionalProperties":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"imessage_number":{"type":"string","nullable":true,"description":"International destination number; blank or null clears it on an added environment."},"lock_version":{"type":"integer"}}},"VerifyEnvironmentRevision":{"type":"object","required":["id","organization_id","verify_environment_id","app_environment_id","app_release_id","runner_environment_revision_id","revision","schema_version","digest","status","cleanup_state","blueprint_json","resolved_manifest_json","source_metadata_json","safety_policy_json","retention_policy_json","validation_json","allowed_origins","ready_at","expires_at","revoked_at","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"verify_environment_id":{"type":"string"},"app_environment_id":{"type":"string","nullable":true},"app_release_id":{"type":"string","nullable":true},"runner_environment_revision_id":{"type":"string","nullable":true},"revision":{"type":"integer"},"schema_version":{"type":"integer"},"digest":{"type":"string"},"status":{"type":"string"},"cleanup_state":{"type":"string"},"blueprint_json":{"type":"object","additionalProperties":true},"resolved_manifest_json":{"type":"object","additionalProperties":true},"source_metadata_json":{"type":"object","additionalProperties":true},"safety_policy_json":{"type":"object","additionalProperties":true},"retention_policy_json":{"type":"object","additionalProperties":true},"validation_json":{"type":"object","additionalProperties":true},"allowed_origins":{"type":"array","items":{"type":"string"},"description":"Origins browser testers may visit, subdomains included. Links elsewhere are blocked."},"ready_at":{"type":"string","format":"date-time","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true},"revoked_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"VerifyCleanupItem":{"type":"object","required":["resource_kind","resource_reference","state","attempts","next_retry_at","manual_action_reason"],"properties":{"revision_id":{"type":"string"},"resource_kind":{"type":"string"},"resource_reference":{"type":"string"},"state":{"type":"string"},"attempts":{"type":"integer","minimum":0},"next_retry_at":{"type":"string","format":"date-time","nullable":true},"manual_action_reason":{"type":"string","nullable":true}}},"VerifyScenarioAttempt":{"type":"object","required":["id","organization_id","verify_sweep_id","agent_roder_run_id","supersedes_attempt_id","scenario_id","persona_id","browser_id","attempt_number","state","supervisor_attestation_json","result_json","timing_summary_json","deadline_at","started_at","finished_at","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"verify_sweep_id":{"type":"string"},"agent_roder_run_id":{"type":"string","nullable":true},"supersedes_attempt_id":{"type":"string","nullable":true},"scenario_id":{"type":"string"},"persona_id":{"type":"string"},"browser_id":{"type":"string","nullable":true},"attempt_number":{"type":"integer","minimum":1},"state":{"type":"string"},"supervisor_attestation_json":{"type":"object","additionalProperties":true},"result_json":{"type":"object","additionalProperties":true},"timing_summary_json":{"type":"object","additionalProperties":true},"deadline_at":{"type":"string","format":"date-time"},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"VerifyEvidenceItem":{"type":"object","required":["id","organization_id","verify_scenario_attempt_id","kind","content_type","byte_size","checksum","redaction_state","access_state","captured_at","retention_expires_at","deleted_at","download_url","preview_url","created_at","updated_at"],"properties":{"recording":{"type":["object","null"],"required":["start_ms","duration_ms"],"properties":{"recording_id":{"type":"string"},"start_ms":{"type":"number","minimum":0},"duration_ms":{"type":"number","exclusiveMinimum":0}}},"id":{"type":"string"},"organization_id":{"type":"string"},"verify_scenario_attempt_id":{"type":"string","nullable":true},"kind":{"type":"string"},"content_type":{"type":"string"},"byte_size":{"type":"integer","minimum":0},"checksum":{"type":"string"},"redaction_state":{"type":"string"},"access_state":{"type":"string"},"captured_at":{"type":"string","format":"date-time"},"retention_expires_at":{"type":"string","format":"date-time"},"deleted_at":{"type":"string","format":"date-time","nullable":true},"download_url":{"type":"string","nullable":true},"preview_url":{"type":"string","nullable":true},"readable":{"type":"boolean","description":"Retained, not deleted, and redacted where needed, so it can be downloaded."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"verify_exploration_agent_id":{"type":"string","nullable":true}}},"VerifyMediaRecording":{"type":"object","required":["video_groups","webp_segments"],"properties":{"video_groups":{"$ref":"#/components/schemas/ScenarioRunRecording/properties/video_groups"},"webp_segments":{"$ref":"#/components/schemas/ScenarioRunRecording/properties/videos"}}},"VerifyEvidenceItemMetadata":{"type":"object","required":["id","organization_id","verify_scenario_attempt_id","kind","content_type","byte_size","checksum","redaction_state","access_state","captured_at","retention_expires_at","deleted_at","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"verify_scenario_attempt_id":{"type":"string","nullable":true},"kind":{"type":"string"},"content_type":{"type":"string"},"byte_size":{"type":"integer","minimum":0},"checksum":{"type":"string"},"redaction_state":{"type":"string"},"access_state":{"type":"string"},"captured_at":{"type":"string","format":"date-time"},"retention_expires_at":{"type":"string","format":"date-time"},"deleted_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"verify_exploration_agent_id":{"type":"string","nullable":true}}},"VerifyMetricSummary":{"type":"object","required":["query_id","kind","scope","window_started_at","window_finished_at","series_count","sample_count","rejected_series_count","comparison","truncated"],"properties":{"query_id":{"type":"string"},"kind":{"type":"string"},"scope":{"type":"object","additionalProperties":true},"window_started_at":{"type":"string","format":"date-time"},"window_finished_at":{"type":"string","format":"date-time"},"series_count":{"type":"integer","minimum":0},"sample_count":{"type":"integer","minimum":0},"rejected_series_count":{"type":"integer","minimum":0},"comparison":{"type":"object","additionalProperties":true},"truncated":{"type":"boolean"}}},"User":{"type":"object","required":["id","email","name","picture_url"],"properties":{"id":{"type":"string"},"email":{"type":"string","format":"email"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true},"superadmin":{"type":"boolean"}}},"AppPromotion":{"type":"object","required":["desktop","mobile","ios_testing_requested","android_testing_requested"],"properties":{"desktop":{"type":"boolean","description":"Whether to offer the desktop app."},"mobile":{"type":"boolean","description":"Whether to offer mobile testing."},"ios_testing_requested":{"type":"boolean"},"android_testing_requested":{"type":"boolean"}}},"AuthSession":{"allOf":[{"$ref":"#/components/schemas/User"},{"type":"object","required":["commit_author_email","analytics_internal","app_promotion","github_prs_authored_by_change_author","github_pr_user_authorization_connected","github_pr_user_authorization_login","organizations","active_organization","pending_organization_invitation_count","pending_organization_invitation_count_label","enabled_features"],"properties":{"openai_sign_in_enabled":{"type":"boolean"},"openai_sign_in_connected":{"type":"boolean"},"impersonation":{"type":["object","null"],"required":["operator_email","user_email"],"properties":{"operator_email":{"type":"string","format":"email"},"user_email":{"type":"string","format":"email"}}},"app_promotion":{"$ref":"#/components/schemas/AppPromotion"},"analytics_distinct_id":{"type":"string"},"analytics_internal":{"type":"boolean","description":"Staff, team or test account; its product analytics are marked internal."},"next_path":{"type":"string","description":"Present on a sign-in that created the person's first workspace; its setup page, where they go next."},"commit_author_email":{"type":"string","format":"email"},"github_prs_authored_by_change_author":{"type":"boolean"},"github_pr_user_authorization_connected":{"type":"boolean"},"github_pr_user_authorization_login":{"type":"string","nullable":true},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationSummary"}},"active_organization":{"oneOf":[{"$ref":"#/components/schemas/OrganizationSummary"},{"type":"null"}]},"pending_organization_invitation_count":{"type":"integer","minimum":0},"pending_organization_invitation_count_label":{"type":"string"},"enabled_features":{"type":"array","items":{"type":"string","enum":["deployments_ui","sites_ui","artefacts_ui","signals_ui","registry_ui","secrets_ui","repository_git_backend_experiment","hosting_cdn_ui","billing","verify_ui","verify_computer_use_ui","verify_product_map","clawder_integrations","verify_chrome_recorder_ui","verify_pr_scenario_writing","persistent_agents","agents_only_ui","all_agents_ui","drilldown_sidebar_ui","source_ui"]}},"api_token":{"type":"string"},"api_base_url":{"type":"string","format":"uri"}}}]},"OrganizationMember":{"type":"object","required":["id","role","is_self","user","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"role":{"type":"string","enum":["owner","admin","member"]},"is_self":{"type":"boolean"},"user":{"$ref":"#/components/schemas/User"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"OrganizationInvitation":{"type":"object","required":["id","email","role","status","invite_url","organization","invited_by_user","accepted_by_user","expires_at","expires_at_label","accepted_at","revoked_at","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"email":{"type":"string","format":"email"},"role":{"type":"string","enum":["owner","admin","member"]},"status":{"type":"string","enum":["pending","accepted","revoked","expired"]},"invite_url":{"type":"string","nullable":true},"organization":{"type":"object","required":["id","slug","name","logo_url"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"logo_url":{"type":"string","nullable":true}}},"invited_by_user":{"oneOf":[{"$ref":"#/components/schemas/User"},{"type":"null"}]},"accepted_by_user":{"oneOf":[{"$ref":"#/components/schemas/User"},{"type":"null"}]},"expires_at":{"type":"string","format":"date-time","nullable":true},"expires_at_label":{"type":"string","nullable":true},"accepted_at":{"type":"string","format":"date-time","nullable":true},"revoked_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true},"email_delivery_status":{"type":"string"}}},"ImageUploadPayload":{"type":"object","required":["image"],"properties":{"image":{"type":"string","format":"binary"}}},"OrganizationCreatePayload":{"type":"object","required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string","description":"IANA timezone; defaults to UTC"}}},"OrganizationUpdatePayload":{"type":"object","properties":{"google_workspace_domain":{"type":"string","nullable":true,"description":"Owners can approve their verified Google Workspace domain, or send null to disable automatic joining."},"sandbox_region":{"type":"string","enum":["us-was-1","us-pdx-1","eu-lon-1","eu-fra-1","auto"]},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string","description":"IANA timezone such as America/New_York"},"github_prs_authored_by_change_author":{"type":"boolean"},"verify_pr_scenario_writing_enabled":{"type":"boolean"},"shared_agent_personal_accounts_enabled":{"type":"boolean","description":"Whether a shared agent may use one person's account for everyone who chats with it."}}},"OrganizationProductActivationPayload":{"type":"object","required":["product"],"properties":{"product":{"type":"string","enum":["transcripts","vcs"]}}},"OrganizationMemberUpdatePayload":{"type":"object","required":["role"],"properties":{"role":{"type":"string","enum":["owner","admin","member"]}}},"OrganizationInvitationCreatePayload":{"type":"object","required":["email","role"],"properties":{"email":{"type":"string","format":"email"},"role":{"type":"string","enum":["owner","admin","member"]}}},"ActiveOrganizationPayload":{"type":"object","required":["organization_id"],"properties":{"organization_id":{"type":"string"}}},"CliLoginOrganization":{"type":"object","required":["id","slug","name"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}}},"CliLoginCompletePayload":{"type":"object","required":["login_id"],"properties":{"login_id":{"type":"string"},"organization_id":{"type":"string","description":"Public ID of the organization the CLI saves as its default."}}},"OrganizationResourcePagination":{"type":"object","required":["limit"],"properties":{"limit":{"type":"integer"},"next":{"type":"string"}}},"PinnedSkillReference":{"type":"object","additionalProperties":false,"required":["repository_id","revision","path","sha256"],"properties":{"repository_id":{"type":"string"},"revision":{"type":"string","description":"Original immutable Git commit SHA.","pattern":"^[0-9a-f]{40}$"},"path":{"type":"string"},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"files":{"type":"array","maxItems":4,"items":{"$ref":"#/components/schemas/PinnedSkillFile"}}}},"PinnedSkillFile":{"type":"object","additionalProperties":false,"required":["path","sha256"],"properties":{"path":{"type":"string"},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"}}},"DedicatedOutboundIpAddresses":{"type":"array","description":"Public outbound IPs for the enabled operator-managed assignment; empty when no assignment is enabled.","items":{"type":"string"}},"ServiceNetworkSummary":{"description":"How a service is reachable, counted rather than listed. Only live instances are counted: a terminated one answers on nothing.","type":"object","required":["endpoints","private_addresses","network_peers"],"properties":{"endpoints":{"type":"integer","minimum":0},"private_addresses":{"type":"integer","minimum":0},"network_peers":{"type":"integer","minimum":0}}},"DeploymentScopeHealth":{"description":"The rolled-up state of the selected scope. `control_state` is the one word the dashboard leads with, and which signal wins is a deployment rule rather than something to re-derive from the counts beside it.","type":"object","required":["control_state","running_instances","total_instances","unhealthy_instances","active_rollouts","active_deployments","failed_deployments"],"properties":{"control_state":{"type":"string","enum":["degraded","deploying","healthy","idle"]},"running_instances":{"type":"integer","minimum":0},"total_instances":{"type":"integer","minimum":0},"unhealthy_instances":{"type":"integer","minimum":0},"active_rollouts":{"type":"integer","minimum":0},"active_deployments":{"type":"integer","minimum":0},"failed_deployments":{"type":"integer","minimum":0}}},"DeploymentScopeNomad":{"description":"The Nomad footprint of the selected scope, deduplicated.","type":"object","required":["allocation_count","job_count","deployment_count","datacenters","task_names"],"properties":{"allocation_count":{"type":"integer","minimum":0},"job_count":{"type":"integer","minimum":0},"deployment_count":{"type":"integer","minimum":0},"datacenters":{"type":"array","items":{"type":"string"}},"task_names":{"type":"array","items":{"type":"string"}}}},"ServiceReleaseCaption":{"description":"The two fields a lane or card prints for its newest release, not the release resource: that one answers a release page's questions and costs several reads per row to build.","type":"object","required":["version","status"],"properties":{"version":{"type":"string"},"status":{"type":"string"}}},"DetailsInstanceRef":{"description":"One allocation, named so the panel can identify it.","type":"object","required":["id","label","status"],"properties":{"id":{"type":"string"},"label":{"type":"string"},"status":{"type":"string"}}},"DetailsEnvironmentView":{"description":"One stage of one service. `status` and `updated_label` are answers rather than inputs — which of the rollout, release, desired state and stage decides the badge is applied once, in Rails.","type":"object","required":["environment","status","desired_version","instance_count","updated_label","instances"],"properties":{"environment":{"$ref":"#/components/schemas/AppEnvironment"},"status":{"type":"string"},"desired_version":{"type":"string","nullable":true},"instance_count":{"type":"integer","minimum":0},"updated_label":{"type":"string","nullable":true},"instances":{"type":"array","items":{"$ref":"#/components/schemas/DetailsInstanceRef"}}}},"DetailsServiceView":{"description":"One lane on the Details dashboard.","type":"object","required":["service","status","runtime_summary","capacity","network","latest_release","latest_deployment","signal","endpoints","environment_views"],"properties":{"service":{"$ref":"#/components/schemas/AppService"},"status":{"type":"string"},"runtime_summary":{"$ref":"#/components/schemas/EnvironmentRuntimeSummary"},"capacity":{"$ref":"#/components/schemas/ServiceCapacity"},"network":{"$ref":"#/components/schemas/ServiceNetworkSummary"},"latest_release":{"oneOf":[{"$ref":"#/components/schemas/ServiceReleaseCaption"},{"type":"null"}]},"latest_deployment":{"oneOf":[{"type":"object","required":["status","source_ref","commit_sha"],"properties":{"status":{"type":"string"},"source_ref":{"type":"string","nullable":true},"commit_sha":{"type":"string","nullable":true}}},{"type":"null"}]},"signal":{"type":"object","required":["value","detail"],"properties":{"value":{"type":"string"},"detail":{"type":"string","nullable":true}}},"endpoints":{"type":"array","items":{"type":"string"}},"environment_views":{"type":"array","items":{"$ref":"#/components/schemas/DetailsEnvironmentView"}}}},"DetailsDeploymentRow":{"description":"The queue table's row and the action bar's subject. Not AppDeployment, which answers a deployment page's questions and reads its operation once per row.","type":"object","required":["id","app_service_id","app_environment_id","status","is_rollback","source_ref","commit_sha","updated_label"],"properties":{"id":{"type":"string"},"app_service_id":{"type":"string"},"app_environment_id":{"type":"string"},"status":{"type":"string"},"is_rollback":{"type":"boolean"},"source_ref":{"type":"string","nullable":true},"commit_sha":{"type":"string","nullable":true},"updated_label":{"type":"string","nullable":true}}},"DetailsReleaseRow":{"description":"The release table's row, with its newest rollout folded in. Not AppRelease, which loads the release's command execution, its rollouts and its service once per row to answer questions this table does not ask.","type":"object","required":["id","app_service_id","app_environment_id","version","status","rollout","nomad_job_id","nomad_deployment_id","nomad_eval_id","rendered_job_spec_digest","updated_label"],"properties":{"id":{"type":"string"},"app_service_id":{"type":"string"},"app_environment_id":{"type":"string"},"version":{"type":"string"},"status":{"type":"string"},"rollout":{"oneOf":[{"type":"object","required":["strategy","target_percentage","status"],"properties":{"strategy":{"type":"string"},"target_percentage":{"type":"integer","minimum":0},"status":{"type":"string"}}},{"type":"null"}]},"nomad_job_id":{"type":"string","nullable":true},"nomad_deployment_id":{"type":"string","nullable":true},"nomad_eval_id":{"type":"string","nullable":true},"rendered_job_spec_digest":{"type":"string","nullable":true},"updated_label":{"type":"string","nullable":true}}},"MetricsServiceView":{"description":"One card on the metrics grid. `status` is the service's rolled-up state, the same projection the architecture canvas badges its nodes with.","type":"object","required":["service","status","runtime_summary","capacity","network","latest_release"],"properties":{"service":{"$ref":"#/components/schemas/AppService"},"status":{"type":"string"},"runtime_summary":{"$ref":"#/components/schemas/EnvironmentRuntimeSummary"},"capacity":{"$ref":"#/components/schemas/ServiceCapacity"},"network":{"$ref":"#/components/schemas/ServiceNetworkSummary"},"latest_release":{"oneOf":[{"$ref":"#/components/schemas/ServiceReleaseCaption"},{"type":"null"}]}}},"DeploymentMetricsSummary":{"description":"The counter strip above the metrics grid. Each figure is a total for the selected scope, counted in SQL rather than measured against a recent window.","type":"object","required":["service_count","environment_count","desired_state_count","deployment_count","active_release_count","in_flight_release_count","running_instance_count","unhealthy_instance_count","nomad_job_count","nomad_deployment_count","nomad_eval_count","nomad_allocation_count"],"properties":{"service_count":{"type":"integer","minimum":0},"environment_count":{"type":"integer","minimum":0},"desired_state_count":{"type":"integer","minimum":0},"deployment_count":{"type":"integer","minimum":0},"active_release_count":{"type":"integer","minimum":0},"in_flight_release_count":{"type":"integer","minimum":0},"running_instance_count":{"type":"integer","minimum":0},"unhealthy_instance_count":{"type":"integer","minimum":0},"nomad_job_count":{"type":"integer","minimum":0},"nomad_deployment_count":{"type":"integer","minimum":0},"nomad_eval_count":{"type":"integer","minimum":0},"nomad_allocation_count":{"type":"integer","minimum":0}}},"ArchitectureServiceView":{"description":"One node on the architecture canvas. Everything but `desired_state` is a fact about the service across every stage; `desired_state` is its state in the stage the workspace selected, which is where the node's image tag comes from.","type":"object","required":["service","status","runtime_summary","capacity","region_footprints","nomad","rollout","desired_state","latest_release","deployed_url"],"properties":{"service":{"$ref":"#/components/schemas/AppService"},"status":{"type":"string"},"runtime_summary":{"$ref":"#/components/schemas/EnvironmentRuntimeSummary"},"capacity":{"$ref":"#/components/schemas/ServiceCapacity"},"region_footprints":{"type":"array","items":{"$ref":"#/components/schemas/ServiceRegionFootprint"}},"nomad":{"type":"object","required":["namespace","region","datacenter","latest_job_id"],"properties":{"namespace":{"type":"string"},"region":{"type":"string","nullable":true},"datacenter":{"type":"string","nullable":true},"latest_job_id":{"type":"string","nullable":true}}},"rollout":{"oneOf":[{"type":"object","required":["strategy","regions_in_progress","waiting_on"],"properties":{"strategy":{"type":"string","enum":["health_gated","burst"]},"regions_in_progress":{"type":"integer","minimum":0},"waiting_on":{"type":"string","nullable":true}}},{"type":"null"}]},"desired_state":{"oneOf":[{"$ref":"#/components/schemas/AppDesiredState"},{"type":"null"}]},"latest_release":{"oneOf":[{"type":"object","required":["id","version","source_ref","status"],"properties":{"id":{"type":"string"},"version":{"type":"string"},"source_ref":{"type":"string","nullable":true},"status":{"type":"string"}}},{"type":"null"}]},"deployed_url":{"type":"string","nullable":true}}},"DeploymentOrganizationMap":{"description":"Every hosted app, static site, datacenter and edge region in the organization, with the placement topology and live counts each service is running. Drawn by the Architecture view when no app is selected, and by the Sites view.","type":"object","required":["datacenters","edge_regions","apps","static_sites"],"properties":{"datacenters":{"type":"array","items":{"type":"object","required":["code","name","nomad_datacenter"],"properties":{"code":{"type":"string"},"name":{"type":"string"},"nomad_datacenter":{"type":"string"}}}},"edge_regions":{"type":"array","items":{"type":"object","required":["id","slug","display_name","status","location_code"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"display_name":{"type":"string"},"status":{"type":"string"},"location_code":{"type":"string","nullable":true}}}},"apps":{"type":"array","items":{"type":"object","required":["id","slug","name","status","repository_slug","health","services","data_resources","storage_resources","service_bindings"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"repository_slug":{"type":"string"},"health":{"type":"object","required":["running","desired","degraded","failed"],"properties":{"running":{"type":"integer"},"desired":{"type":"integer"},"degraded":{"type":"integer"},"failed":{"type":"integer"}}},"services":{"type":"array","items":{"type":"object","required":["id","name","kind","status","publicly_accessible","protection","exposure","datacenter_codes","health","placements","urls","internal_hostname"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"publicly_accessible":{"type":"boolean"},"protection":{"type":"string"},"exposure":{"type":"string","enum":["exposed","org_protected","private"]},"datacenter_codes":{"type":"array","items":{"type":"string"}},"health":{"type":"object","required":["running","desired"],"properties":{"running":{"type":"integer"},"desired":{"type":"integer"}}},"placements":{"type":"array","items":{"type":"object","required":["id","environment_id","environment_name","mode","rollout_strategy","replicas_per_region","total_desired","total_live","targets"],"properties":{"id":{"type":"string"},"environment_id":{"type":"string"},"environment_name":{"type":"string"},"mode":{"type":"string","enum":["single_region","multi_region"]},"rollout_strategy":{"type":"string","enum":["health_gated","burst"]},"replicas_per_region":{"type":"integer","minimum":0},"total_desired":{"type":"integer","minimum":0},"total_live":{"type":"integer","minimum":0},"targets":{"type":"array","items":{"type":"object","required":["id","location_id","location_code","location_name","position","desired","live","status"],"properties":{"id":{"type":"string"},"location_id":{"type":"string"},"location_code":{"type":"string"},"location_name":{"type":"string"},"position":{"type":"integer","minimum":0},"desired":{"type":"integer","minimum":0},"live":{"type":"integer","minimum":0},"status":{"type":"string"}}}}}}},"urls":{"type":"array","items":{"type":"string"}},"internal_hostname":{"type":"string"}}}},"data_resources":{"type":"array","items":{"type":"object","required":["id","name","kind","engine","status","region"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"engine":{"type":"string"},"status":{"type":"string"},"region":{"type":"string","nullable":true}}}},"storage_resources":{"type":"array","items":{"type":"object","required":["id","name","kind","status","region"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"region":{"type":"string","nullable":true}}}},"service_bindings":{"type":"array","items":{"type":"object","required":["id","source_service_id","target_kind","target_id","binding_type"],"properties":{"id":{"type":"string"},"source_service_id":{"type":"string"},"target_kind":{"type":"string"},"target_id":{"type":"string"},"binding_type":{"type":"string"}}}}}}},"static_sites":{"type":"array","items":{"type":"object","required":["id","slug","name","status","cdn_hostname","default_url","domain_count","has_active_deployment"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"cdn_hostname":{"type":"string"},"default_url":{"type":"string"},"domain_count":{"type":"integer"},"has_active_deployment":{"type":"boolean"}}}}}},"DeploymentFilters":{"type":"object","description":"The option lists the deployments page's app, service and stage pickers narrow by. `services` and `environments` are empty until an app is selected.","required":["apps","services","environments"],"properties":{"apps":{"type":"array","items":{"$ref":"#/components/schemas/HostedApp"}},"services":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"environments":{"type":"array","items":{"type":"object","required":["id","slug","name"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}}}}}},"DeploymentTarget":{"type":"object","description":"A service and environment the selected app can deploy to: one entry per placement whose scope still has an active desired state. `source_ref` is the environment's branch pattern when it names exactly one branch, and null when it is a wildcard. `redeploy` is true once that scope has been deployed to before.","required":["service_id","service_name","environment_id","environment_name","placement_id","region_count","replicas_per_region","rollout_strategy","source_ref","auto_deploy","redeploy"],"properties":{"service_id":{"type":"string"},"service_name":{"type":"string"},"environment_id":{"type":"string"},"environment_name":{"type":"string"},"placement_id":{"type":"string"},"region_count":{"type":"integer","minimum":0},"replicas_per_region":{"type":"integer","minimum":0},"rollout_strategy":{"type":"string","enum":["health_gated","burst"]},"source_ref":{"type":"string","nullable":true},"auto_deploy":{"type":"boolean"},"redeploy":{"type":"boolean"}}},"PersistentAgentAvatarStyle":{"type":"string","enum":["chibi","anime","globby","emoji","animal","dino"]},"PersistentAgentAvatarConfiguration":{"type":"object","properties":{"persona":{"$ref":"#/components/schemas/PersistentAgentPersona"},"styles":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/PersistentAgentAvatarStyle"},"name":{"type":"string"},"description":{"type":"string"}},"required":["id","name","description"],"additionalProperties":false}},"selected_style":{"$ref":"#/components/schemas/PersistentAgentAvatarStyle"},"description":{"type":"string","maxLength":1200},"can_generate":{"type":"boolean"},"can_edit":{"type":"boolean"},"failure_reason":{"description":"Why the last generation stopped, while it is failed or uncertain","anyOf":[{"type":"string","enum":["not_configured","declined","provider_error","invalid_image","unavailable","interrupted"]},{"type":"null"}]}},"required":["persona","styles","selected_style","description","can_generate","can_edit","failure_reason"],"additionalProperties":false},"PersistentAgentPersona":{"type":"object","properties":{"status":{"type":"string","enum":["pending","generating","publishing","ready","failed","uncertain"]},"generation_id":{"type":"string","pattern":"^[0-9a-f]{64}$"},"colour":{"type":"string","pattern":"^#[0-9A-F]{6}$"},"personality":{"type":"string","maxLength":128},"can_retry":{"type":"boolean"},"style":{"$ref":"#/components/schemas/PersistentAgentAvatarStyle"},"sprite":{"$ref":"#/components/schemas/PersistentAgentSprite"},"image_digest":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}]}},"required":["status","generation_id","colour","personality","image_digest","can_retry"],"additionalProperties":false},"PersistentAgentSprite":{"type":"object","properties":{"schema":{"type":"integer","const":1},"content_type":{"type":"string","const":"image/webp"},"width":{"type":"integer","minimum":1536,"maximum":9216},"height":{"type":"integer","enum":[260,390,520,1040]},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"columns":{"type":"integer","minimum":8,"maximum":48},"rows":{"type":"integer","const":5},"frame_width":{"type":"integer","enum":[48,72,96,192]},"frame_height":{"type":"integer","enum":[52,78,104,208]},"states":{"type":"object","properties":{"idle":{"$ref":"#/components/schemas/PersistentAgentSpriteState"},"happy":{"$ref":"#/components/schemas/PersistentAgentSpriteState"},"spin":{"$ref":"#/components/schemas/PersistentAgentSpriteState"},"thinking":{"$ref":"#/components/schemas/PersistentAgentSpriteState"},"working":{"$ref":"#/components/schemas/PersistentAgentSpriteState"}},"required":["idle","happy","spin","thinking","working"],"additionalProperties":false}},"required":["schema","content_type","width","height","sha256","columns","rows","frame_width","frame_height","states"],"additionalProperties":false},"PersistentAgentSpriteState":{"type":"object","properties":{"row":{"type":"integer","minimum":0,"maximum":4},"frames":{"type":"integer","minimum":8,"maximum":48},"duration_ms":{"type":"number","minimum":40,"maximum":1000,"description":"Duration of each frame in milliseconds; interpolated states use 1000/24"}},"required":["row","frames","duration_ms"],"additionalProperties":false},"PersistentAgentClawderUnavailable":{"type":"object","required":["error","code","correlation_id","retry_after"],"properties":{"error":{"type":"string"},"code":{"type":"string","enum":["deploy_draining","gateway_starting","transport_timeout","gateway_failed"]},"correlation_id":{"type":"string"},"retry_after":{"type":"integer","minimum":1}}},"PersistentAgentClawderTeammate":{"type":"object","required":["id","slug","name","avatar"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"avatar":{"$ref":"#/components/schemas/PersistentAgentAvatar"},"persona":{"anyOf":[{"$ref":"#/components/schemas/PersistentAgentPersona"},{"type":"null"}]}}},"PersistentAgentWorkRepository":{"type":"object","properties":{"repository_id":{"type":"string"},"permission":{"type":"string","enum":["read","write"]},"write_branches":{"description":"Exact branches allowed for writes. Empty or omitted allows all branches, subject to exclude_default_branch and normal repository protections.","type":"array","items":{"type":"string"},"maxItems":32},"exclude_default_branch":{"type":"boolean","description":"With write permission, exclude the current default branch. Defaults to false."}},"required":["repository_id","permission"],"additionalProperties":false},"PersistentAgentProviderEventBinding":{"type":"object","description":"Saved provider source draft. Owner consent is separate and the receiving adapter remains unavailable for activation.","additionalProperties":false,"required":["type","id","subscription_id","max_events_per_day","conversation_id","text"],"properties":{"type":{"type":"string","enum":["provider_event"]},"id":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,80}$"},"subscription_id":{"type":"string","pattern":"^agent_trigger_subscription_[a-zA-Z0-9]{1,100}$"},"max_events_per_day":{"type":"integer","minimum":1,"maximum":1000},"conversation_id":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"},"text":{"type":"string","minLength":1,"maxLength":32768}}},"PersistentAgentPlatformEventBinding":{"type":"object","additionalProperties":false,"required":["type","id","repository_id","event_types","max_events_per_day","conversation_id","text"],"properties":{"type":{"type":"string","enum":["platform_event"]},"id":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,80}$"},"repository_id":{"type":"string","pattern":"^repo_[a-zA-Z0-9]{1,100}$"},"event_types":{"type":"array","minItems":1,"maxItems":18,"uniqueItems":true,"items":{"type":"string","enum":["change.opened","change.code_updated","change.landed","github.push","github.pull_request","github.issues","github.issue_comment","github.pull_request_review","github.pull_request_review_comment","github.check_run","github.check_suite","github.status","github.workflow_run","github.release","github.discussion","github.discussion_comment","github.create","github.delete"]}},"max_events_per_day":{"type":"integer","minimum":1,"maximum":1000},"conversation_id":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"},"text":{"type":"string","minLength":1,"maxLength":32768}}},"PersistentAgentWebhookBinding":{"type":"object","description":"Saved webhook draft. Endpoint consent and ingress adapters are not yet qualified for activation.","properties":{"type":{"type":"string","enum":["webhook"]},"id":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,80}$"},"endpoint_id":{"type":"string","pattern":"^webhook_[a-zA-Z0-9_-]{16,96}$","description":"Non-secret server-owned endpoint reference; never grants authority."},"conversation_id":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"},"text":{"type":"string","minLength":1,"maxLength":32768},"event_types":{"type":"array","minItems":1,"maxItems":16,"uniqueItems":true,"items":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,79}$"}},"max_events_per_day":{"type":"integer","minimum":1,"maximum":1000}},"required":["type","id","endpoint_id","conversation_id","text","event_types","max_events_per_day"],"additionalProperties":false},"PersistentAgentAvatar":{"type":["string","null"],"maxLength":64,"description":"Emoji or up to two visible grapheme clusters, at most 64 UTF-8 bytes, without control or bidi override characters. Null selects the default icon. Omission preserves legacy configuration bytes."},"PersistentAgentSummary":{"type":"object","properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"controlling_user_id":{"type":"string"},"name":{"type":"string"},"runtime_version":{"type":"string","enum":["v2"],"description":"Immutable execution runtime selected at creation."},"provisioning":{"anyOf":[{"$ref":"#/components/schemas/PersistentAgentClawderProvisioning"},{"type":"null"}]},"preview":{"anyOf":[{"type":"null"},{"type":"object","properties":{"text":{"type":"string","maxLength":160},"conversation_id":{"type":"string","maxLength":128}},"required":["text","conversation_id"],"additionalProperties":false}]},"persona":{"anyOf":[{"$ref":"#/components/schemas/PersistentAgentPersona"},{"type":"null"}]},"avatar":{"$ref":"#/components/schemas/PersistentAgentAvatar"},"slug":{"type":"string"},"status":{"type":"string","enum":["draft","active","paused","archived"]},"configuration_revision":{"type":"integer"},"url_slug":{"type":"string","description":"Stable organization-scoped browser name for /ORG/agent/NAME. Legacy slug and public IDs remain accepted."},"visibility":{"type":"string","enum":["private","organization"]},"sharing_version":{"type":"integer","minimum":0},"sharing_fixed":{"type":"boolean","description":"Project agents have a fixed audience and cannot change visibility."},"team_role":{"type":"string","enum":["manager","collaborator"],"description":"What teammates may do once the agent is shared with the team. Collaborators chat with it; managers also change its apps, secrets and settings. The owner and named managers always manage it."},"can_manage_sharing":{"type":"boolean"},"can_delete":{"type":"boolean","description":"Whether this viewer may delete this v2 agent."},"can_manage":{"type":"boolean"},"local_agent_control_available":{"type":"boolean","description":"Whether this organization exposes paired local coding-agent control. Every operation requires current owner access or explicit requester-bound agent consent."},"coordination_available":{"type":"boolean","description":"Durable task controls remain available even when native conversation history is unavailable."},"has_unread_updates":{"type":"boolean"},"attention":{"type":["string","null"],"enum":["question","approval","setup_failed","run_failed",null],"description":"Whether this agent waits on its viewer, decided from its provisioning, decisions awaiting an answer, the outcome of its last reported run and its own projected last reply. Null when nothing waits or the agent is not active. Clients map it to labels and never classify messages or run status themselves."},"last_reply_at":{"type":["string","null"],"format":"date-time","description":"When the agent's latest projected reply arrived, for grouping recent replies. Null before the first reply, and while the preview is the viewer's own input."},"preview_received_at":{"type":["string","null"],"format":"date-time","description":"When a newer canonical conversation preview was first projected. Older previews may be undated; this is not task completion time."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","organization_id","controlling_user_id","name","slug","status","configuration_revision","can_manage","has_unread_updates","attention","last_reply_at","created_at","updated_at"],"additionalProperties":true},"PersistentAgentDetail":{"allOf":[{"$ref":"#/components/schemas/PersistentAgentSummary"},{"type":"object","properties":{"configuration":{"anyOf":[{"$ref":"#/components/schemas/PersistentAgentSavedConfiguration"},{"type":"null"}]},"configuration_version":{"type":["string","null"],"pattern":"^[0-9a-f]{40}$","description":"Opaque version token. Echo the version returned by the server; null denotes an empty stream."},"lifecycle_version":{"type":["string","null"],"pattern":"^[0-9a-f]{40}$","description":"Opaque version token. Echo the version returned by the server; null denotes an empty stream."},"direct_chat_available":{"type":"boolean","description":"Advisory availability of direct V1 chat. The chat endpoint rechecks current authority."},"model_change_action":{"type":["string","null"],"enum":["save","apply",null],"description":"Advisory composer action. Save retains lifecycle state; apply offers a guarded model-only activation that rechecks unfinished tasks and accepted helpers at publication. Null means model settings are unavailable."},"lifecycle_actions":{"type":"array","maxItems":4,"uniqueItems":true,"description":"Currently authorized lifecycle actions for the saved revision and observed state. Publication rechecks current authority and the expected version.","items":{"type":"string","enum":["activate","pause","resume","archive"]}},"setup_pending":{"type":"boolean"},"can_queue_input":{"type":"boolean","description":"Current V2 authority to admit a durable input independently of native readiness."},"can_edit_configuration":{"type":"boolean"},"can_reconcile_save":{"type":"boolean","description":"May reconcile an identical previously accepted save; this does not authorize new configuration edits."},"managers":{"type":"array","description":"Teammates named as managers beside the owner. They manage the agent and its sharing whatever teammates may do.","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false}},"can_name_managers":{"type":"boolean","description":"Whether the viewer may name managers now. True for an owner or named manager of an agent shared with the team; search whom to name with the manager_choices endpoint."}},"required":["configuration","configuration_version","lifecycle_version","lifecycle_actions","setup_pending","can_edit_configuration","can_reconcile_save"],"additionalProperties":true}]},"PersistentAgentPagination":{"type":"object","properties":{"limit":{"type":"integer"},"next":{"type":["string","null"]}},"required":["limit"],"additionalProperties":false},"PersistentAgentResponse":{"type":"object","properties":{"agent":{"$ref":"#/components/schemas/PersistentAgentDetail"}},"required":["agent"],"additionalProperties":false},"PersistentAgentCreate":{"$ref":"#/components/schemas/PersistentAgentNativeCreate"},"PersistentAgentNativeCreate":{"type":"object","properties":{"runtime_version":{"type":"string","enum":["v2"],"description":"The native agent runtime. Omit or use v2."},"visibility":{"type":"string","enum":["private","organization"],"description":"Defaults to organization. Members may view and message; only owner and managers may change settings."},"name":{"type":"string","minLength":1,"maxLength":255},"slug":{"type":"string","description":"Optional explicit API alias. Omit to generate a unique slug from the name.","maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"configuration":{"type":"object","properties":{"instructions":{"$ref":"#/components/schemas/PersistentAgentSavedConfiguration/properties/instructions"},"model_policy":{"$ref":"#/components/schemas/PersistentAgentSavedConfiguration/properties/model_policy"},"work_repositories":{"$ref":"#/components/schemas/PersistentAgentSavedConfiguration/properties/work_repositories"},"connection_grants":{"description":"App accounts the agent can use, pinned as agent_connection_ID:GENERATION. Each must be current and choosable by the creator. A private agent also uses its owner's own accounts without being listed here.","$ref":"#/components/schemas/PersistentAgentSavedConfiguration/properties/connection_grants"}},"additionalProperties":false}},"required":["name"],"additionalProperties":false},"PersistentAgentWakePolicy":{"type":"object","description":"Event suppression before task admission. Exact ignored types run first. Where semantic relevance screening is enabled, subscribed external events are compared with the agent's instructions and subscription purpose. Human messages, replies, routines and helpers bypass screening. Omission preserves historical configuration bytes.","properties":{"ignored_event_types":{"type":"array","maxItems":32,"uniqueItems":true,"items":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,79}$"}},"relevance":{"type":"boolean","description":"Defaults to true when omitted. False opts this agent out of semantic screening of its subscribed external events; it does not change event subscriptions or resource authority."}},"required":["ignored_event_types"],"additionalProperties":false},"PersistentAgentSavedConfiguration":{"type":"object","properties":{"avatar":{"$ref":"#/components/schemas/PersistentAgentAvatar"},"instructions":{"type":"string","maxLength":64000},"work_repositories":{"type":"array","items":{"$ref":"#/components/schemas/PersistentAgentWorkRepository"},"maxItems":20},"skills":{"type":"array","items":{"$ref":"#/components/schemas/PinnedSkillReference"},"maxItems":4},"tools":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_.:-]{1,128}$"},"maxItems":32},"connection_grants":{"description":"Selected app-account references, pinned as agent_connection_ID:GENERATION. Saving selects full tool access for that account; credentials remain in the provider vault.","type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_.:-]{1,128}$"},"maxItems":32},"trigger_bindings":{"type":"array","items":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9_.:-]{1,128}$"},{"$ref":"#/components/schemas/PersistentAgentScheduleBinding"},{"$ref":"#/components/schemas/PersistentAgentWebhookBinding"},{"$ref":"#/components/schemas/PersistentAgentPlatformEventBinding"},{"$ref":"#/components/schemas/PersistentAgentProviderEventBinding"}]},"maxItems":32},"destinations":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_.:-]{1,128}$"},"maxItems":32},"timezone":{"type":"string","description":"IANA time zone identifier; default UTC."},"wake_policy":{"$ref":"#/components/schemas/PersistentAgentWakePolicy"},"model_policy":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["platform_default"]}},"required":["mode"],"additionalProperties":false},{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"reasoning":{"type":"string","enum":["none","low","medium","high","xhigh","max"]}},"required":["provider","model"],"additionalProperties":false}]},"budgets":{"type":"object","properties":{"daily_cents":{"type":"integer","minimum":1,"maximum":1000000},"task_tokens":{"type":"integer","minimum":1,"maximum":2000000},"task_compute_seconds":{"type":"integer","minimum":1,"maximum":86400},"task_deadline_seconds":{"type":"integer","minimum":1,"maximum":604800},"max_concurrent_tasks":{"type":"integer","minimum":1,"maximum":10}},"required":["daily_cents","task_tokens","task_compute_seconds","task_deadline_seconds","max_concurrent_tasks"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean"},"max_bytes":{"type":"integer","minimum":0,"maximum":1048576}},"required":["enabled","max_bytes"],"additionalProperties":false}},"required":["instructions","work_repositories","skills","tools","connection_grants","trigger_bindings","destinations","timezone","model_policy","budgets","memory"],"additionalProperties":false},"PersistentAgentRepositoryChoice":{"type":"object","required":["id","name","slug","available"],"properties":{"id":{"type":"string"},"name":{"type":["string","null"]},"slug":{"type":["string","null"]},"available":{"type":"boolean"}}},"AgentShareReviewAccount":{"type":"object","description":"One of the owner's accounts the private agent uses now, which sharing stops unless kept.","additionalProperties":false,"required":["id","generation","toolkit","name","sharing_status","keepable_on_share"],"properties":{"id":{"type":"string"},"generation":{"type":"integer"},"toolkit":{"type":"string"},"name":{"type":"string"},"sharing_status":{"type":"string"},"keepable_on_share":{"type":"boolean","description":"The owner may keep it for the team when sharing."}}},"PersistentAgentConnectionChoice":{"type":"object","additionalProperties":false,"required":["id","name","toolkit","reference","available","status"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"toolkit":{"type":"string"},"reference":{"type":"string"},"available":{"type":"boolean"},"status":{"type":"string"}}},"PersistentAgentRoster":{"type":"object","additionalProperties":false,"required":["agents","pinned_agent","pagination","creation_enabled"],"properties":{"agents":{"type":"array","items":{"$ref":"#/components/schemas/PersistentAgentSummary"}},"pinned_agent":{"anyOf":[{"$ref":"#/components/schemas/PersistentAgentSummary"},{"type":"null"}]},"pagination":{"$ref":"#/components/schemas/PersistentAgentPagination"},"creation_enabled":{"type":"boolean"}}},"AgentWorkEvidence":{"type":"object","additionalProperties":false,"required":["statement","observed_at","source_url","library_artifact_id"],"properties":{"statement":{"type":"string","maxLength":1000},"observed_at":{"type":"string","format":"date-time"},"source_url":{"type":["string","null"],"maxLength":2048},"library_artifact_id":{"type":["string","null"]}}},"AgentWorkMeasurement":{"type":"object","additionalProperties":false,"required":["label","unit","before","after","scope","method","measured_at"],"properties":{"label":{"type":"string"},"unit":{"type":"string","enum":["ms","s","bytes","count","percent"]},"before":{"type":"number"},"after":{"type":"number"},"scope":{"type":"string"},"method":{"type":"string"},"measured_at":{"type":"string","format":"date-time"}}},"AgentWorkSentryIssueReference":{"type":"object","additionalProperties":false,"description":"Saved Sentry Cloud issue identity, not an access grant or proof of remote state. Use a selected current Sentry connection and the generation returned by integrations_list. No URL-derived identity or live lookup.","required":["type","connection_id","connection_generation","organization_slug","issue_id"],"properties":{"type":{"type":"string","enum":["sentry_issue"]},"connection_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^agent_connection_[A-Za-z0-9]+(?![\\s\\S])"},"connection_generation":{"type":"integer","minimum":0,"maximum":2147483647},"organization_slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9_-]+(?![\\s\\S])"},"issue_id":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[1-9][0-9]*(?![\\s\\S])"}}},"AgentWorkTestRuns":{"type":"object","additionalProperties":false,"description":"Agent-reported runs; failures must not exceed runs. Completed coding work requires before.failures >= 1 and after.failures = 0 for every item.","required":["runs","failures","output"],"properties":{"runs":{"type":"integer","minimum":1,"maximum":10000},"failures":{"type":"integer","minimum":0,"maximum":10000},"output":{"type":"string","minLength":1,"maxLength":2000}}},"AgentWorkCodeChange":{"type":"object","additionalProperties":false,"description":"Agent-reported coding work, not remote state verification or a viewer access grant. Repository must be currently selected and readable by the controlling user at publication with an exactly matching name. Item IDs and Sentry organization/issue identities must be unique. Completed work requires failing-before and passing-after verification for every item.","required":["schema_version","type","evidence","activity","repository","completed_at","delivery","items"],"properties":{"schema_version":{"type":"integer","enum":[1]},"type":{"type":"string","enum":["code_change"]},"evidence":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/AgentWorkEvidence"}},"activity":{"type":"string","enum":["bug_fix","test_repair"]},"repository":{"type":"object","additionalProperties":false,"required":["id","name"],"properties":{"id":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string","minLength":1,"maxLength":500}}},"completed_at":{"type":"string","format":"date-time"},"delivery":{"type":"object","additionalProperties":false,"required":["stage","commit_sha","pull_request_number","deployment_url"],"properties":{"stage":{"type":"string","enum":["local","pull_request","merged","deployed"]},"commit_sha":{"type":["string","null"],"pattern":"^(?:[0-9a-f]{40}|[0-9a-f]{64})(?![\\s\\S])"},"pull_request_number":{"type":["integer","null"],"minimum":1,"maximum":2147483647},"deployment_url":{"type":["string","null"],"minLength":1,"maxLength":2048,"format":"uri","pattern":"^https?://[^/@\\s?#]+(?:[/?#][^\\s]*)?(?![\\s\\S])"}},"allOf":[{"if":{"properties":{"stage":{"const":"local"}}},"then":{"properties":{"pull_request_number":{"type":"null"},"deployment_url":{"type":"null"}}}},{"if":{"properties":{"stage":{"enum":["pull_request","merged"]}}},"then":{"properties":{"commit_sha":{"type":"string"},"pull_request_number":{"type":"integer"},"deployment_url":{"type":"null"}}}},{"if":{"properties":{"stage":{"const":"deployed"}}},"then":{"properties":{"commit_sha":{"type":"string"},"deployment_url":{"type":"string"}}}}]},"items":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"object","additionalProperties":false,"required":["id","title","problem","resolution","verification"],"properties":{"id":{"type":"string","minLength":1,"maxLength":200},"title":{"type":"string","minLength":1,"maxLength":160},"problem":{"type":"string","minLength":1,"maxLength":2000},"resolution":{"type":"string","minLength":1,"maxLength":2000},"source_reference":{"$ref":"#/components/schemas/AgentWorkSentryIssueReference"},"verification":{"type":"object","additionalProperties":false,"required":["command","environment","before","after"],"properties":{"command":{"type":"string","minLength":1,"maxLength":1000},"environment":{"type":"string","minLength":1,"maxLength":500},"before":{"$ref":"#/components/schemas/AgentWorkTestRuns"},"after":{"$ref":"#/components/schemas/AgentWorkTestRuns"}}}}}}}},"AgentWorkPayload":{"oneOf":[{"$ref":"#/components/schemas/AgentWorkCodeChange"},{"type":"object","additionalProperties":false,"required":["schema_version","type","evidence","measurement"],"properties":{"schema_version":{"type":"integer","enum":[1]},"type":{"type":"string","enum":["finding"]},"evidence":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/AgentWorkEvidence"}},"measurement":{"anyOf":[{"$ref":"#/components/schemas/AgentWorkMeasurement"},{"type":"null"}]}}},{"type":"object","additionalProperties":false,"required":["schema_version","type","evidence","channel","participants","subject","text","source_url"],"properties":{"schema_version":{"type":"integer","enum":[1]},"type":{"type":"string","enum":["message_excerpt"]},"evidence":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/AgentWorkEvidence"}},"channel":{"type":"string","enum":["slack","email"]},"participants":{"type":"array","maxItems":10,"items":{"type":"object","additionalProperties":false,"required":["name","role"],"properties":{"name":{"type":"string"},"role":{"type":"string","enum":["author","recipient"]}}}},"subject":{"type":["string","null"]},"text":{"type":"string","maxLength":8000},"source_url":{"type":["string","null"]}}},{"type":"object","additionalProperties":false,"required":["schema_version","type","evidence","library_artifact_id","caption"],"properties":{"schema_version":{"type":"integer","enum":[1]},"type":{"type":"string","enum":["library_file"]},"evidence":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/AgentWorkEvidence"}},"library_artifact_id":{"type":"string"},"caption":{"type":"string"}}},{"type":"object","additionalProperties":false,"required":["schema_version","type","evidence","fields"],"allOf":[{"if":{"properties":{"group":{}},"required":["group"]},"then":{"properties":{"fields":{"type":"array","minItems":1}}}}],"properties":{"schema_version":{"type":"integer","enum":[1]},"type":{"type":"string","enum":["generic"]},"evidence":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/AgentWorkEvidence"}},"group":{"type":"object","description":"Optional grouping of 1–20 individual results, people or changes. Each field is one item and contributes exactly one to the displayed count, not an attribute of a single result. For people, label is the person's display name and value describes their outcome. Omit group for ordinary report attributes. Action is a short past-tense verb; subject is the noun phrase agreeing with the item count; provider is a toolkit name or null. Counts are derived by Rails, never submitted.","additionalProperties":false,"required":["category","action","subject","provider"],"properties":{"category":{"type":"string","enum":["items","people","changes"]},"action":{"type":"string","maxLength":100},"subject":{"type":"string","maxLength":100},"provider":{"type":["string","null"],"maxLength":100}}},"fields":{"type":"array","maxItems":20,"items":{"type":"object","additionalProperties":false,"required":["label","value"],"properties":{"label":{"type":"string"},"value":{"type":"string"}}}}}},{"type":"object","additionalProperties":false,"required":["schema_version","type","evidence","fields"],"allOf":[{"if":{"properties":{"group":{}},"required":["group"]},"then":{"properties":{"fields":{"type":"array","minItems":1}}}}],"properties":{"schema_version":{"type":"integer","enum":[2]},"type":{"type":"string","enum":["generic"]},"evidence":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/AgentWorkEvidence"}},"group":{"type":"object","description":"Optional grouping of 1–20 individual results. Each field contributes one item; never repeat a Sentry organization_slug/issue_id even through different accounts. Counts are derived by Rails, never submitted.","additionalProperties":false,"required":["category","action","subject","provider"],"properties":{"category":{"type":"string","enum":["items","people","changes"]},"action":{"type":"string","maxLength":100},"subject":{"type":"string","maxLength":100},"provider":{"type":["string","null"],"maxLength":100}}},"fields":{"type":"array","maxItems":20,"items":{"type":"object","additionalProperties":false,"required":["label","value"],"properties":{"label":{"type":"string","maxLength":500},"value":{"type":"string","maxLength":1000},"source_reference":{"$ref":"#/components/schemas/AgentWorkSentryIssueReference"}}}}}}]},"AgentWorkView":{"type":"object","additionalProperties":false,"required":["id","revision","agent","kind","state","attention","title","summary","updated_at","payload","surface","attribution","conversation_href","library_files","needs_attention","can_mark_handled"],"properties":{"id":{"type":"string"},"revision":{"type":"integer"},"agent":{"type":"object","additionalProperties":false,"required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}},"kind":{"type":"string","enum":["finding","communication","deliverable","generic","coding"]},"state":{"type":"string","enum":["working","completed","failed","not_pursued"]},"attention":{"type":"string","enum":["none","exception"]},"title":{"type":"string"},"summary":{"type":"string"},"updated_at":{"type":"string","format":"date-time"},"payload":{"$ref":"#/components/schemas/AgentWorkPayload"},"group":{"anyOf":[{"type":"object","additionalProperties":false,"required":["category","action","subject","provider","count"],"properties":{"category":{"type":"string","enum":["items","people","changes"]},"action":{"type":"string"},"subject":{"type":"string"},"provider":{"type":["string","null"]},"count":{"type":"integer","minimum":1,"maximum":20}}},{"type":"null"}]},"surface":{"type":"string","enum":["finding","artifact","generic","coding"]},"attribution":{"type":"string","enum":["agent_reported"]},"conversation_href":{"type":["string","null"]},"library_files":{"type":"array","maxItems":11,"items":{"type":"object","additionalProperties":false,"required":["id","title","content_type","byte_size","download_href","preview"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"content_type":{"type":"string"},"byte_size":{"type":"integer"},"download_href":{"type":"string"},"preview":{"type":"string","enum":["image","none"]}}}},"needs_attention":{"type":"boolean","description":"Failed or exception work that no one has marked handled since this revision"},"can_mark_handled":{"type":"boolean","description":"The viewer can manage this agent and the work needs attention"}}},"AgentBriefing":{"type":"object","additionalProperties":false,"required":["schema_version","snapshot_id","generated_at","window","blocks","collections","work","truncated"],"properties":{"schema_version":{"type":"integer","enum":[1]},"snapshot_id":{"type":"string"},"generated_at":{"type":"string","format":"date-time"},"recap":{"type":"object","additionalProperties":false,"required":["status"],"properties":{"status":{"type":"string","enum":["empty","pending","ready","unavailable"]},"model":{"type":"string"},"generated_at":{"type":"string","format":"date-time"}}},"window":{"type":"object","additionalProperties":false,"required":["from","to","timezone"],"properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"timezone":{"type":"string"}}},"blocks":{"type":"array","items":{"oneOf":[{"type":"object","additionalProperties":false,"required":["type","content"],"properties":{"type":{"type":"string","enum":["paragraph"]},"content":{"type":"array","items":{"oneOf":[{"type":"object","additionalProperties":false,"required":["type","text"],"properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}}},{"type":"object","additionalProperties":false,"required":["type","component","collection_id"],"properties":{"type":{"type":"string","enum":["component"]},"component":{"type":"string","enum":["work_count"]},"collection_id":{"type":"string"}}},{"type":"object","additionalProperties":false,"required":["type","component","work_id","revision"],"properties":{"type":{"type":"string","enum":["component"]},"component":{"type":"string","enum":["metric","people","work","group","artifact"]},"work_id":{"type":"string"},"revision":{"type":"integer"}}}]}}}},{"type":"object","additionalProperties":false,"required":["type","collection_id","title"],"properties":{"type":{"type":"string","enum":["work_previews"]},"collection_id":{"type":"string"},"title":{"type":"string"}}}]}},"collections":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","label","count","work_ids"],"properties":{"id":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer"},"work_ids":{"type":"array","items":{"type":"string"}},"coding_summary":{"type":"object","description":"Combined completed coding outcomes at one delivery stage. Count is the total submitted items; collection count remains the number of saved results.","additionalProperties":false,"required":["activity","action","subject","count"],"properties":{"activity":{"type":"string","enum":["bug_fix","test_repair"]},"action":{"type":"string"},"subject":{"type":"string"},"count":{"type":"integer","minimum":1,"maximum":500}}}}}},"work":{"type":"array","maxItems":70,"items":{"$ref":"#/components/schemas/AgentWorkView"}},"truncated":{"type":"boolean"}}},"PersistentAgentsWorkspacePage":{"type":"object","required":["platform_event_types","agents","pagination","creation_enabled","selected_agent","pinned_agent","new_configuration","repository_choices","repository_choices_truncated","organization_id","selected_reference","viewer_id","integration_choices","integration_selected","integration_choices_truncated","can_edit_integration_connections"],"properties":{"runtime_versions":{"type":"array","items":{"type":"string","enum":["v2"]},"description":"Runtime choices authorized for this organization."},"model_choices":{"type":"array","maxItems":32,"items":{"type":"object","additionalProperties":false,"required":["provider","model","label","reasoning","available","default_reasoning","speeds"],"properties":{"provider":{"type":"string"},"model":{"type":"string"},"label":{"type":"string"},"available":{"type":"boolean"},"speeds":{"type":"array","items":{"type":"string","enum":["regular","fast","ultrafast"]}},"default_reasoning":{"type":"string","enum":["none","low","medium","high","xhigh","max"]},"reasoning":{"type":"array","maxItems":8,"items":{"type":"string","enum":["none","low","medium","high","xhigh","max"]}},"cost_tier":{"type":["integer","null"],"minimum":1,"maximum":4,"description":"Relative usage cost from 1 (cheapest) to 4, from list prices. Null when unpriced. Absent on older API replicas."}}}},"can_edit_integration_connections":{"type":"boolean"},"integration_choices_truncated":{"type":"boolean"},"integration_choices":{"type":"array","maxItems":132,"items":{"$ref":"#/components/schemas/PersistentAgentConnectionChoice"}},"integration_selected":{"type":"array","maxItems":32,"items":{"$ref":"#/components/schemas/PersistentAgentConnectionChoice"}},"inbox":{"anyOf":[{"type":"null"},{"type":"object","additionalProperties":false,"required":["has_agents","unread","recent"],"properties":{"has_agents":{"type":"boolean"},"briefing":{"anyOf":[{"$ref":"#/components/schemas/AgentBriefing"},{"type":"null"}]},"unread":{"type":"array","maxItems":12,"items":{"$ref":"#/components/schemas/PersistentAgentSummary"}},"recent":{"type":"array","maxItems":12,"items":{"$ref":"#/components/schemas/PersistentAgentSummary"}}}}]},"platform_event_types":{"type":"array","items":{"type":"string","enum":["change.opened","change.code_updated","change.landed","github.push","github.pull_request","github.issues","github.issue_comment","github.pull_request_review","github.pull_request_review_comment","github.check_run","github.check_suite","github.status","github.workflow_run","github.release","github.discussion","github.discussion_comment","github.create","github.delete"]}},"agents":{"type":"array","items":{"$ref":"#/components/schemas/PersistentAgentSummary"}},"pagination":{"$ref":"#/components/schemas/PersistentAgentPagination"},"creation_enabled":{"type":"boolean"},"selected_agent":{"anyOf":[{"$ref":"#/components/schemas/PersistentAgentDetail"},{"type":"null"}]},"pinned_agent":{"anyOf":[{"$ref":"#/components/schemas/PersistentAgentSummary"},{"type":"null"}]},"new_configuration":{"anyOf":[{"$ref":"#/components/schemas/PersistentAgentSavedConfiguration"},{"type":"null"}]},"repository_choices":{"type":"array","deprecated":true,"description":"Empty compatibility field. Use the agent's clawder/repositories endpoint.","maxItems":0,"items":{"$ref":"#/components/schemas/PersistentAgentRepositoryChoice"}},"repository_choices_truncated":{"type":"boolean","deprecated":true,"const":false},"organization_id":{"type":"string"},"selected_reference":{"type":["string","null"]},"viewer_id":{"type":"string"}}},"PersistentAgentClawderInteraction":{"type":"object","description":"Durable registered interaction, at most 16 KiB serialized UTF-8, 144 KiB for agent_create, or 300 KiB for a bounded skill_install review. Transcript references grant no authority; use current server capabilities. Connection enablement saves a pinned local grant atomically with the receipt. Skill installation saves the decision before external import; processing is not an installed claim. Delivery status is independent of the accepted answer and application status.","additionalProperties":false,"required":["id","schema_version","kind","conversation_id","revision","status","payload","expires_at","capabilities","response","delivery"],"properties":{"id":{"type":"string","minLength":1,"maxLength":256,"description":"Durable request ID; at most 256 UTF-8 bytes."},"schema_version":{"type":"integer","enum":[1]},"kind":{"type":"string","enum":["confirmation","connection_enable","connection_connect","repository_access","agent_archive","agent_create","slack_connect","skill_install","verify_run","verify_deep_scan","verify_project_access","choice","records"]},"conversation_id":{"type":"string","minLength":1,"description":"Explicit conversation identity, including an agent-scoped native session alias."},"revision":{"type":"integer","minimum":1},"status":{"type":"string","enum":["awaiting_input","processing","completed","failed","cancelled","expired"]},"payload":{"type":"object","description":"Validated non-secret payload, at most 8 KiB serialized UTF-8, 16 KiB for records, 128 KiB for agent_create, or 272 KiB for skill_install with a skill_bundle of at most 256 KiB. New_agent is required for agent_create and contains the exact settings and grants to review. Connection is required for connection_enable. Repository and expected_version are required for repository_access. Agent and expected_version are required for agent_archive. Slack is required for slack_connect and reflects the signed-in viewer's own Slack link. Skill_bundle is required for skill_install and contains the exact pinned files to review. Resource identities come from Rails, never model input.","additionalProperties":false,"required":["title","description"],"properties":{"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000},"skill_bundle":{"$ref":"#/components/schemas/PersistentAgentClawderSkillBundle"},"new_agent":{"$ref":"#/components/schemas/PersistentAgentClawderAgentCreation"},"shared_by":{"type":"object","description":"Optional only for skill_install in main chat. Trusted source bot identity supplied by Rails, never model input.","additionalProperties":false,"required":["id","name","slug"],"properties":{"id":{"type":"string","minLength":1,"maxLength":256},"name":{"type":"string","minLength":1,"maxLength":255},"slug":{"type":"string","minLength":1,"maxLength":100}}},"expected_version":{"type":"integer","minimum":0},"agent":{"type":"object","additionalProperties":false,"required":["id","name","slug"],"properties":{"id":{"type":"string","minLength":1,"maxLength":256},"name":{"type":"string","minLength":1,"maxLength":255},"slug":{"type":"string","minLength":1,"maxLength":100}}},"repository":{"type":"object","additionalProperties":false,"required":["repository_id","name","permission","write_branches"],"properties":{"repository_id":{"type":"string","pattern":"^repo_[a-zA-Z0-9]{1,100}$"},"name":{"type":"string","minLength":1},"permission":{"type":"string","enum":["read","write"]},"write_branches":{"type":"array","maxItems":32,"uniqueItems":true,"items":{"type":"string"}},"exclude_default_branch":{"type":"boolean"}}},"verify_target":{"type":"object","description":"Required for verify_run. What Start runs, read by Rails from the prepared run; scenario_names lists at most the first 10.","additionalProperties":false,"required":["project_name","environment_name","scenario_count","scenario_names"],"properties":{"project_name":{"type":"string","minLength":1,"maxLength":200},"environment_name":{"type":"string","minLength":1,"maxLength":100},"scenario_count":{"type":"integer","minimum":0},"scenario_names":{"type":"array","maxItems":10,"items":{"type":"string","maxLength":200}}}},"verify_deep_scan":{"type":"object","description":"Required for verify_deep_scan. What Start scans, named by Rails; the description is the scan's goal. A null account_name scans signed out.","additionalProperties":false,"required":["project_name","environment_name","account_name"],"properties":{"project_name":{"type":"string","minLength":1,"maxLength":200},"environment_name":{"type":"string","minLength":1,"maxLength":100},"account_name":{"type":["string","null"],"maxLength":200}}},"source":{"type":"object","description":"Optional for choice. The tool the agent read the options from, linked back to it. Agent-supplied, so the link is only ever https.","additionalProperties":false,"required":["tool","path","url"],"properties":{"tool":{"type":"string","minLength":1,"maxLength":40},"path":{"type":"string","maxLength":200},"url":{"type":"string","format":"uri","maxLength":2048}}},"records":{"description":"Required for records. Rows the agent read from a tool and the ask actions the person may take on the rows they tick. Agent-supplied, so links are only ever https.","$ref":"#/components/schemas/SparkRecordsSpec"},"choice":{"type":"object","description":"Required for choice. The question's options as the agent supplied them; at most one is recommended and none is preselected.","additionalProperties":false,"required":["multiple","options","submit_label"],"properties":{"multiple":{"type":"boolean"},"submit_label":{"type":"string","minLength":1,"maxLength":40,"description":"What sending the answer starts, such as \"Open a PR for this fix\"."},"options":{"type":"array","minItems":2,"maxItems":12,"items":{"type":"object","additionalProperties":false,"required":["value","label"],"properties":{"value":{"type":"string","minLength":1,"maxLength":100},"label":{"type":"string","minLength":1,"maxLength":80},"description":{"type":"string","maxLength":300},"recommended":{"type":"boolean"}}}}}},"verify_project":{"type":"object","description":"Required for verify_project_access. The Verify project approval adds to the agent's grants, named by Rails.","additionalProperties":false,"required":["id","name"],"properties":{"id":{"type":"string","pattern":"^project_[a-zA-Z0-9]{1,100}$"},"name":{"type":"string","minLength":1,"maxLength":200}}},"provider":{"type":"object","additionalProperties":false,"required":["toolkit","name","organization"],"properties":{"toolkit":{"type":"string","pattern":"^[a-z0-9_]{1,100}$","description":"Rails-validated managed catalog identity"},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Server-owned catalog display name"},"organization":{"type":"string"}}},"setup":{"type":"object","additionalProperties":false,"required":["phase"],"properties":{"phase":{"type":"string","enum":["not_started","authorizing","consent_required","connected","retry_required"]}}},"slack":{"type":"object","additionalProperties":false,"required":["organization","workspace_name","account_connected","connect_url"],"properties":{"organization":{"type":"string"},"workspace_name":{"type":["string","null"],"description":"Connected Composal Slack app workspace, if installed."},"account_connected":{"type":"boolean","description":"Whether the signed-in viewer has linked their own Slack account."},"connect_url":{"type":"string","format":"uri","description":"Composal Slack install/link endpoint. Opens Slack OAuth in a separate tab; use it only when capabilities.can_connect is true."}}},"connection":{"type":"object","additionalProperties":false,"required":["id","generation","name","toolkit"],"properties":{"id":{"type":"string","minLength":1,"maxLength":256},"generation":{"type":"integer","minimum":0,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":100},"toolkit":{"type":"string"},"identity_label":{"type":["string","null"],"maxLength":403,"description":"Current verified provider account/workspace label, only visible to its custodian. Not a grant or saved decision."}}}}},"expires_at":{"type":"string","format":"date-time"},"capabilities":{"type":"object","additionalProperties":false,"required":["can_respond","can_cancel"],"properties":{"can_respond":{"type":"boolean"},"can_cancel":{"type":"boolean"},"can_connect":{"type":"boolean","description":"connection_connect: the viewer can start provider authorization. slack_connect: the viewer can open the Slack install/link flow now."}}},"response":{"anyOf":[{"type":"null"},{"$ref":"#/components/schemas/PersistentAgentClawderInteractionResponseReceipt"}]},"delivery":{"type":"object","additionalProperties":false,"required":["status"],"properties":{"status":{"type":"string","enum":["none","pending","accepted","uncertain","blocked"]},"run_id":{"type":"string"},"reason":{"type":"string"}}}}},"PersistentAgentClawderAgentCreation":{"type":"object","description":"Exact settings for agent_create. Approval creates a V2 agent owned by the signed-in approver and installs the pinned team apps. Credentials and personal connections are never copied.","additionalProperties":false,"required":["name","visibility","configuration","connections","repositories","apps"],"properties":{"name":{"type":"string","minLength":1,"maxLength":255},"slug":{"type":"string","maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"visibility":{"type":"string","enum":["private","organization"]},"configuration":{"type":"object","additionalProperties":false,"required":["instructions","model_policy","work_repositories","connection_grants"],"properties":{"instructions":{"$ref":"#/components/schemas/PersistentAgentSavedConfiguration/properties/instructions"},"model_policy":{"$ref":"#/components/schemas/PersistentAgentSavedConfiguration/properties/model_policy"},"work_repositories":{"$ref":"#/components/schemas/PersistentAgentSavedConfiguration/properties/work_repositories"},"connection_grants":{"$ref":"#/components/schemas/PersistentAgentSavedConfiguration/properties/connection_grants"}}},"connections":{"type":"array","maxItems":32,"items":{"type":"object","additionalProperties":false,"required":["id","generation","name","toolkit"],"properties":{"id":{"type":"string","minLength":1,"maxLength":256},"generation":{"type":"integer","minimum":0,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":100},"toolkit":{"type":"string"},"identity_label":{"type":["string","null"],"maxLength":403,"description":"Current verified provider account/workspace label, only visible to its custodian. Not a grant or saved decision."}}}},"repositories":{"type":"array","maxItems":20,"items":{"type":"object","additionalProperties":false,"required":["repository_id","name","permission","write_branches"],"properties":{"repository_id":{"type":"string","pattern":"^repo_[a-zA-Z0-9]{1,100}$"},"name":{"type":"string","minLength":1},"permission":{"type":"string","enum":["read","write"]},"write_branches":{"type":"array","maxItems":32,"uniqueItems":true,"items":{"type":"string"}},"exclude_default_branch":{"type":"boolean"}}}},"apps":{"type":"array","maxItems":32,"items":{"type":"object","additionalProperties":false,"required":["id","name","title"],"properties":{"id":{"type":"string","minLength":1,"maxLength":256},"name":{"type":"string","minLength":1,"maxLength":63},"title":{"type":"string","minLength":1,"maxLength":80}}}}}},"PersistentAgentClawderConfirmationAnswer":{"type":"object","additionalProperties":false,"required":["confirmed"],"properties":{"confirmed":{"type":"boolean"},"selected_skills":{"type":"array","description":"Required only for skill_install; unique subset of reviewed names, nonempty when confirmed and empty when declined. Forbidden for other kinds.","maxItems":20,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}},"action":{"type":"string","description":"Required only for a confirmed records answer; the id of the action pressed. Forbidden otherwise.","pattern":"^[A-Za-z0-9_.-]{1,64}$"},"choices":{"type":"array","description":"Required for choice and records. For choice, the picked option values in option order; one value for a single choice, one or more for a multiple choice. For records, the ticked record ids in card order, which the action decides. Empty when skipped with confirmed false. Forbidden for other kinds.","maxItems":100,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":200}}}},"PersistentAgentClawderSkillSource":{"type":"object","additionalProperties":false,"required":["repository","revision","url"],"properties":{"repository":{"type":"string","maxLength":200,"pattern":"^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$"},"revision":{"type":"string","pattern":"^[0-9a-f]{40}$"},"url":{"type":"string","format":"uri","description":"Public HTTPS GitHub tree URL pinned to revision, optionally scoped to a skill directory."}}},"PersistentAgentClawderSkillBundle":{"type":"object","description":"Immutable bridge-resolved review bundle, at most 256 KiB serialized UTF-8. Installation imports these exact bytes without fetching the source again.","additionalProperties":false,"required":["source","skills"],"properties":{"source":{"$ref":"#/components/schemas/PersistentAgentClawderSkillSource"},"skills":{"type":"array","minItems":1,"maxItems":20,"items":{"$ref":"#/components/schemas/PersistentAgentClawderSkillReview"}}}},"PersistentAgentClawderSkillReview":{"type":"object","additionalProperties":false,"required":["name","description","content","files","selected"],"properties":{"name":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"description":{"type":"string","maxLength":4096},"content":{"type":"string","maxLength":131072,"description":"Full SKILL.md UTF-8 text, at most 128 KiB."},"selected":{"type":"boolean","description":"Initial review selection; not human approval."},"files":{"type":"array","maxItems":127,"description":"Companion files excluding SKILL.md; at most 128 files per skill including SKILL.md.","items":{"$ref":"#/components/schemas/PersistentAgentClawderSkillFile"}}}},"PersistentAgentClawderSkillFile":{"type":"object","additionalProperties":false,"required":["path","content"],"properties":{"path":{"type":"string","minLength":1,"maxLength":512,"description":"Unique safe UTF-8 relative path inside this skill directory, at most 512 bytes and 255 bytes per component. Spaces and Unicode are preserved; no traversal, controls, backslashes or SKILL.md."},"content":{"type":"string","maxLength":131072,"description":"Full UTF-8 text, at most 128 KiB."}}},"PersistentAgentClawderSkillInstallResult":{"type":"object","description":"Verified per-skill receipt, at most 24 KiB serialized UTF-8, covering exactly the human-selected names.","additionalProperties":false,"required":["skills"],"properties":{"skills":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","additionalProperties":false,"required":["name","status"],"properties":{"name":{"type":"string","minLength":1,"maxLength":64},"status":{"type":"string","enum":["installed","failed"]},"error":{"type":"string","maxLength":1000,"description":"Single-line non-secret failure explanation without control characters, at most 1000 UTF-8 bytes, only for failed entries."}}}}}},"PersistentAgentClawderInteractionResponseReceipt":{"type":"object","additionalProperties":false,"required":["receipt_id","actor_id","answer","accepted_at"],"properties":{"receipt_id":{"type":"string"},"actor_id":{"type":"string"},"actor_name":{"type":"string","minLength":1,"maxLength":255,"description":"The name of the person who answered, for the card's stamp. Absent when their profile has no name."},"answer":{"$ref":"#/components/schemas/PersistentAgentClawderConfirmationAnswer"},"accepted_at":{"type":"string","format":"date-time"},"result":{"description":"Present only when a confirmed agent creation, grant, archive or Verify run start committed, or a skill import returned its verified per-skill receipt. Absent while a skill import is processing or uncertain. Not a claim about current access.","type":"object","properties":{"skills":{"$ref":"#/components/schemas/PersistentAgentClawderSkillInstallResult/properties/skills"}},"oneOf":[{"$ref":"#/components/schemas/PersistentAgentClawderSkillInstallResult"},{"type":"object","additionalProperties":false,"required":["created_agent_id","slug"],"properties":{"created_agent_id":{"type":"string"},"slug":{"type":"string"}}},{"type":"object","additionalProperties":false,"required":["archived_agent_id"],"properties":{"archived_agent_id":{"type":"string"}}},{"type":"object","additionalProperties":false,"required":["project_id","run_id"],"description":"The Verify run a verify_run approval started.","properties":{"project_id":{"type":"string","pattern":"^project_[a-zA-Z0-9]{1,100}$"},"run_id":{"type":"string","pattern":"^verification_run_[a-zA-Z0-9]{1,100}$"}}},{"type":"object","additionalProperties":false,"required":["project_id","scan_id","url"],"description":"The deep scan a verify_deep_scan approval started, and its page.","properties":{"project_id":{"type":"string","pattern":"^project_[a-zA-Z0-9]{1,100}$"},"scan_id":{"type":"string","pattern":"^vexploration_[a-zA-Z0-9]{1,100}$"},"url":{"type":"string","format":"uri"}}},{"type":"object","additionalProperties":false,"required":["project_id"],"description":"The Verify project a verify_project_access approval granted.","properties":{"project_id":{"type":"string","pattern":"^project_[a-zA-Z0-9]{1,100}$"}}},{"type":"object","additionalProperties":false,"required":["id","generation"],"properties":{"id":{"type":"string"},"generation":{"type":"integer","minimum":0,"maximum":9007199254740991}}},{"type":"object","additionalProperties":false,"required":["workspace_name"],"properties":{"workspace_name":{"type":"string"}}},{"type":"object","additionalProperties":false,"required":["repository"],"properties":{"repository":{"$ref":"#/components/schemas/PersistentAgentWorkRepository"}}}]}}},"PersistentAgentClawderInteractionCancelInput":{"type":"object","description":"Exact JSON body, at most 4 KiB serialized UTF-8. The idempotency key is bound to actor, request, operation, expected revision, and canonical validated body.","additionalProperties":false,"required":["conversation_id","expected_revision"],"properties":{"conversation_id":{"$ref":"#/components/schemas/PersistentAgentClawderInteraction/properties/conversation_id"},"expected_revision":{"type":"integer","minimum":1,"maximum":9223372036854776000}}},"PersistentAgentClawderInteractionResponseInput":{"type":"object","description":"Exact JSON body, at most 4 KiB serialized UTF-8 (8 KiB for skill_install). A confirmation grants nothing. Confirming agent_create creates a V2 agent owned by the signed-in approver with the reviewed settings and team app installs. Confirming connection_enable grants full available tools for the shown connection generation. Confirming repository_access saves the exact shown repository grant only if settings and authority remain current. Confirming agent_archive archives the named teammate only if the signed-in user still has management access and its version is unchanged; audit records are retained. Confirming slack_connect requires the signed-in user to have linked their Slack account and reports the workspace to the agent; it grants nothing. Skill_install requires management access and selected_skills; approval durably saves the exact subset before asynchronous import and does not claim installation succeeded.","additionalProperties":false,"required":["conversation_id","expected_revision","answer"],"properties":{"conversation_id":{"$ref":"#/components/schemas/PersistentAgentClawderInteraction/properties/conversation_id"},"expected_revision":{"type":"integer","minimum":1,"maximum":9223372036854776000},"answer":{"$ref":"#/components/schemas/PersistentAgentClawderConfirmationAnswer"}}},"PersistentAgentClawderInteractionConflict":{"type":"object","additionalProperties":false,"required":["error","interaction"],"properties":{"error":{"type":"string"},"interaction":{"$ref":"#/components/schemas/PersistentAgentClawderInteraction"}}},"PersistentAgentClawderProvisioning":{"type":"object","description":"Safe managed-worker readiness. Creating an organization's first V2 agent starts provisioning; later agents reuse its worker. Ready requires actual placement and native readiness, not just an accepted deployment request.","required":["status","can_retry","error"],"additionalProperties":false,"properties":{"status":{"type":"string","enum":["provisioning","ready","failed"]},"can_retry":{"type":"boolean"},"error":{"type":["string","null"],"description":"Safe user-facing failure description."}}},"PersistentAgentClawderInput":{"type":"object","required":["conversation_id","text"],"additionalProperties":false,"properties":{"conversation_id":{"type":"string","pattern":"^(?:[a-zA-Z0-9_-]{1,128}|native\\.[A-Za-z0-9_-]{1,512})$","description":"Main or a conversation identity returned by the agent thread list. Native aliases are scoped to the selected agent."},"requester_membership_id":{"type":"string","minLength":1,"maxLength":200,"description":"Snapshot the membership supplied by conversation history for a NEW V1 input. Preserve the original body on retries; absent means legacy unbound input. V1 uses a separate native identity namespace and binds even if the rollout flag changes."},"text":{"type":"string","maxLength":32768},"browser_context":{"$ref":"#/components/schemas/ClawderBrowserContext"},"model_policy":{"$ref":"#/components/schemas/PersistentAgentSavedConfiguration/properties/model_policy"},"speed":{"type":"string","enum":["regular","fast","ultrafast"],"description":"Fast uses OpenAI priority processing for GPT models (2x price) or the quickest approved OpenRouter route. Ultrafast is OpenAI's 6x tier, for models that list it."},"attachments":{"type":"array","maxItems":8,"items":{"type":"object","required":["fileName","mimeType","content"],"additionalProperties":false,"properties":{"fileName":{"type":"string","minLength":1,"maxLength":255},"mimeType":{"type":"string"},"content":{"type":"string","description":"Base64 bytes. Up to 4 MB per file and 8 MB total."}}}},"attachment_ids":{"type":"array","minItems":1,"maxItems":20,"uniqueItems":true,"description":"Completed uploads from the attachments endpoint, in order. Use instead of attachments, not with it. Together they can total 2 GB.","items":{"type":"string"}}}},"SparkAttachmentUpload":{"type":"object","required":["file_name","content_type","byte_size"],"additionalProperties":false,"properties":{"file_name":{"type":"string","minLength":1,"maxLength":255},"content_type":{"type":"string","maxLength":255},"byte_size":{"type":"integer","minimum":1}}},"SparkAttachment":{"type":"object","required":["id","file_name","content_type","byte_size","part_size","part_count","status"],"additionalProperties":false,"properties":{"id":{"type":"string"},"file_name":{"type":"string"},"content_type":{"type":"string"},"byte_size":{"type":"integer"},"part_size":{"type":"integer"},"part_count":{"type":"integer"},"status":{"type":"string","enum":["pending","ready","purging"]}}},"PersistentAgentClawderInputConflict":{"type":"object","required":["error"],"additionalProperties":false,"properties":{"error":{"type":"string"},"code":{"type":"string","description":"Native conflict or terminal delivery code, including control_delivery_unknown, or input_key_conflict when the key already holds another body or sender and this input was not admitted. Personal-plan codes are personal_plan_unavailable and subscription_disconnected; a retried input may already have been sent."},"delivery_status":{"type":"string","enum":["rejected"],"description":"Rails ended custody of this input; replaying its key returns the same rejection"},"can_use_platform_billing":{"type":"boolean","description":"This person may return the agent to Composal billing"}}},"PersistentAgentClawderInputReceipt":{"oneOf":[{"type":"object","required":["run_id","conversation_id","status"],"additionalProperties":false,"properties":{"run_id":{"type":"string"},"conversation_id":{"type":"string"},"status":{"type":"string"},"delivery_id":{"type":"string"},"delivery_status":{"type":"string","enum":["waiting","accepted","rejected"]},"error":{"type":"string"},"code":{"type":"string"}}},{"type":"object","required":["conversation_id","status","aborted","aborted_run_ids"],"additionalProperties":false,"properties":{"conversation_id":{"type":"string"},"status":{"type":"string","enum":["completed"]},"delivery_id":{"type":"string"},"delivery_status":{"type":"string","enum":["accepted"]},"aborted":{"type":"boolean"},"aborted_run_ids":{"type":"array","items":{"type":"string"}},"warning":{"type":"string"}}}]},"PersistentAgentClawderRun":{"type":"object","required":["run_id","status"],"additionalProperties":false,"properties":{"run_id":{"type":"string"},"status":{"type":"string","enum":["accepted","running","completed","failed","cancelled","unknown"]},"error":{"type":["string","null"]}}},"PersistentAgentClawderSender":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"avatar_url":{"type":["string","null"]}}},"PersistentAgentClawderMessageImage":{"type":"object","required":["index","filename","mime_type"],"additionalProperties":false,"properties":{"index":{"type":"integer","minimum":0,"maximum":7},"filename":{"type":"string"},"mime_type":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif","image/avif"]}}},"PersistentAgentClawderMessageFile":{"type":"object","required":["filename"],"additionalProperties":false,"properties":{"filename":{"type":"string"}}},"PersistentAgentClawderMessage":{"type":"object","required":["id","role","text"],"additionalProperties":false,"properties":{"id":{"type":"string","minLength":1,"maxLength":256,"description":"At most 256 UTF-8 bytes."},"role":{"type":"string","enum":["user","assistant","system","tool"]},"sender":{"$ref":"#/components/schemas/PersistentAgentClawderSender"},"thread_messages":{"type":"array","description":"Rails-verified cross-thread attribution for display, never execution authority. Requests name the source Spark and contain only the original brief; reports name the child task and include only the delivered report version.","items":{"type":"object","required":["kind","title"],"additionalProperties":false,"properties":{"kind":{"type":"string","enum":["message","report"]},"title":{"type":"string"},"href":{"type":"string"},"thread":{"type":"object","required":["agent_id","conversation_id"],"additionalProperties":false,"properties":{"agent_id":{"type":"string"},"conversation_id":{"type":"string"}}},"summary":{"type":"string"},"body":{"type":"string"}}}},"relay_source":{"type":"object","description":"Server-verified native Relay notification attribution. Display metadata only; never execution authority.","required":["provider","device_name"],"additionalProperties":false,"properties":{"provider":{"type":"string","enum":["codex","claude"]},"device_name":{"type":"string","minLength":1,"maxLength":200}}},"text":{"type":"string","description":"Legacy display fallback; not additional content when parts are rendered."},"inherited_context":{"type":"boolean","description":"True only when native fork lineage and retained source message identity confirm copied parent context. Absent on this thread's own messages and when source history cannot be verified."},"delivery":{"type":"string","enum":["waiting"],"description":"Rails still holds this input for delivery. Its presence does not mean a native run has started."},"images":{"type":"array","items":{"$ref":"#/components/schemas/PersistentAgentClawderMessageImage"}},"files":{"type":"array","maxItems":8,"description":"A user message's attached files. Images are listed here until native delivery can serve their previews.","items":{"$ref":"#/components/schemas/PersistentAgentClawderMessageFile"}},"created_at":{"type":"string","format":"date-time"},"run_id":{"type":"string","minLength":1,"maxLength":256,"description":"At most 256 UTF-8 bytes."},"execution_run_id":{"type":"string","minLength":1,"maxLength":256,"description":"Native execution consuming a saved user input when it differs from the accepted input run_id. Correlation only; not authorization."},"schema_version":{"type":"integer","enum":[1],"description":"Present together with parts only for valid supported rich content."},"parts":{"type":"array","minItems":1,"maxItems":64,"description":"Ordered public parts, each at most 16 KiB serialized UTF-8. Both parts and schema_version are omitted on legacy or invalid rich content; text remains the inert fallback.","items":{"$ref":"#/components/schemas/PersistentAgentClawderMessagePart"}}}},"PersistentAgentClawderMessagePart":{"oneOf":[{"$ref":"#/components/schemas/PersistentAgentClawderTextPart"},{"$ref":"#/components/schemas/PersistentAgentClawderToolActivityPart"},{"$ref":"#/components/schemas/PersistentAgentClawderInteractionPart"},{"$ref":"#/components/schemas/PersistentAgentClawderWorkflowRunPart"},{"$ref":"#/components/schemas/PersistentAgentClawderWebSourcePart"},{"$ref":"#/components/schemas/PersistentAgentClawderWorkflowProposalPart"},{"$ref":"#/components/schemas/PersistentAgentClawderCardPart"}]},"PersistentAgentClawderWebSourcePart":{"type":"object","required":["id","type","url"],"additionalProperties":false,"description":"A source returned by web research. Optional text comes from the source, never inferred from its URL.","properties":{"id":{"$ref":"#/components/schemas/PersistentAgentClawderTextPart/properties/id"},"type":{"type":"string","enum":["web_source"]},"url":{"type":"string","format":"uri","maxLength":2048,"description":"Absolute HTTP(S) URL without credentials."},"title":{"type":"string","maxLength":300},"excerpt":{"type":"string","maxLength":500},"preview_url":{"type":"string","format":"uri","description":"Signed metadata endpoint; append asset=icon or asset=image for proxied image bytes."}}},"AgentWebSourcePreview":{"type":"object","required":["title","description","icon_url","image_url"],"properties":{"title":{"type":"string","nullable":true,"maxLength":300},"description":{"type":"string","nullable":true,"maxLength":500},"icon_url":{"type":"string","nullable":true,"format":"uri"},"image_url":{"type":"string","nullable":true,"format":"uri"}}},"PersistentAgentClawderTextPart":{"type":"object","required":["id","type","text"],"additionalProperties":false,"properties":{"id":{"type":"string","minLength":1,"maxLength":256,"description":"Unique within message; at most 256 UTF-8 bytes."},"type":{"type":"string","enum":["text"]},"text":{"type":"string"}}},"PersistentAgentClawderToolActivityPart":{"type":"object","required":["id","type","tool_call_id","label","status"],"additionalProperties":false,"properties":{"id":{"$ref":"#/components/schemas/PersistentAgentClawderTextPart/properties/id"},"type":{"type":"string","enum":["tool_activity"]},"tool_call_id":{"type":"string","minLength":1,"maxLength":256,"description":"At most 256 UTF-8 bytes."},"parent_tool_call_id":{"type":"string","minLength":1,"maxLength":256,"description":"The call this one ran inside, such as a Code Mode exec. At most 256 UTF-8 bytes."},"label":{"type":"string"},"status":{"type":"string","enum":["running","completed","failed","unknown"]},"detail":{"type":"string","maxLength":200,"description":"One redacted line saying what the tool acted on, such as the command, path, query or URL."},"app":{"type":"string","maxLength":100,"description":"The integration toolkit an app tool call used, such as posthog, for showing that app's logo."},"app_name":{"type":"string","maxLength":100,"description":"The display name of that app, such as PostHog, when it has one."},"resource_warnings":{"type":"array","maxItems":4,"description":"Memory, disk or OOM warnings sampled on the thread machine around this tool call.","items":{"type":"string","maxLength":300}}}},"PersistentAgentClawderInteractionPart":{"type":"object","required":["id","type","request_id","kind","schema_version","summary"],"additionalProperties":false,"properties":{"id":{"$ref":"#/components/schemas/PersistentAgentClawderTextPart/properties/id"},"type":{"type":"string","enum":["interaction"]},"request_id":{"type":"string","minLength":1,"maxLength":256,"description":"At most 256 UTF-8 bytes."},"kind":{"type":"string","enum":["confirmation","connection_enable","connection_connect","repository_access","agent_archive","agent_create","slack_connect","skill_install","verify_run","verify_deep_scan","verify_project_access","choice","records"]},"schema_version":{"type":"integer","enum":[1]},"summary":{"type":"string","maxLength":2000,"description":"Inert reference only; fetch authorized request state before enabling controls."}}},"PersistentAgentClawderWorkflowRunPart":{"type":"object","required":["id","type","run_id","summary"],"additionalProperties":false,"properties":{"id":{"$ref":"#/components/schemas/PersistentAgentClawderTextPart/properties/id"},"type":{"type":"string","enum":["workflow_run"]},"run_id":{"type":"string","minLength":1,"maxLength":256,"description":"The workflow run this note reports."},"summary":{"type":"string","maxLength":2000,"description":"The note's text, shown when the run is absent or a client does not draw it."},"run":{"$ref":"#/components/schemas/ClawderWorkflowRun","description":"The run as it is now. Absent when it is not this agent's."}}},"PersistentAgentClawderWorkflowProposalPart":{"type":"object","required":["id","type","proposal_id","summary"],"additionalProperties":false,"properties":{"id":{"$ref":"#/components/schemas/PersistentAgentClawderTextPart/properties/id"},"type":{"type":"string","enum":["workflow_proposal"]},"proposal_id":{"type":"string","pattern":"^wp_[A-Za-z0-9_-]{22}$","description":"A workflow the agent proposed; read it from the agent before drawing it."},"summary":{"type":"string","maxLength":2000,"description":"Shown when a client does not draw the proposal."},"tool_call_id":{"type":"string","description":"The tool call that made the proposal, which also names its live workflow draft. Absent on proposals saved before it was sent."}}},"PersistentAgentClawderCardPart":{"type":"object","description":"Tool results a spark showed as a card. Display data only; nothing on it writes anywhere.","required":["id","type","kind","schema_version","spec","summary"],"additionalProperties":false,"properties":{"id":{"$ref":"#/components/schemas/PersistentAgentClawderTextPart/properties/id"},"type":{"type":"string","enum":["card"]},"kind":{"type":"string","enum":["records"]},"schema_version":{"type":"integer","enum":[1]},"spec":{"$ref":"#/components/schemas/SparkRecordsSpec"},"summary":{"type":"string","maxLength":2000,"description":"The card as plain text, shown where a client does not draw it, such as Slack."}}},"SparkCardTone":{"type":"string","enum":["neutral","good","warn","bad","info"]},"SparkCardInference":{"type":"object","description":"The spark's judgement, shown apart from what the tool returned.","required":["text","evidence"],"additionalProperties":false,"properties":{"text":{"type":"string","maxLength":120},"evidence":{"type":"string","maxLength":300},"tone":{"$ref":"#/components/schemas/SparkCardTone"}}},"SparkCardStatusValue":{"type":"object","required":["status","tone"],"additionalProperties":false,"properties":{"status":{"type":"string","maxLength":80},"tone":{"$ref":"#/components/schemas/SparkCardTone"},"detail":{"type":"string","maxLength":200}}},"SparkCardUnit":{"type":"object","required":["kind"],"additionalProperties":false,"properties":{"kind":{"type":"string","enum":["count","percent","bytes","currency","duration","custom"]},"code":{"type":"string","description":"currency only, an ISO 4217 code."},"base":{"type":"string","enum":["ms","s"],"description":"duration only."},"suffix":{"type":"string","description":"custom only, such as pts."},"one":{"type":"string","description":"custom only, the suffix for exactly 1, such as pt."}}},"SparkRecordsField":{"type":"object","required":["key","label","type"],"additionalProperties":false,"properties":{"key":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,64}$"},"label":{"type":"string","maxLength":60},"type":{"type":"string","enum":["text","longtext","code","id","number","time","relative_time","date","status","person","labels","diff_size","sparkline","progress","url","boolean","json"]},"unit":{"$ref":"#/components/schemas/SparkCardUnit"},"better":{"type":"string","enum":["up","down"]},"role":{"type":"string","enum":["title","subtitle","id","status","group","value"]},"priority":{"type":"integer","minimum":1,"maximum":9,"description":"1 stays at every width. Defaults to 1 for title, id and status, 2 for subtitle and 3 otherwise."},"sortable":{"type":"boolean"}}},"SparkRecordsValue":{"description":"A value typed by its field; null when the tool had none.","anyOf":[{"type":"null"},{"type":"string"},{"type":"number"},{"type":"boolean"},{"$ref":"#/components/schemas/SparkCardStatusValue"},{"type":"object","required":["person"],"properties":{"person":{"type":"string"},"id":{"type":"string"},"handle":{"type":"string"},"avatar_url":{"type":"string","pattern":"^https://"}}},{"type":"object","required":["labels"],"properties":{"labels":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}}}}},{"type":"object","required":["added","removed"],"properties":{"added":{"type":"integer"},"removed":{"type":"integer"}}},{"type":"object","required":["values"],"properties":{"values":{"type":"array","items":{"anyOf":[{"type":"number"},{"type":"null"}]}}}},{"type":"object","required":["done","total"],"properties":{"done":{"type":"number"},"total":{"type":"number"}}},{"type":"object","required":["url"],"properties":{"url":{"type":"string","pattern":"^https://"},"text":{"type":"string"}}},{"type":"object","description":"A json field's value.","additionalProperties":true},{"type":"array","description":"A json field's value.","items":{}}]},"SparkRecordsRecord":{"type":"object","required":["id","values"],"additionalProperties":false,"properties":{"id":{"type":"string","maxLength":200},"url":{"type":"string","pattern":"^https://"},"values":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/SparkRecordsValue"}},"signals":{"type":"array","maxItems":4,"description":"Facts from the tool worth a second look, worst first.","items":{"type":"object","required":["text","tone"],"additionalProperties":false,"properties":{"text":{"type":"string","maxLength":200},"tone":{"$ref":"#/components/schemas/SparkCardTone"}}}},"inference":{"type":"array","maxItems":3,"items":{"$ref":"#/components/schemas/SparkCardInference"}},"related":{"type":"array","maxItems":10,"items":{"type":"object","required":["relation","title"],"additionalProperties":false,"properties":{"relation":{"type":"string"},"title":{"type":"string"},"id":{"type":"string"},"url":{"type":"string","pattern":"^https://"},"status":{"$ref":"#/components/schemas/SparkCardStatusValue"}}}},"changed_since_read":{"type":"boolean"}}},"SparkRecordsSpec":{"type":"object","description":"Rows a spark read from a tool, as a list or one record in detail. The client chooses the layout and formatting.","required":["kind","source","heading","noun","fields","records"],"additionalProperties":false,"properties":{"kind":{"type":"string","enum":["records"]},"source":{"type":"object","required":["tool","url","read_at"],"additionalProperties":false,"properties":{"tool":{"type":"string","maxLength":60},"path":{"type":"string","maxLength":200},"url":{"type":"string","pattern":"^https://"},"read_at":{"type":"string","format":"date-time"},"tool_call_id":{"type":"string"}}},"heading":{"type":"string","maxLength":200},"subheading":{"type":"string","maxLength":300},"status":{"type":"string","enum":["ok","empty","error","partial","stale"]},"problem":{"type":"object","required":["title","detail"],"additionalProperties":false,"properties":{"title":{"type":"string"},"detail":{"type":"string"},"tool_message":{"type":"string"},"action":{"type":"string"}}},"inference":{"type":"array","maxItems":3,"items":{"$ref":"#/components/schemas/SparkCardInference"}},"truncation":{"type":"object","required":["shown","total","noun","reason"],"additionalProperties":false,"properties":{"shown":{"type":"integer"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}]},"noun":{"type":"string"},"reason":{"type":"string"},"action":{"type":"string"}}},"footnote":{"type":"string","maxLength":300},"noun":{"type":"object","required":["one","many"],"additionalProperties":false,"properties":{"one":{"type":"string"},"many":{"type":"string"}}},"layout":{"type":"string","enum":["auto","list","card","board","table"]},"fields":{"type":"array","minItems":1,"maxItems":16,"items":{"$ref":"#/components/schemas/SparkRecordsField"}},"records":{"type":"array","maxItems":100,"items":{"$ref":"#/components/schemas/SparkRecordsRecord"}},"order":{"type":"object","required":["by","direction","description"],"additionalProperties":false,"properties":{"by":{"type":"string"},"direction":{"type":"string","enum":["asc","desc"]},"description":{"type":"string"}}},"select":{"type":"string","description":"Whether the person can tick one row or several for an action. Only on a records interaction.","enum":["none","single","multiple"]},"actions":{"type":"array","description":"What the person can ask the spark to do next. Only on a records interaction, never on a card part.","minItems":1,"maxItems":3,"items":{"type":"object","required":["id","label","kind"],"additionalProperties":false,"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,64}$"},"label":{"type":"string","maxLength":40,"description":"May contain {n}, the number of ticked rows, and {noun}, the spec's noun for that number."},"kind":{"type":"string","enum":["ask"]},"needs_selection":{"type":"boolean"}}}}}},"ClawderBrowserContext":{"type":"object","description":"Advisory snapshot of the browser pane beside this conversation when the message was sent.","required":["view","tabs"],"additionalProperties":false,"properties":{"view":{"type":"string","enum":["local","remote","desktop"]},"active_tab":{"$ref":"#/components/schemas/ClawderBrowserContextTab"},"tabs":{"type":"array","maxItems":8,"items":{"$ref":"#/components/schemas/ClawderBrowserContextTab"}}}},"ClawderBrowserContextTab":{"type":"object","required":["location","title"],"additionalProperties":false,"properties":{"location":{"type":"string","enum":["local","remote"]},"title":{"type":"string","maxLength":120},"url":{"type":"string","maxLength":512,"description":"HTTP(S) origin and path with query and fragment removed."},"target_id":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,64}$","description":"CDP identifier for the selected remote tab. Reference only."}}},"PersistentAgentClawderConversation":{"type":"object","required":["conversation_id","messages","can_send","has_active_run"],"additionalProperties":false,"properties":{"conversation_id":{"type":"string"},"thread":{"$ref":"#/components/schemas/PersistentAgentClawderThread"},"model":{"description":"Effective model reported by the native conversation, including inherited selections. Null when unavailable.","anyOf":[{"type":"object","required":["provider","model"],"additionalProperties":false,"properties":{"provider":{"type":"string"},"model":{"type":"string"},"reasoning":{"type":"string","enum":["none","off","minimal","low","medium","high","xhigh","max","adaptive","ultra"]},"label":{"type":"string","description":"Display name of model, such as Claude Opus 5.5."},"billing":{"type":"string","enum":["subscription"],"description":"Present when an applied personal subscription governs the next turn."}}},{"type":"null"}]},"default_model":{"$ref":"#/components/schemas/PersistentAgentClawderConversation/properties/model"},"input_run_id":{"type":"string","description":"Identity computed for the optional Idempotency-Key header. Does not confirm native acceptance."},"requester_membership_id":{"type":["string","null"],"description":"Current authenticated membership offered for new V1 inputs. Does not authorize execution."},"can_send":{"type":"boolean"},"can_queue_input":{"type":"boolean","description":"Current authority to admit a durable input independently of native readiness."},"supports_browser_context":{"type":"boolean"},"has_active_run":{"type":"boolean"},"active_run_ids":{"type":"array","items":{"type":"string"}},"pending_inputs":{"type":"array","items":{"$ref":"#/components/schemas/PersistentAgentClawderMessage"}},"run":{"anyOf":[{"$ref":"#/components/schemas/PersistentAgentClawderRun"},{"type":"null"}]},"older_cursor":{"type":["string","null"]},"newer_cursor":{"type":["string","null"]},"messages":{"type":"array","items":{"$ref":"#/components/schemas/PersistentAgentClawderMessage"}}}},"PersistentAgentScheduleBinding":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,80}$"},"type":{"type":"string","enum":["schedule"]},"schedule":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["at"]},"at":{"type":"string","format":"date-time","description":"Explicit UTC offset; instant must be exactly representable at microsecond precision."}},"required":["type","at"]},{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["interval"]},"seconds":{"type":"integer","minimum":60,"maximum":31536000},"anchor":{"type":"string","format":"date-time","description":"Explicit UTC offset; instant must be exactly representable at microsecond precision."}},"required":["type","seconds","anchor"]},{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["cron"]},"expression":{"type":"string","description":"Five-field cron; repeated local hours use the first UTC instant."},"timezone":{"type":"string"}},"required":["type","expression","timezone"]}]},"timezone":{"type":"string","description":"Explicit IANA time zone, matching the cron zone when applicable."},"grace_seconds":{"type":"integer","minimum":0,"maximum":86400,"description":"Explicit late one-shot grace. Recurring downtime coalesces to one occurrence; resume skips the unclaimed backlog through its saved boundary."},"text":{"type":"string","maxLength":32768},"conversation_id":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"}},"required":["id","type","schedule","timezone","grace_seconds","text","conversation_id"]},"PersistentAgentClawderStreamSnapshot":{"type":"object","required":["conversation_id","messages","can_send","has_active_run"],"additionalProperties":false,"properties":{"default_model":{"$ref":"#/components/schemas/PersistentAgentClawderConversation/properties/model"},"model":{"$ref":"#/components/schemas/PersistentAgentClawderConversation/properties/model"},"conversation_id":{"type":"string"},"requester_membership_id":{"type":["string","null"],"description":"Current authenticated membership offered for new V1 inputs. Does not authorize execution."},"can_send":{"type":"boolean"},"can_queue_input":{"type":"boolean","description":"Current authority to admit a durable input independently of native readiness."},"supports_browser_context":{"type":"boolean"},"has_active_run":{"type":"boolean"},"device_activities":{"type":"array","maxItems":16,"items":{"$ref":"#/components/schemas/PersistentAgentClawderDeviceActivity"}},"active_run_ids":{"type":"array","items":{"type":"string"}},"pending_inputs":{"type":"array","items":{"$ref":"#/components/schemas/PersistentAgentClawderMessage"}},"older_cursor":{"type":["string","null"]},"newer_cursor":{"type":["string","null"]},"run":{"anyOf":[{"$ref":"#/components/schemas/PersistentAgentClawderRun"},{"type":"null"}]},"messages":{"type":"array","items":{"$ref":"#/components/schemas/PersistentAgentClawderMessage"}},"in_flight_run":{"anyOf":[{"type":"object","required":["run_id","text"],"additionalProperties":false,"properties":{"run_id":{"type":"string"},"text":{"type":"string"}}},{"type":"null"}]}}},"PersistentAgentClawderDeviceActivity":{"type":"object","required":["run_id","tool_call_id","seq","device_id","device_name","provider","status","text","truncated"],"additionalProperties":false,"properties":{"run_id":{"type":"string","maxLength":256},"tool_call_id":{"type":"string","maxLength":256},"seq":{"type":"integer","minimum":0,"maximum":9007199254740991},"device_id":{"type":"string","pattern":"^device_registration_[A-Za-z0-9_-]{1,160}$"},"device_name":{"type":"string","maxLength":1024},"provider":{"type":"string","enum":["codex","roder","claude"]},"status":{"type":"string","enum":["running","completed","failed","cancelled","unknown"]},"text":{"type":"string","maxLength":131072,"description":"Cumulative display preview bounded to 128 KiB of UTF-8. Does not replace the native receipt."},"truncated":{"type":"boolean"}}},"PersistentAgentClawderStreamDevice":{"type":"object","required":["conversation_id","activity"],"additionalProperties":false,"properties":{"conversation_id":{"type":"string"},"activity":{"$ref":"#/components/schemas/PersistentAgentClawderDeviceActivity"}}},"PersistentAgentClawderStreamRenew":{"type":"object","description":"The stream is about to end on purpose, for example to reload history the live stream could not send. Reconnect at once for a fresh snapshot.","required":["conversation_id"],"additionalProperties":false,"properties":{"conversation_id":{"type":"string"}}},"PersistentAgentClawderStreamReasoning":{"type":"object","description":"The current step of a run's reasoning, sent when it changes. Progress only; it is not saved to the transcript.","required":["conversation_id","run_id","title"],"additionalProperties":false,"properties":{"conversation_id":{"type":"string"},"run_id":{"type":"string"},"title":{"type":"string","maxLength":160}}},"PersistentAgentClawderStreamWorkflowDraft":{"type":"object","description":"A workflow the agent is still writing in a workflow proposal, drawn from what it has written so far. Progress only; it is neither checked nor saved, and the proposal the tool returns replaces it.","required":["conversation_id","run_id","tool_call_id","draft"],"additionalProperties":false,"properties":{"conversation_id":{"type":"string"},"run_id":{"type":"string"},"tool_call_id":{"type":"string"},"draft":{"type":"object","required":["path","definition","pipeline_checkpoints","pipeline_commands"],"additionalProperties":false,"properties":{"path":{"type":"string","nullable":true},"definition":{"type":"object","additionalProperties":true},"pipeline_checkpoints":{"$ref":"#/components/schemas/PersistentAgentLobsterPipelineCheckpoints"},"pipeline_commands":{"$ref":"#/components/schemas/PersistentAgentLobsterPipelineCommands"}}}}},"PersistentAgentClawderStreamBrowser":{"type":"object","required":["conversation_id","id","url"],"additionalProperties":false,"properties":{"conversation_id":{"type":"string"},"id":{"type":"string"},"url":{"type":"string","maxLength":8192}}},"PersistentAgentClawderStreamAgentBrowser":{"type":"object","description":"The agent asks the client to show the user a live view of the agent's own browser, which the user can control. A separate event so older clients, which do not listen for it, ignore it.","required":["conversation_id","id"],"additionalProperties":false,"properties":{"conversation_id":{"type":"string"},"id":{"type":"string"}}},"PersistentAgentClawderStreamUiAction":{"type":"object","description":"The agent asks the desktop app to show the user a place in its own UI, such as a settings control. Clients that do not listen for it ignore it.","required":["conversation_id","id","action"],"additionalProperties":false,"properties":{"conversation_id":{"type":"string"},"id":{"type":"string"},"action":{"type":"object","required":["name","section"],"additionalProperties":false,"properties":{"name":{"type":"string","enum":["open_settings"]},"section":{"type":"string","enum":["appearance","devices"]},"focus":{"type":"string"}}}}},"PersistentAgentClawderStreamDelta":{"type":"object","required":["conversation_id","run_id","seq","delta_text"],"additionalProperties":false,"properties":{"conversation_id":{"type":"string"},"run_id":{"type":"string"},"seq":{"type":"integer","minimum":0},"delta_text":{"type":"string"},"replace":{"type":"boolean"},"text":{"type":"string","description":"Full native wire snapshot. Takes precedence over delta_text."},"message_id":{"type":"string"}}},"PersistentAgentClawderStreamMessage":{"type":"object","required":["conversation_id","message"],"additionalProperties":false,"properties":{"conversation_id":{"type":"string"},"run_id":{"type":"string"},"message":{"$ref":"#/components/schemas/PersistentAgentClawderMessage"}}},"PersistentAgentClawderStreamRun":{"type":"object","required":["conversation_id","run_id","status"],"additionalProperties":false,"properties":{"conversation_id":{"type":"string"},"run_id":{"type":"string"},"status":{"type":"string","enum":["accepted","running","completed","failed","cancelled","unknown"]},"error":{"type":["string","null"]},"seq":{"type":"integer","minimum":0}}},"PersistentAgentClawderStreamError":{"type":"object","required":["message"],"additionalProperties":false,"properties":{"message":{"type":"string"},"code":{"type":"string","enum":["unauthorized","unavailable"]},"recovery_code":{"type":"string","enum":["deploy_draining","gateway_starting","transport_timeout","gateway_failed"]},"correlation_id":{"type":"string"},"retry_after":{"type":"integer","minimum":1}}},"OrganizationPreviewsPage":{"type":"object","required":["previews","filters","choices","pagination"],"properties":{"previews":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/PreviewEnvironmentRecord"},{"type":"object","required":["app_name","app_slug","owner_name","change_number","health","latest_operation_status"],"properties":{"app_name":{"type":"string"},"app_slug":{"type":"string"},"owner_name":{"type":["string","null"]},"change_number":{"type":["integer","null"]},"health":{"type":"string","enum":["degraded","running","starting","stopped"]},"latest_operation_status":{"type":["string","null"]}}}]}},"filters":{"type":"object","properties":{"app":{"type":"string"},"owner":{"type":"string"},"change":{"type":"string"},"health":{"type":"string"},"expiry":{"type":"string"}}},"choices":{"type":"object","required":["apps","owners"],"properties":{"apps":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"owners":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}}}},"pagination":{"type":"object","required":["page","per_page","total_count","total_pages"],"properties":{"page":{"type":"integer"},"per_page":{"type":"integer"},"total_count":{"type":"integer"},"total_pages":{"type":"integer"}}}}},"PreviewAdministrationPage":{"type":"object","required":["app","preview","profile","deployment","bindings","profile_bindings","operations","can_manage","actions","comparison","sharing_approvals","configuration_errors","binding_sources","owned_secrets","storage_bindings"],"properties":{"app":{"$ref":"#/components/schemas/HostedApp"},"preview":{"$ref":"#/components/schemas/PreviewEnvironmentRecord"},"profile":{"$ref":"#/components/schemas/PreviewProfileRecord"},"deployment":{"oneOf":[{"$ref":"#/components/schemas/DeploymentDetailsPage"},{"type":"null"}]},"bindings":{"type":"array","items":{"$ref":"#/components/schemas/PreviewSecretBinding"}},"profile_bindings":{"type":"array","items":{"$ref":"#/components/schemas/PreviewSecretBinding"}},"operations":{"type":"array","items":{"$ref":"#/components/schemas/PreviewLifecycleOperation"}},"placement_locations":{"type":"array","items":{"$ref":"#/components/schemas/HostingLocation"}},"storage_bindings":{"type":"array","items":{"$ref":"#/components/schemas/PreviewStorageBindingChoice"}},"can_manage":{"type":"boolean"},"actions":{"type":"object","required":["deploy","pause","resume","configure","rotate_secrets","review_source","policy","delete"],"additionalProperties":false,"properties":{"deploy":{"type":"boolean"},"pause":{"type":"boolean"},"resume":{"type":"boolean"},"configure":{"type":"boolean"},"rotate_secrets":{"type":"boolean"},"review_source":{"type":"boolean"},"policy":{"type":"boolean"},"delete":{"type":"boolean"}}},"comparison":{"type":"object","nullable":true,"additionalProperties":true,"properties":{"runtime_consumers":{"type":"array","items":{"$ref":"#/components/schemas/PreviewRuntimeSecretConsumer"}},"configuration":{"type":"array","items":{"$ref":"#/components/schemas/PreviewServiceConfigurationComparison"}}}},"sharing_approvals":{"oneOf":[{"$ref":"#/components/schemas/PreviewSharingApprovals"},{"type":"null"}]},"binding_sources":{"type":"array","items":{"$ref":"#/components/schemas/PreviewBindingSource"}},"owned_secrets":{"type":"array","items":{"$ref":"#/components/schemas/PreviewOwnedSecret"}},"configuration_errors":{"type":"object","additionalProperties":{"type":"string"}}}},"PreviewEnvironmentRecord":{"type":"object","required":["id","hosted_app_id","app_environment_id","app_preview_profile_id","source_revision","snapshot_version","generation","access","retained","expires_at","status","name","slug","profile_name","urls"],"properties":{"id":{"type":"string"},"hosted_app_id":{"type":"string"},"app_environment_id":{"type":"string"},"app_preview_profile_id":{"type":"string"},"vcs_change_id":{"type":"string","nullable":true},"created_by_user_id":{"oneOf":[{"type":"string"},{"type":"integer"},{"type":"null"}]},"source_revision":{"type":"string"},"snapshot_version":{"type":"integer"},"generation":{"type":"integer"},"access":{"type":"string","enum":["org_members","public"]},"retained":{"type":"boolean"},"expires_at":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"status":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"profile_name":{"type":"string"},"resource_overrides":{"$ref":"#/components/schemas/PreviewResourceOverrides"},"urls":{"type":"array","items":{"type":"object","required":["hostname","dns_status","tls_status"],"properties":{"hostname":{"type":"string"},"dns_status":{"type":"string"},"tls_status":{"type":"string"}}}}}},"PreviewProfileRecord":{"type":"object","required":["id","hosted_app_id","source_environment_id","name","slug","automatic","ttl_days","configuration"],"properties":{"id":{"type":"string"},"hosted_app_id":{"type":"string"},"source_environment_id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"automatic":{"type":"boolean"},"ttl_days":{"type":"integer"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"configuration":{"$ref":"#/components/schemas/PreviewDefaultsConfiguration"}}},"PreviewDefaultsConfiguration":{"type":"object","properties":{"variables":{"type":"object","additionalProperties":{"type":"string"}},"build_variables":{"type":"object","additionalProperties":{"type":"string"}},"required_keys":{"type":"array","items":{"type":"string"}},"service_resources":{"$ref":"#/components/schemas/PreviewResourceOverrides"}}},"PreviewResourceOverrides":{"type":"object","description":"Service public IDs mapped to resource overrides. Omitted fields inherit; an empty map removes all local overrides. Null reservations select platform defaults.","additionalProperties":{"$ref":"#/components/schemas/PreviewResourceSettings"}},"PreviewResourceSettings":{"type":"object","additionalProperties":false,"properties":{"cpu_mhz":{"type":"integer","minimum":0,"nullable":true},"cpu_hard_limit":{"type":"boolean"},"memory_mb":{"type":"integer","minimum":0,"nullable":true},"memory_max_mb":{"type":"integer","minimum":1,"nullable":true},"disk_mb":{"type":"integer","minimum":0,"nullable":true}}},"PreviewSecretBinding":{"type":"object","required":["id","env_key","mode","pinned","available"],"properties":{"id":{"type":"string"},"hosted_app_id":{"type":"string"},"app_environment_id":{"type":"string","nullable":true},"app_preview_profile_id":{"type":"string","nullable":true},"secret_id":{"type":"string","nullable":true},"secret_version_id":{"type":"string","nullable":true},"env_key":{"type":"string"},"mode":{"type":"string","enum":["linked","masked"]},"source_slug":{"type":"string","nullable":true},"version_number":{"type":"integer","nullable":true},"pinned":{"type":"boolean"},"available":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}}},"PreviewLifecycleOperation":{"type":"object","required":["id","action","status","generation"],"properties":{"id":{"type":"string"},"app_preview_id":{"type":"string"},"created_by_user_id":{"oneOf":[{"type":"string"},{"type":"integer"},{"type":"null"}]},"action":{"type":"string","enum":["pause","archive","delete","expire","close"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","canceled"]},"generation":{"type":"integer"},"failure_message":{"type":"string","nullable":true},"started_at":{"type":"string","nullable":true},"finished_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}}},"PreviewRuntimeSecretConsumer":{"type":"object","required":["runtime_instance_id","app_service_id","status","keys"],"properties":{"runtime_instance_id":{"type":"string"},"app_service_id":{"type":"string"},"app_release_id":{"type":"string","nullable":true},"status":{"type":"string","enum":["unknown","current","stale","unavailable"]},"keys":{"type":"array","items":{"type":"object","required":["env_key","available","stale"],"properties":{"env_key":{"type":"string"},"secret_id":{"type":"string","nullable":true},"loaded_version_id":{"type":"string","nullable":true},"selected_version_id":{"type":"string","nullable":true},"available":{"type":"boolean"},"stale":{"type":"boolean"}}}}}},"PreviewStorageBindingChoice":{"type":"object","required":["binding_id","name","mount_path","read_only","source_resource_name","selected_resource_id","resources"],"properties":{"binding_id":{"type":"string"},"name":{"type":"string"},"mount_path":{"type":"string","nullable":true},"read_only":{"type":"boolean"},"source_resource_name":{"type":"string"},"selected_resource_id":{"type":"string","nullable":true},"resources":{"type":"array","items":{"type":"object","required":["id","name","provider","capacity_gb","location_id","shared"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"provider":{"type":"string"},"capacity_gb":{"type":"integer","nullable":true},"location_id":{"type":"string","nullable":true},"shared":{"type":"boolean"}}}}}},"PreviewBackingResource":{"type":"object","required":["binding_id","name","binding_type","resource_type","resource_id","resource_name","resource_status","required","read_only","mount_path","environment_variable_name"],"properties":{"binding_id":{"type":"string"},"name":{"type":"string"},"binding_type":{"type":"string"},"resource_type":{"type":"string"},"resource_id":{"type":"string"},"resource_environment_id":{"type":"string","nullable":true},"network_peer_id":{"type":"string","nullable":true},"network_space_id":{"type":"string","nullable":true},"network_dns_suffix":{"type":"string","nullable":true},"network_available":{"type":"boolean","nullable":true},"resource_name":{"type":"string"},"resource_status":{"type":"string"},"resource_provider":{"type":"string"},"resource_kind":{"type":"string"},"resource_location_id":{"type":"string","nullable":true},"resource_capacity_gb":{"type":"integer","nullable":true},"resource_external_volume_id":{"type":"string","nullable":true},"resource_authority_identity":{"type":"object","additionalProperties":true},"provider_private_endpoint":{"type":"boolean","description":"Captured managed data resource advertises a provider-private endpoint; no endpoint or credential material is included."},"required":{"type":"boolean"},"read_only":{"type":"boolean"},"mount_path":{"type":"string","nullable":true},"environment_variable_name":{"type":"string","nullable":true},"dependency_endpoint_id":{"type":"string","nullable":true},"dependency_url":{"type":"string"}}},"PreviewServiceConfigurationComparison":{"type":"object","required":["app_service_id","setting_differences","capacity","keys"],"properties":{"app_service_id":{"type":"string"},"setting_differences":{"type":"array","items":{"type":"string"}},"backing_resources":{"type":"object","required":["captured","source","preview","requires_refresh"],"properties":{"captured":{"type":"array","items":{"$ref":"#/components/schemas/PreviewBackingResource"}},"source":{"type":"array","items":{"$ref":"#/components/schemas/PreviewBackingResource"}},"preview":{"type":"array","items":{"$ref":"#/components/schemas/PreviewBackingResource"}},"requires_refresh":{"type":"boolean"}}},"resources":{"type":"object","additionalProperties":{"type":"object","required":["source","preview","layer"],"properties":{"source":{"oneOf":[{"type":"integer"},{"type":"boolean"},{"type":"null"}]},"preview":{"oneOf":[{"type":"integer"},{"type":"boolean"},{"type":"null"}]},"layer":{"type":"string","enum":["source","profile","environment"]}}}},"capacity":{"type":"object","required":["source","preview"],"properties":{"source":{"type":"array","items":{"$ref":"#/components/schemas/PreviewCapacityEntry"}},"preview":{"type":"array","items":{"$ref":"#/components/schemas/PreviewCapacityEntry"}}}},"keys":{"type":"array","items":{"type":"object","required":["key","source","preview","shadowed","approval_required","required","missing_reference","matches_source"],"properties":{"key":{"type":"string"},"source":{"allOf":[{"$ref":"#/components/schemas/PreviewConfigurationReference"}],"nullable":true},"preview":{"allOf":[{"$ref":"#/components/schemas/PreviewConfigurationReference"}],"nullable":true},"shadowed":{"type":"array","items":{"$ref":"#/components/schemas/PreviewConfigurationReference"}},"approval_required":{"type":"boolean"},"required":{"type":"boolean"},"missing_reference":{"type":"boolean"},"matches_source":{"type":"boolean"}}}}}},"PreviewCapacityEntry":{"type":"object","required":["location_id","location_name","replicas"],"properties":{"location_id":{"type":"string"},"location_name":{"type":"string"},"replicas":{"type":"integer"}}},"PreviewConfigurationReference":{"type":"object","required":["key","kind","layer"],"properties":{"key":{"type":"string"},"kind":{"type":"string"},"layer":{"type":"string"},"secret_id":{"type":"string"},"secret_version_id":{"type":"string"},"version_number":{"type":"integer"},"config_variable_id":{"type":"string"},"value_kind":{"type":"string"},"binding_id":{"type":"string"},"pinned":{"type":"boolean"}}},"PreviewSharingApprovals":{"type":"object","required":["snapshot_version","source_keys","services","default_configuration","default_secrets","build_secrets","approved_build_secrets","approved_build_keys","approved_source_keys","approved_default_secrets","approved_default_configuration"],"properties":{"snapshot_version":{"type":"integer"},"source_keys":{"type":"array","items":{"type":"string"}},"services":{"type":"array","items":{"type":"object","required":["service_id","source_keys","build_keys"],"properties":{"service_id":{"type":"string"},"source_keys":{"type":"array","items":{"type":"string"}},"build_keys":{"type":"array","items":{"type":"string"}}}}},"default_configuration":{"type":"array","items":{"type":"object","required":["id","key","value_kind"],"properties":{"id":{"type":"string"},"key":{"type":"string"},"value_kind":{"type":"string"}}}},"default_secrets":{"type":"array","items":{"type":"object","required":["id","key"],"properties":{"id":{"type":"string"},"key":{"type":"string","nullable":true}}}},"build_secrets":{"type":"array","items":{"type":"object","required":["id","key","version_id","binding_id"],"properties":{"id":{"type":"string"},"key":{"type":"string"},"version_id":{"type":"string"},"binding_id":{"type":"string","nullable":true}}}},"approved_build_secrets":{"type":"array","items":{"type":"string"}},"approved_build_keys":{"type":"array","items":{"type":"string"}},"approved_source_keys":{"type":"array","items":{"type":"string"}},"approved_default_secrets":{"type":"array","items":{"type":"string"}},"approved_default_configuration":{"type":"array","items":{"type":"string"}}}},"PreviewSharingSelection":{"type":"object","required":["snapshot_version"],"properties":{"snapshot_version":{"type":"integer"},"source_keys":{"type":"array","items":{"type":"string"}},"default_secrets":{"type":"array","items":{"type":"string"}},"default_configuration":{"type":"array","items":{"type":"string"}},"build_keys":{"type":"array","items":{"type":"string"}},"build_secrets":{"type":"array","items":{"type":"string"}}}},"PreviewBindingSource":{"type":"object","required":["id","name","slug","scope_kind","latest_version_number","available","source_app_name","source_environment_name","versions"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"scope_kind":{"type":"string"},"source_app_name":{"type":"string","nullable":true},"source_environment_name":{"type":"string","nullable":true},"available":{"type":"boolean"},"latest_version_number":{"type":"integer","nullable":true},"versions":{"type":"array","items":{"type":"object","required":["id","version_number"],"properties":{"id":{"type":"string"},"version_number":{"type":"integer"}}}}}},"PreviewBindingSelection":{"type":"object","required":["env_key"],"properties":{"env_key":{"type":"string"},"mode":{"type":"string","enum":["linked","masked"]},"secret_id":{"type":"string"},"secret_version_id":{"type":"string"}}},"PreviewOwnedSecret":{"type":"object","required":["id","env_key","name","status","latest_version_number","available"],"properties":{"id":{"type":"string"},"env_key":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"latest_version_number":{"type":"integer","nullable":true},"available":{"type":"boolean"}}},"PreviewOwnedSecretReply":{"type":"object","required":["secret"],"properties":{"secret":{"$ref":"#/components/schemas/PreviewOwnedSecret"}}},"PreviewDefaultsRecord":{"allOf":[{"$ref":"#/components/schemas/PreviewProfileRecord"},{"type":"object","required":["bindings"],"properties":{"bindings":{"type":"array","items":{"$ref":"#/components/schemas/PreviewSecretBinding"}}}}]},"PreviewSourceKeyChange":{"type":"object","required":["key","change"],"properties":{"key":{"type":"string"},"change":{"type":"string","enum":["added","removed","changed"]}}},"PreviewSourceServiceChange":{"type":"object","required":["service_id","service_name","change","settings","variables","build_arguments","endpoints_changed","source_placements_changed"],"properties":{"service_id":{"type":"string"},"service_name":{"type":"string","nullable":true},"change":{"type":"string","enum":["added","removed","retained"]},"settings":{"type":"array","items":{"$ref":"#/components/schemas/PreviewSourceKeyChange"}},"resource_defaults":{"type":"array","items":{"$ref":"#/components/schemas/PreviewSourceKeyChange"}},"variables":{"type":"array","items":{"$ref":"#/components/schemas/PreviewSourceKeyChange"}},"build_arguments":{"type":"array","items":{"$ref":"#/components/schemas/PreviewSourceKeyChange"}},"backing_resources_changed":{"type":"boolean"},"endpoints_changed":{"type":"boolean"},"source_placements_changed":{"type":"boolean"}}},"PreviewSourceReview":{"type":"object","required":["review_token","snapshot_version","expires_at","diff","preserved_overrides","preserved_profile_keys","preserved_secret_binding_keys","sharing_approvals_reset"],"properties":{"review_token":{"type":"string"},"snapshot_version":{"type":"integer"},"expires_at":{"type":"string","format":"date-time"},"sharing_approvals_reset":{"type":"boolean"},"preserved_profile_keys":{"type":"array","items":{"type":"string"}},"preserved_resource_overrides":{"$ref":"#/components/schemas/PreviewResourceOverrides"},"preserved_secret_binding_keys":{"type":"array","items":{"type":"string"}},"preserved_overrides":{"type":"array","items":{"type":"object","required":["key","service_id"],"properties":{"key":{"type":"string"},"service_id":{"type":"string","nullable":true}}}},"diff":{"type":"object","required":["root_path_changed","source_environment_changed","variables","services"],"properties":{"root_path_changed":{"type":"boolean"},"source_environment_changed":{"type":"boolean"},"variables":{"type":"array","items":{"$ref":"#/components/schemas/PreviewSourceKeyChange"}},"services":{"type":"array","items":{"$ref":"#/components/schemas/PreviewSourceServiceChange"}}}}}},"ProactiveAgentWaitlistJoinRequest":{"type":"object","required":["email"],"additionalProperties":false,"properties":{"email":{"type":"string","maxLength":255},"first_task":{"type":"string","maxLength":280,"nullable":true,"description":"The first job they would hand an agent. Optional."},"invite_code":{"type":"string","maxLength":16,"nullable":true,"description":"The referral code of the invite link they arrived through."},"website":{"type":"string","nullable":true,"description":"Honeypot. Render it hidden and leave it empty; any value discards the request."}}},"ProactiveAgentWaitlistStatus":{"type":"object","required":["referral_code","position","position_after_next_referral","total","referral_count","places_per_referral"],"additionalProperties":false,"properties":{"referral_code":{"type":"string","description":"Shared in this entry's invite link."},"position":{"type":"integer","description":"1-based place in the queue."},"position_after_next_referral":{"type":"integer","description":"The place one more referral would give this entry, as Rails would assign it."},"total":{"type":"integer","description":"Display total including a random increment per signup; not the actual number of entries."},"referral_count":{"type":"integer","description":"People who joined through this entry's link."},"places_per_referral":{"type":"integer","description":"Most places one referral moves the entry up; fewer when boosted entries are ahead."}}},"ProductMapJourneyQualification":{"type":"object","additionalProperties":false,"required":["id","status","usable","failure_code","failure_message","checked_at","created_at","updated_at"],"properties":{"id":{"type":"string"},"status":{"type":"string","enum":["pending","checking","qualified","refused"]},"usable":{"type":"boolean"},"failure_code":{"type":["string","null"]},"failure_message":{"type":["string","null"]},"checked_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}}},"ProductMapJourneyReplay":{"type":"object","additionalProperties":false,"required":["id","variant_id","run_id","scenario_run_id","status","review_reason","source_digest","actor_id","failure_code","failure_message","preparation_receipt","replay_required","qualification_status","qualification","can_request_qualification","created_at","updated_at"],"properties":{"id":{"type":"string"},"variant_id":{"type":"string"},"run_id":{"type":["string","null"]},"scenario_run_id":{"type":["string","null"]},"status":{"type":"string","enum":["pending","prepared","refused"]},"review_reason":{"type":"string"},"source_digest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"actor_id":{"type":["string","null"]},"failure_code":{"type":["string","null"]},"failure_message":{"type":["string","null"]},"preparation_receipt":{"type":["object","null"],"additionalProperties":false,"required":["run_id","scenario_run_id","plan_digest","definition_digest","environment_revision_id","source_digest","actor_id","replay_required"],"properties":{"run_id":{"type":"string"},"scenario_run_id":{"type":"string"},"plan_digest":{"type":"string"},"definition_digest":{"type":"string"},"environment_revision_id":{"type":"string"},"source_digest":{"type":"string"},"actor_id":{"type":["string","null"]},"replay_required":{"type":"boolean","const":true}}},"replay_required":{"type":"boolean","const":true},"qualification_status":{"type":"string","enum":["unqualified","pending","checking","qualified","refused","unavailable"]},"qualification":{"anyOf":[{"$ref":"#/components/schemas/ProductMapJourneyQualification"},{"type":"null"}]},"can_request_qualification":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}}},"ProductMapLabels":{"type":"object","required":["screen_key","state_key","title","area","purpose","state","regions","controls"],"properties":{"screen_key":{"type":"string"},"state_key":{"type":"string"},"title":{"type":"string"},"area":{"type":"string"},"purpose":{"type":"string"},"state":{"type":"string"},"regions":{"type":"array","items":{"type":"object","required":["name","kind"],"properties":{"name":{"type":"string"},"kind":{"type":"string","enum":["navigation","header","content","form","list","tabs","dialog","feedback","other"]}}}},"controls":{"type":"array","items":{"type":"object","required":["label","role","region","purpose"],"properties":{"control_id":{"type":"string","pattern":"^[a-f0-9]{64}$"},"label":{"type":"string"},"role":{"type":"string"},"region":{"type":"string"},"purpose":{"type":"string"}}}}}},"ProductMapModelJudgment":{"type":"object","additionalProperties":false,"required":["disposition","candidate_id","confidence","reason"],"properties":{"disposition":{"type":"string","enum":["match","new","uncertain"]},"candidate_id":{"type":["string","null"]},"confidence":{"type":"number","minimum":0,"maximum":1},"reason":{"type":"string"}}},"ProductMapIdentityJudgment":{"type":"object","additionalProperties":false,"required":["disposition"],"properties":{"disposition":{"type":"string","enum":["semantic_keys","match","new","uncertain"]},"candidate_id":{"type":["string","null"],"pattern":"^[a-f0-9]{64}$"},"confidence":{"type":"number","minimum":0,"maximum":1},"reason":{"type":"string"},"model_judgment":{"$ref":"#/components/schemas/ProductMapModelJudgment"},"inherited_uncertainty":{"type":"boolean"},"candidates":{"type":"array","maxItems":30,"items":{"type":"object","additionalProperties":false,"required":["id","observation_id","interpretation_id"],"properties":{"id":{"type":"string"},"observation_id":{"type":"string"},"interpretation_id":{"type":["string","null"]}}}}}},"ProductMapInterpretation":{"type":"object","required":["id","model","reasoning_effort","prompt_version","schema_version","provenance","source_digest","identity","reused_from_id","created_at","identity_decision_id"],"properties":{"id":{"type":"string"},"model":{"type":"string"},"reasoning_effort":{"type":"string"},"prompt_version":{"type":"string"},"schema_version":{"type":"string"},"provenance":{"type":"string","enum":["inference","pixel_reuse","manual"]},"source_digest":{"type":"string"},"identity":{"$ref":"#/components/schemas/ProductMapIdentityJudgment"},"reused_from_id":{"type":["string","null"]},"created_at":{"type":"string"},"identity_decision_id":{"type":["string","null"]}}},"ProductMapState":{"type":"object","required":["execution_scope","id","observation_id","labels","url","captured_at","screenshot_url","actions","omitted_controls","revision_id","account_id","actor_key","label_status","interpretation","identity_review","identity_uncertain"],"properties":{"details_loaded":{"type":"boolean"},"execution_scope":{"oneOf":[{"$ref":"#/components/schemas/ProductMapExecutionScope"},{"type":"null"}]},"actor_key":{"type":"string"},"label_status":{"type":"string","enum":["pending","labeling","labeled","failed"]},"interpretation":{"oneOf":[{"$ref":"#/components/schemas/ProductMapInterpretation"},{"type":"null"}]},"id":{"type":"string"},"observation_id":{"type":"string"},"revision_id":{"type":"string"},"account_id":{"type":["string","null"]},"labels":{"$ref":"#/components/schemas/ProductMapLabels"},"url":{"type":"string"},"omitted_controls":{"type":"integer"},"captured_at":{"type":"string"},"screenshot_url":{"type":["string","null"]},"actions":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapTransition"}},"identity_review":{"$ref":"#/components/schemas/ProductMapIdentitySnapshot"},"identity_uncertain":{"type":"boolean"}}},"ProductMapTransition":{"type":"object","required":["source","target","action","kind","run_id","step_id","revision_id","account_id","id","status","outcome","source_observation_id","destination_observation_id","observed_at","source_control"],"properties":{"account_name":{"type":"string","description":"Project-scoped display name, present in page and state-detail projections."},"revision_name":{"type":"string","description":"Project-scoped environment and revision display name, present in page and state-detail projections."},"source":{"type":"string"},"target":{"type":"string"},"action":{"type":"string"},"kind":{"type":"string"},"run_id":{"type":"string"},"step_id":{"type":["string","null"]},"revision_id":{"type":"string"},"account_id":{"type":["string","null"]},"id":{"type":"string"},"status":{"type":"string","enum":["passed","failed","observed","unverified","conflicting"]},"outcome":{"type":"string","enum":["observed","same_state","unchanged","failed","automatic","unresolved"]},"source_observation_id":{"type":"string"},"destination_observation_id":{"type":"string"},"observed_at":{"type":"string"},"source_control":{"type":["object","null"],"required":["label","role"],"properties":{"label":{"type":"string"},"role":{"type":"string"}}}}},"ProductMapAnswer":{"type":"object","required":["question","scope","status","model","reasoning_effort","evidence_truncated","claims","unknowns"],"properties":{"question":{"type":"string"},"scope":{"$ref":"#/components/schemas/ProductMapScope"},"status":{"type":"string","enum":["answered","insufficient_evidence"]},"model":{"type":"string"},"reasoning_effort":{"type":"string"},"evidence_truncated":{"type":"boolean"},"unknowns":{"type":"array","items":{"type":"string"}},"claims":{"type":"array","items":{"type":"object","required":["text","citations"],"properties":{"text":{"type":"string"},"citations":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapAnswerCitation"}}}}}}},"ProductMapAnswerCitation":{"type":"object","required":["id","kind","title","observations","transition","journey"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["observation","transition","journey"]},"title":{"type":"string"},"observations":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapState"}},"transition":{"oneOf":[{"$ref":"#/components/schemas/ProductMapTransition"},{"type":"null"}]},"journey":{"oneOf":[{"$ref":"#/components/schemas/ProductMapJourneyVariant"},{"type":"null"}]}}},"ProductMapPage":{"type":"object","required":["connections_loaded","map_version","journeys","project","revision_id","account_id","model","reasoning_effort","revisions","accounts","counts","states","transitions","transitions_truncated","next_cursor","frontier","frontier_truncated","attempts","areas","frontier_next_cursor"],"properties":{"connections_loaded":{"type":"boolean","description":"Whether transitions, attempts and unresolved controls have been loaded."},"map_version":{"type":["string","null"],"description":"Project change watermark captured before connection loading; null for screens-only responses."},"can_ask_questions":{"type":"boolean"},"journeys":{"$ref":"#/components/schemas/ProductMapJourneyPage"},"project":{"$ref":"#/components/schemas/ProjectHeader"},"revision_id":{"type":["string","null"]},"account_id":{"type":["string","null"]},"persona_id":{"type":"string"},"personas":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapPersona"}},"model":{"type":"string"},"reasoning_effort":{"type":"string"},"revisions":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"accounts":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"counts":{"$ref":"#/components/schemas/ProductMapCounts"},"states":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapState"}},"transitions":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapTransition"}},"transitions_truncated":{"type":"boolean"},"next_cursor":{"type":["string","null"]},"frontier":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapFrontierItem"}},"frontier_truncated":{"type":"boolean"},"attempts":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapTransition"}},"areas":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapArea"}},"frontier_next_cursor":{"type":["string","null"]}}},"ProductMapCounts":{"type":"object","required":["observations","states","pending","failed"],"properties":{"observations":{"type":"integer"},"states":{"type":"integer"},"pending":{"type":"integer"},"failed":{"type":"integer"}}},"ProductMapScope":{"type":"object","required":["revision_id","account_id","query","area","since","before"],"properties":{"persona_id":{"type":"string"},"revision_id":{"type":["string","null"]},"account_id":{"type":"string"},"query":{"type":"string"},"area":{"type":"string"},"since":{"type":["string","null"]},"before":{"type":["string","null"]}}},"ProductMapArea":{"type":"object","required":["name","states"],"properties":{"name":{"type":"string"},"states":{"type":"integer"}}},"ProductMapFrontierItem":{"type":"object","required":["id","state_id","observation_id","label","role","area","status","reason","priority","attempts","evidence_ids","revision_id","account_id"],"properties":{"id":{"type":"string"},"state_id":{"type":"string"},"observation_id":{"type":"string"},"label":{"type":"string"},"role":{"type":"string"},"area":{"type":"string"},"status":{"type":"string","enum":["unexplored","blocked","ambiguous","needs_outcome","needs_fixture","identity_uncertain"]},"reason":{"type":"string"},"priority":{"type":"integer"},"attempts":{"type":"integer"},"evidence_ids":{"type":"array","items":{"type":"string"}},"revision_id":{"type":"string"},"account_id":{"type":["string","null"]}}},"ProductMapBrief":{"type":"object","required":["scope","counts","areas","frontier","truncated"],"properties":{"scope":{"$ref":"#/components/schemas/ProductMapScope"},"navigation":{"$ref":"#/components/schemas/ProductMapNavigationInventory"},"counts":{"$ref":"#/components/schemas/ProductMapCounts"},"areas":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapArea"}},"frontier":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapFrontierItem"}},"truncated":{"type":"boolean"}}},"ProductMapStateSummary":{"type":"object","required":["id","observation_id","labels","url","captured_at","screenshot_url","omitted_controls","revision_id","account_id"],"properties":{"id":{"type":"string"},"observation_id":{"type":"string"},"revision_id":{"type":"string"},"account_id":{"type":["string","null"]},"labels":{"type":"object","required":["screen_key","state_key","title","area","purpose","state"],"properties":{"screen_key":{"type":"string"},"state_key":{"type":"string"},"title":{"type":"string"},"area":{"type":"string"},"purpose":{"type":"string"},"state":{"type":"string"}}},"url":{"type":"string"},"omitted_controls":{"type":"integer"},"captured_at":{"type":"string"},"screenshot_url":{"type":["string","null"]}}},"ProductMapSearch":{"type":"object","required":["scope","states","next_cursor","truncated"],"properties":{"scope":{"$ref":"#/components/schemas/ProductMapScope"},"states":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapStateSummary"}},"next_cursor":{"type":["string","null"]},"truncated":{"type":"boolean"}}},"ProductMapStateDetail":{"type":"object","required":["scope","state","incoming","outgoing","attempts","truncated","layout"],"properties":{"scope":{"$ref":"#/components/schemas/ProductMapScope"},"state":{"$ref":"#/components/schemas/ProductMapState"},"incoming":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapTransition"}},"outgoing":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapTransition"}},"attempts":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapTransition"}},"truncated":{"type":"boolean"},"layout":{"$ref":"#/components/schemas/ProductMapLayout"}}},"ProductMapObservation":{"type":"object","required":["scope","state","observation_id","status","capture","evidence_id","events"],"properties":{"scope":{"$ref":"#/components/schemas/ProductMapScope"},"state":{"anyOf":[{"$ref":"#/components/schemas/ProductMapState"},{"type":"null"}]},"observation_id":{"type":"string"},"status":{"type":"string"},"capture":{"type":"object","additionalProperties":true},"evidence_id":{"type":"string"},"events":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapTransition"}}}},"ProductMapFrontier":{"type":"object","required":["scope","items","truncated","next_cursor"],"properties":{"scope":{"$ref":"#/components/schemas/ProductMapScope"},"navigation":{"$ref":"#/components/schemas/ProductMapNavigationInventory"},"items":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapFrontierItem"}},"truncated":{"type":"boolean"},"next_cursor":{"type":["string","null"]}}},"ProductMapNavigationInventory":{"type":"object","required":["coverage","pages","links","truncated","snapshots_checked"],"properties":{"coverage":{"type":"string","enum":["navigation_candidates_only"]},"truncated":{"type":"boolean"},"snapshots_checked":{"type":"integer"},"pages":{"type":"array","items":{"type":"object","required":["url","title","sources","fetch_status","observation_id","capture_available"],"properties":{"url":{"type":"string"},"title":{"type":"string"},"sources":{"type":"array","items":{"type":"string","enum":["dom","html","sitemap"]}},"fetch_status":{"type":"string","enum":["not_fetched","fetched","unavailable","not_html","redirected","response_limit"]},"observation_id":{"type":"string"},"capture_available":{"type":"boolean"}}}},"links":{"type":"array","items":{"type":"object","required":["source","target","label","kind"],"properties":{"source":{"type":"string"},"target":{"type":"string"},"label":{"type":"string"},"kind":{"type":"string","enum":["dom","html"]}}}}}},"ProductMapPath":{"type":"object","required":["scope","status","steps","replay_required","truncated"],"properties":{"scope":{"$ref":"#/components/schemas/ProductMapScope"},"status":{"type":"string","enum":["candidate","scope_required","unobserved"]},"steps":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapTransition"}},"replay_required":{"type":"boolean","const":true},"truncated":{"type":"boolean"}}},"ProductMapComparison":{"type":"object","required":["from_revision_id","to_revision_id","account_id","added","removed","changed","truncated","interpretation","counts","details","details_truncated"],"properties":{"counts":{"type":"object","required":["added","removed","changed"],"properties":{"added":{"type":"integer"},"removed":{"type":"integer"},"changed":{"type":"integer"}}},"details_truncated":{"type":"boolean"},"details":{"type":"object","required":["added","removed","changed"],"properties":{"added":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapComparisonSnapshot"}},"removed":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapComparisonSnapshot"}},"changed":{"type":"array","items":{"type":"object","required":["state_id","before","after"],"properties":{"state_id":{"type":"string"},"before":{"$ref":"#/components/schemas/ProductMapComparisonSnapshot"},"after":{"$ref":"#/components/schemas/ProductMapComparisonSnapshot"}}}}}},"from_revision_id":{"type":"string"},"to_revision_id":{"type":"string"},"account_id":{"type":"string"},"added":{"type":"array","items":{"type":"string"}},"removed":{"type":"array","items":{"type":"string"}},"changed":{"type":"array","items":{"type":"object","required":["state_id","before_observation_id","after_observation_id"],"properties":{"state_id":{"type":"string"},"before_observation_id":{"type":"string"},"after_observation_id":{"type":"string"}}}},"truncated":{"type":"boolean"},"interpretation":{"type":"string"}}},"ProductMapComparisonSnapshot":{"type":"object","required":["state_id","observation_id","revision_id","title","purpose","state","area","captured_at","screenshot_url"],"properties":{"state_id":{"type":"string"},"observation_id":{"type":"string"},"revision_id":{"type":"string"},"title":{"type":"string"},"purpose":{"type":"string"},"state":{"type":"string"},"area":{"type":"string"},"captured_at":{"type":"string"},"screenshot_url":{"type":["string","null"]}}},"ProductMapComparisonPage":{"type":"object","required":["project","filters","revisions","accounts","requirements","comparison"],"properties":{"project":{"$ref":"#/components/schemas/ProjectHeader"},"filters":{"allOf":[{"$ref":"#/components/schemas/ProductMapScope"},{"type":"object","required":["compare_revision_id"],"properties":{"compare_revision_id":{"type":["string","null"]}}}]},"revisions":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapChoice"}},"accounts":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapChoice"}},"requirements":{"type":"array","items":{"type":"string"}},"comparison":{"oneOf":[{"$ref":"#/components/schemas/ProductMapComparison"},{"type":"null"}]}}},"ProductMapChoice":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}},"ProductMapLayout":{"type":"object","required":["viewport","coordinate_space","document","full_page_status","full_page_screenshot_url","controls"],"properties":{"viewport":{"type":"object","required":["width","height"],"properties":{"width":{"type":"number"},"height":{"type":"number"}}},"coordinate_space":{"type":"string","const":"viewport"},"document":{"type":["object","null"],"additionalProperties":false,"properties":{"x":{"type":"number","minimum":-1000000,"maximum":1000000},"y":{"type":"number","minimum":-1000000,"maximum":1000000},"width":{"type":"number","minimum":0,"maximum":1000000},"height":{"type":"number","minimum":0,"maximum":1000000},"content_width":{"type":"number","minimum":0,"maximum":1000000},"content_height":{"type":"number","minimum":0,"maximum":1000000},"sticky_regions":{"type":"array","maxItems":20,"items":{"type":"object","additionalProperties":false,"properties":{"role":{"type":"string","maxLength":80},"position":{"enum":["fixed","sticky"]},"rect":{"type":"object","additionalProperties":false,"properties":{"x":{"type":"number","minimum":-1000000,"maximum":1000000},"y":{"type":"number","minimum":-1000000,"maximum":1000000},"w":{"type":"number","minimum":0,"maximum":1000000},"h":{"type":"number","minimum":0,"maximum":1000000}},"required":["x","y","w","h"]}},"required":["role","position","rect"]}}},"required":["x","y","width","height","content_width","content_height","sticky_regions"]},"full_page_status":{"type":"string"},"full_page_screenshot_url":{"type":["string","null"]},"controls":{"type":"array","items":{"type":"object","required":["label","role","disabled","selected","operations","rect","id"],"properties":{"label":{"type":"string"},"role":{"type":"string"},"disabled":{"type":"boolean"},"selected":{"type":"boolean"},"operations":{"type":"array","items":{"type":"string"}},"rect":{"type":["object","null"],"additionalProperties":false,"properties":{"x":{"type":"number","minimum":-1000000,"maximum":1000000},"y":{"type":"number","minimum":-1000000,"maximum":1000000},"w":{"type":"number","minimum":0,"maximum":1000000},"h":{"type":"number","minimum":0,"maximum":1000000}},"required":["x","y","w","h"]},"id":{"type":"string"}}}}}},"ProductMapRunReadRequest":{"oneOf":[{"type":"object","required":["tool","arguments"],"additionalProperties":false,"properties":{"tool":{"type":"string","const":"verify_product_brief"},"arguments":{"type":"object","additionalProperties":false,"properties":{},"required":[]}}},{"type":"object","required":["tool","arguments"],"additionalProperties":false,"properties":{"tool":{"type":"string","const":"verify_search_product_states"},"arguments":{"type":"object","additionalProperties":false,"properties":{"query":{"type":"string","minLength":1,"maxLength":800},"area":{"type":"string","minLength":1,"maxLength":240},"after":{"type":"string","minLength":1,"maxLength":64}},"required":[]}}},{"type":"object","required":["tool","arguments"],"additionalProperties":false,"properties":{"tool":{"type":"string","const":"verify_read_product_state"},"arguments":{"type":"object","additionalProperties":false,"properties":{"include_image":{"type":"boolean"},"state_id":{"type":"string","minLength":1,"maxLength":64}},"required":["state_id"]}}},{"type":"object","required":["tool","arguments"],"additionalProperties":false,"properties":{"tool":{"type":"string","const":"verify_read_product_observation"},"arguments":{"type":"object","additionalProperties":false,"properties":{"include_image":{"type":"boolean"},"observation_id":{"type":"string","minLength":1,"maxLength":128}},"required":["observation_id"]}}},{"type":"object","required":["tool","arguments"],"additionalProperties":false,"properties":{"tool":{"type":"string","const":"verify_product_frontier"},"arguments":{"type":"object","additionalProperties":false,"properties":{"after":{"type":"string","minLength":1,"maxLength":1024}},"required":[]}}},{"type":"object","required":["tool","arguments"],"additionalProperties":false,"properties":{"tool":{"type":"string","const":"verify_plan_product_path"},"arguments":{"type":"object","additionalProperties":false,"properties":{"source":{"type":"string","minLength":1,"maxLength":64},"target":{"type":"string","minLength":1,"maxLength":64}},"required":["source","target"]}}},{"type":"object","required":["tool","arguments"],"additionalProperties":false,"properties":{"tool":{"type":"string","const":"verify_product_source_overview"},"arguments":{"type":"object","additionalProperties":false,"properties":{"after":{"type":"string","minLength":1,"maxLength":6},"category":{"type":"string","minLength":1,"maxLength":20},"query":{"type":"string","minLength":1,"maxLength":240}},"required":[]}}},{"type":"object","required":["tool","arguments"],"additionalProperties":false,"properties":{"tool":{"type":"string","const":"verify_read_product_source"},"arguments":{"type":"object","additionalProperties":false,"properties":{"path":{"type":"string","minLength":1,"maxLength":4096},"start_line":{"type":"string","minLength":1,"maxLength":6}},"required":["path"]}}}]},"ProductMapReadError":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"code":{"type":"string"}}},"ProductMapJourney":{"type":"object","required":["id","title","goal","variant_count"],"properties":{"preview":{"anyOf":[{"$ref":"#/components/schemas/ProductMapJourneyPreview"},{"type":"null"}]},"default_variant_id":{"type":["string","null"]},"id":{"type":"string"},"title":{"type":"string"},"goal":{"type":"string"},"variant_count":{"type":"integer"}}},"ProductMapJourneyPreview":{"type":"object","required":["variant_id","step_count","capture_count","part_count","persona_id","persona_name","steps"],"properties":{"variant_id":{"type":"string"},"step_count":{"type":"integer"},"capture_count":{"type":"integer"},"part_count":{"type":"integer"},"persona_id":{"type":["string","null"]},"persona_name":{"type":["string","null"]},"steps":{"type":"array","maxItems":3,"items":{"type":"object","required":["observation_id","title","screenshot_url"],"properties":{"observation_id":{"type":"string"},"title":{"type":"string"},"screenshot_url":{"type":["string","null"]}}}}}},"ProductMapJourneyPage":{"type":"object","required":["scope","journeys","next_cursor"],"properties":{"coverage":{"anyOf":[{"$ref":"#/components/schemas/ProductMapBranchCoverage"},{"type":"null"}]},"scope":{"$ref":"#/components/schemas/ProductMapScope"},"journeys":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapJourney"}},"next_cursor":{"type":["string","null"]}}},"ProductMapJourneyDetail":{"type":"object","required":["scope","journey","variants","next_cursor","tree"],"properties":{"tree_loaded":{"type":"boolean"},"tree":{"$ref":"#/components/schemas/ProductMapJourneyTree"},"scope":{"$ref":"#/components/schemas/ProductMapScope"},"journey":{"$ref":"#/components/schemas/ProductMapJourney"},"variants":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapJourneyVariant"}},"next_cursor":{"type":["string","null"]}}},"ProductMapJourneyTree":{"type":"object","required":["roots","decisions","coverage","paths_truncated"],"properties":{"paths":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapJourneyPath"}},"states":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapState"}},"paths_truncated":{"type":"boolean"},"roots":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapJourneyTreeNode"}},"decisions":{"type":"array","items":{"type":"object","required":["id","revision_id","revision_label","title","alternatives"],"properties":{"id":{"type":"string"},"revision_id":{"type":"string"},"revision_label":{"type":"string"},"title":{"type":"string"},"alternatives":{"type":"array","items":{"type":"object","required":["key","condition","status","evidence","inspect_variant_id"],"properties":{"inspect_variant_id":{"type":["string","null"]},"key":{"type":"string"},"condition":{"type":"string"},"status":{"$ref":"#/components/schemas/ProductMapBranchStatus"},"evidence":{"type":"array","items":{"type":"object","required":["variant_id","event_id","account_id","run_id","status"],"properties":{"variant_id":{"type":"string"},"event_id":{"type":"string"},"account_id":{"type":"string"},"run_id":{"type":"string"},"status":{"$ref":"#/components/schemas/ProductMapBranchStatus"}}}}}}}}}},"coverage":{"$ref":"#/components/schemas/ProductMapBranchCoverage"}}},"ProductMapJourneyPath":{"type":"object","required":["variant_id","steps","gaps","end_condition","truncated"],"properties":{"label":{"type":"string"},"variant_id":{"type":"string"},"gaps":{"type":"array","items":{"type":"string"}},"end_condition":{"type":"string"},"truncated":{"type":"boolean"},"steps":{"type":"array","items":{"type":"object","required":["node_id","state_id","title","action","outcome","status"],"properties":{"node_id":{"type":"string"},"state_id":{"type":["string","null"]},"title":{"type":"string"},"action":{"type":["string","null"]},"outcome":{"type":["string","null"]},"status":{"$ref":"#/components/schemas/ProductMapBranchStatus"}}}}}},"ProductMapBranchCoverage":{"type":"object","required":["known","observed","blocked","unresolved","unexplored","variants","annotated_variants","unannotated_variants","truncated","inventory_complete"],"properties":{"review_required_variants":{"type":"integer"},"known":{"type":"integer"},"observed":{"type":"integer"},"blocked":{"type":"integer"},"unresolved":{"type":"integer"},"unexplored":{"type":"integer"},"variants":{"type":"integer"},"annotated_variants":{"type":"integer"},"unannotated_variants":{"type":"integer"},"truncated":{"type":"boolean"},"inventory_complete":{"type":"boolean","const":false}}},"ProductMapBranchStatus":{"type":"string","enum":["observed","blocked","unresolved","unexplored"]},"ProductMapJourneyTreeNode":{"type":"object","required":["id","key","title","condition","status","variant_ids","children"],"properties":{"inspect_variant_id":{"type":["string","null"]},"kind":{"type":"string","enum":["revision","screen","condition"]},"state_id":{"type":["string","null"]},"actions":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"key":{"type":"string"},"title":{"type":"string"},"condition":{"type":"boolean"},"status":{"$ref":"#/components/schemas/ProductMapBranchStatus"},"variant_ids":{"type":"array","items":{"type":"string"}},"children":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapJourneyTreeNode"}}}},"ProductMapJourneyInterpretation":{"type":"object","required":["disposition","candidate_id","confidence","title","goal","end_condition","prerequisites","gaps","event_ids"],"properties":{"task_key":{"type":"string"},"outcome":{"type":"object","required":["status","summary","event_id"],"properties":{"status":{"type":"string","enum":["reached","partial","blocked","cancelled","unknown"]},"summary":{"type":"string"},"event_id":{"type":["string","null"]}}},"event_roles":{"type":"array","items":{"type":"object","required":["event_id","kind","title","visible_result"],"properties":{"event_id":{"type":"string"},"kind":{"type":"string","enum":["choice","navigation","back","cancel","recovery","automatic","input","submit"]},"title":{"type":"string"},"visible_result":{"type":"string"}}}},"branches":{"type":"array","items":{"type":"object","required":["decision_key","title","event_id","condition_key","alternatives"],"properties":{"decision_key":{"type":"string"},"title":{"type":"string"},"event_id":{"type":"string"},"condition_key":{"type":"string"},"alternatives":{"type":"array","items":{"type":"object","required":["key","condition"],"properties":{"key":{"type":"string"},"condition":{"type":"string"},"control_label":{"type":"string"}}}}}}},"disposition":{"type":"string","enum":["match","new"]},"candidate_id":{"type":["string","null"]},"confidence":{"type":"number"},"title":{"type":"string"},"goal":{"type":"string"},"end_condition":{"type":"string"},"prerequisites":{"type":"array","items":{"type":"string"}},"gaps":{"type":"array","items":{"type":"string"}},"event_ids":{"type":"array","items":{"type":"string"}}}},"ProductMapJourneyObservation":{"type":"object","required":["id","interpretation_id","source_digest","state_id","sequence","labels","captured_at","screenshot_url","current_state_id"],"properties":{"id":{"type":"string"},"interpretation_id":{"type":["string","null"]},"source_digest":{"type":"string"},"state_id":{"type":"string"},"sequence":{"type":"integer"},"captured_at":{"type":"string"},"screenshot_url":{"type":["string","null"]},"labels":{"type":"object","required":["title","area","purpose","state"],"properties":{"title":{"type":"string"},"area":{"type":"string"},"purpose":{"type":"string"},"state":{"type":"string"}}},"current_state_id":{"type":["string","null"]}}},"ProductMapJourneyVariant":{"type":"object","required":["id","status","replay_required","can_prepare_replay","replay_actor_id","replay","interpretation","storyboard","map_path","gaps","truncated","revision_id","account_key","actor_key","run_id","observed_at","model","reasoning_effort","source_digest"],"properties":{"observed_result":{"type":"string"},"milestone_observation_ids":{"type":"array","items":{"type":"string"}},"reading_links":{"type":"array","items":{"type":"object","required":["source_observation_id","destination_observation_id","events","continuous"],"properties":{"source_observation_id":{"type":"string"},"destination_observation_id":{"type":"string"},"events":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapTransition"}},"continuous":{"type":"boolean"}}}},"storyboard_parts":{"type":"array","items":{"type":"object","required":["id","observation_ids","milestone_observation_ids"],"properties":{"id":{"type":"string"},"observation_ids":{"type":"array","items":{"type":"string"}},"milestone_observation_ids":{"type":"array","items":{"type":"string"}}}}},"path_label":{"type":"string"},"id":{"type":"string"},"status":{"type":"string","enum":["candidate"]},"replay_required":{"type":"boolean","const":true},"can_prepare_replay":{"type":"boolean"},"replay_actor_id":{"type":["string","null"]},"replay":{"anyOf":[{"$ref":"#/components/schemas/ProductMapJourneyReplay"},{"type":"null"}]},"interpretation":{"$ref":"#/components/schemas/ProductMapJourneyInterpretation"},"storyboard":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapJourneyStep"}},"map_path":{"$ref":"#/components/schemas/ProductMapJourneyMap"},"gaps":{"type":"array","items":{"type":"string"}},"truncated":{"type":"boolean"},"revision_id":{"type":"string"},"account_key":{"type":"string"},"actor_key":{"type":"string"},"run_id":{"type":"string"},"observed_at":{"type":"string"},"model":{"type":"string"},"reasoning_effort":{"type":"string"},"source_digest":{"type":"string"}}},"ProductMapJourneyMap":{"type":"object","required":["state_ids","transitions","gaps","truncated","replay_required"],"properties":{"state_ids":{"type":"array","items":{"type":"string"}},"transitions":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapTransition"}},"gaps":{"type":"array","items":{"type":"string"}},"truncated":{"type":"boolean"},"replay_required":{"type":"boolean","const":true}}},"ProductMapJourneyStep":{"type":"object","required":["observation","incoming_event"],"properties":{"observation":{"$ref":"#/components/schemas/ProductMapJourneyObservation"},"incoming_event":{"oneOf":[{"$ref":"#/components/schemas/ProductMapTransition"},{"type":"null"}]}}},"ProductMapIdentitySnapshot":{"type":"object","additionalProperties":false,"required":["observation_id","state_id","interpretation_id","identity_decision_id"],"properties":{"observation_id":{"type":"string"},"state_id":{"type":"string","pattern":"^[a-f0-9]{64}$"},"interpretation_id":{"type":["string","null"]},"identity_decision_id":{"type":["string","null"]}}},"ProductMapIdentityDecision":{"type":"object","required":["id","user_id","operation","reason","assignments","created_at"],"properties":{"id":{"type":"string"},"user_id":{"type":"string"},"operation":{"type":"string","enum":["merge","split"]},"reason":{"type":"string"},"created_at":{"type":"string"},"assignments":{"type":"array","items":{"type":"object","required":["observation_id","state_id","interpretation_id","identity_decision_id","result_state_id"],"properties":{"observation_id":{"type":"string"},"state_id":{"type":"string","pattern":"^[a-f0-9]{64}$"},"interpretation_id":{"type":["string","null"]},"identity_decision_id":{"type":["string","null"]},"result_state_id":{"type":"string"}}}}}},"ProductMapIdentityHistory":{"type":"object","required":["state","scope","identity_review","identity_uncertain","interpretations","decisions","interpretations_before","decisions_before","permissions"],"properties":{"state":{"$ref":"#/components/schemas/ProductMapState"},"scope":{"$ref":"#/components/schemas/ProductMapScope"},"identity_review":{"$ref":"#/components/schemas/ProductMapIdentitySnapshot"},"identity_uncertain":{"type":"boolean"},"interpretations":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/ProductMapInterpretation"},{"type":"object","required":["labels","state_id"],"properties":{"labels":{"$ref":"#/components/schemas/ProductMapLabels"},"state_id":{"type":"string"}}}]}},"decisions":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapIdentityDecision"}},"interpretations_before":{"type":["string","null"]},"decisions_before":{"type":["string","null"]},"permissions":{"type":"object","required":["manage"],"properties":{"manage":{"type":"boolean"}}}}},"ProductMapExecutionScope":{"oneOf":[{"$ref":"#/components/schemas/ProductMapScenarioExecutionScope"},{"$ref":"#/components/schemas/ProductMapDiscoveryExecutionScope"}]},"ProductMapScenarioExecutionScope":{"type":"object","additionalProperties":false,"required":["kind","scenario_run_id","run_id","definition_digest","environment_revision_id","actor_id","persona_id","persona_name","scenario_name","access_mode","account_id"],"properties":{"kind":{"type":"string","enum":["scenario"]},"scenario_run_id":{"type":"string"},"run_id":{"type":"string"},"definition_digest":{"type":"string"},"environment_revision_id":{"type":"string"},"actor_id":{"type":["string","null"]},"persona_id":{"type":"string"},"persona_name":{"type":"string"},"scenario_name":{"type":"string"},"access_mode":{"type":"string","enum":["anonymous","account","signup"]},"account_id":{"type":["string","null"]}}},"ProductMapDiscoveryExecutionScope":{"type":"object","additionalProperties":false,"required":["kind","persona_id","persona_name","access_mode","account_id"],"properties":{"kind":{"type":"string","enum":["discovery"]},"persona_id":{"type":"string"},"persona_name":{"type":"string"},"access_mode":{"type":"string","enum":["anonymous","account"]},"account_id":{"type":["string","null"]}}},"ProductMapPersona":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"role":{"type":"string"}}},"ProductMapOverview":{"type":"object","required":["views","states","view","state_count","transitions","attempts","generated_at","refreshing","truncated"],"properties":{"sections":{"type":"array","items":{"type":"object","required":["id","title","location","view_count","state_count","representative","members"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"location":{"type":"string"},"view_count":{"type":"integer"},"state_count":{"type":"integer"},"representative":{"$ref":"#/components/schemas/ProductMapState"},"personas":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapPersona"}},"members":{"type":"array","items":{"type":"object","required":["id","title","state_count","screenshot_url","recordings"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"state_count":{"type":"integer"},"screenshot_url":{"type":["string","null"]},"personas":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapPersona"}},"recordings":{"type":"array","items":{"type":"object","required":["id","url","state_count"],"properties":{"id":{"type":"string"},"url":{"type":["string","null"]},"state_count":{"type":"integer"}}}}}}}}}},"section_transitions":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapOverviewConnection"}},"views":{"type":"array","items":{"type":"object","required":["id","title","state_count","representative"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"state_count":{"type":"integer"},"representative":{"$ref":"#/components/schemas/ProductMapState"},"personas":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapPersona"}}}}},"states":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapState"}},"view":{"oneOf":[{"type":"null"},{"type":"object","required":["id","title","state_count"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"state_count":{"type":"integer"}}}]},"state_count":{"type":"integer"},"transitions":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapOverviewConnection"}},"attempts":{"type":"array","items":{"$ref":"#/components/schemas/ProductMapOverviewConnection"}},"generated_at":{"type":["string","null"]},"refreshing":{"type":"boolean"},"truncated":{"type":"boolean"}}},"ProductMapOverviewConnection":{"type":"object","required":["id","source","target","action","kind","status","outcome","observed_at"],"properties":{"id":{"type":"string"},"source":{"type":"string"},"target":{"type":"string"},"action":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"outcome":{"type":"string"},"observed_at":{"type":"string"}}},"ProjectOverviewDiscoveryPage":{"type":"object","required":["setup","discovery","permissions"],"properties":{"setup":{"$ref":"#/components/schemas/ProjectOverviewPage/properties/setup"},"discovery":{"$ref":"#/components/schemas/ProjectOverviewPage/properties/discovery"},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"}}},"ProjectOverviewMetricsPage":{"type":"object","required":["counts"],"properties":{"counts":{"$ref":"#/components/schemas/ProjectOverview/properties/counts"}}},"ProjectOverviewActivityPage":{"type":"object","required":["active_scenario_runs","active_discoveries"],"properties":{"active_scenario_runs":{"$ref":"#/components/schemas/ProjectActiveScenarioRuns"},"active_discoveries":{"$ref":"#/components/schemas/ProjectActiveDiscoveries"}}},"ProjectOverviewPullRequestsPage":{"type":"object","required":["pull_requests"],"properties":{"pull_requests":{"$ref":"#/components/schemas/ProjectOverview/properties/pull_requests"}}},"ProjectOverviewHistoryPage":{"type":"object","required":["runs"],"properties":{"runs":{"$ref":"#/components/schemas/ProjectOverviewPage/properties/runs"}}},"ProjectHeader":{"type":"object","required":["id","name","slug","execution_mode","archived_at","icon_url","demo","lock_version"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"demo":{"type":"boolean","description":"A signup's demo project, copied from the Acme Notes template. Archiving removes it."},"lock_version":{"type":"integer"},"execution_mode":{"type":"string","enum":["website","computer_use"]},"archived_at":{"type":["string","null"]},"icon_url":{"type":["string","null"]}}},"ProjectHeaderPage":{"type":"object","required":["project","permissions"],"properties":{"project":{"$ref":"#/components/schemas/ProjectHeader"},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"}}},"ProjectSettingsPage":{"type":"object","required":["project","permissions","messaging_enabled","available_messaging_environments","tester_numbers","messaging_conversations"],"properties":{"project":{"$ref":"#/components/schemas/Project"},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"},"messaging_enabled":{"type":"boolean"},"available_messaging_environments":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"tester_numbers":{"type":"array","items":{"type":"string"}},"messaging_conversations":{"type":"array","items":{"$ref":"#/components/schemas/VerifyMessagingSetup"}}}},"ProjectCredentialsPage":{"type":"object","required":["project","permissions","credentials","identity_provider","sign_in_check_apps","latest_sign_in_checks","composal_address_suffix","managed_google_available","managed_google_email"],"properties":{"managed_google_available":{"type":"boolean","description":"Whether this administrator can add or reuse the shared Google account for this website project."},"managed_google_email":{"type":"string","description":"The shared Google test account's email address."},"sign_in_check_apps":{"type":"array","description":"The project's apps a credential's live sign-in check can run on; empty when checks are unavailable.","items":{"type":"object","required":["id","name","url"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"url":{"type":"string","nullable":true,"description":"The app's address, so people can tell similar apps apart."}}}},"latest_sign_in_checks":{"type":"array","description":"Each credential's most recent sign-in check today, if any.","items":{"type":"object","required":["credential_id","id","outcome"],"properties":{"credential_id":{"type":"string"},"id":{"type":"string"},"outcome":{"$ref":"#/components/schemas/VerifySignInOutcome"},"reason":{"type":"string","nullable":true,"description":"Why a waiting, blocked or stopped check needs the person, in the agent's words: its question or first blocker. Null otherwise."}}}},"project":{"$ref":"#/components/schemas/ProjectHeader"},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"},"credentials":{"type":"array","items":{"$ref":"#/components/schemas/ProjectCredential"}},"composal_address_suffix":{"description":"What follows the chosen user part in a new Composal email address, for example @acme.mailposal.com. Null while new addresses come from the legacy mail provider, which names them itself.","type":["string","null"]},"identity_provider":{"description":"Where the organization's apps trust Composal sign-in, for new personas","type":"object","required":["issuer","discovery_url","email_suffix"],"properties":{"issuer":{"type":"string"},"discovery_url":{"type":"string"},"email_suffix":{"type":"string"}}}}},"ProjectPrTestingPage":{"type":"object","required":["project","pull_request_options"],"properties":{"project":{"$ref":"#/components/schemas/ProjectHeader"},"pull_request_options":{"$ref":"#/components/schemas/VerifyPullRequestOptions"}}},"ProjectFindingStateOption":{"type":"object","required":["value","label","count"],"properties":{"value":{"type":"string","enum":["active","deferred","closed"]},"label":{"type":"string"},"count":{"type":"integer"}}},"ProjectFindingPriorityOption":{"type":"object","required":["value","label","count"],"properties":{"value":{"type":"string","enum":["all","P0","P1","P2","P3","P4"]},"label":{"type":"string"},"count":{"type":"integer"}}},"ProjectFindingsPage":{"type":"object","required":["project","permissions","status_options","run_options","priority_options","state_options","findings","pagination"],"properties":{"project":{"$ref":"#/components/schemas/ProjectHeader"},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"},"state_options":{"description":"Lifecycle totals matching the search, across all priorities and pages","type":"array","items":{"$ref":"#/components/schemas/ProjectFindingStateOption"}},"priority_options":{"description":"Priority totals matching the search and selected lifecycle, across all pages","type":"array","items":{"$ref":"#/components/schemas/ProjectFindingPriorityOption"}},"run_options":{"description":"The 100 most recent runs with findings, plus the authorized selected run even if older or empty","type":"array","items":{"type":"object","required":["value","label","source"],"properties":{"value":{"type":"string"},"label":{"type":"string"},"source":{"type":"string","enum":["scenario_run","exploration","deep_scan"]}}}},"status_options":{"description":"Statuses a manager may set","type":"array","items":{"$ref":"#/components/schemas/SettableFindingStatus"}},"findings":{"description":"Findings from scenario runs, Discoveries and Deep Scans, highest priority first, then most recently seen","type":"array","items":{"$ref":"#/components/schemas/ProjectFinding"}},"pagination":{"$ref":"#/components/schemas/VerifyRunsPagination"}}},"SettableFindingStatus":{"type":"string","enum":["open","resolved","ignored","deferred"]},"ProjectFindingStatus":{"type":"string","enum":["open","resolved","ignored","deferred"]},"ProjectFinding":{"type":"object","required":["id","source","title","severity","status","source_title","environment_name","last_seen_at","web_path","verification","locked"],"properties":{"locked":{"type":"boolean","description":"True for a locked finding of the workspace's included scan before it pays. Its title, source title and verification reason are empty."},"deferred_until":{"type":"string","format":"date-time","nullable":true},"verification":{"$ref":"#/components/schemas/VerifyFindingVerification"},"id":{"type":"string"},"source":{"description":"The workflow that produced the finding","type":"string","enum":["scenario_run","exploration","deep_scan"]},"title":{"type":"string"},"severity":{"type":"string","enum":["critical","high","medium","low","info"]},"status":{"$ref":"#/components/schemas/ProjectFindingStatus"},"source_title":{"description":"The scenario, Discovery or Deep Scan that produced the finding","type":"string"},"environment_name":{"type":"string"},"last_seen_at":{"type":"string","format":"date-time"},"web_path":{"description":"Where the finding is reviewed within its source","type":"string"}}},"PersonaSummary":{"description":"A persona with its credential, scenario count, runs in flight and recent outcomes across every scenario it carries out","allOf":[{"$ref":"#/components/schemas/Persona"},{"type":"object","required":["credential","scenario_count","active_run_count","health","attention"],"properties":{"credential":{"oneOf":[{"type":"object","required":["id","name","login_method","status"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"login_method":{"type":"string"},"status":{"type":"string","enum":["active","disabled"]}}},{"type":"null"}]},"scenario_count":{"type":"integer"},"active_run_count":{"type":"integer"},"health":{"$ref":"#/components/schemas/ScenarioHealth"},"attention":{"description":"What needs an operator's eye, problems before notices","type":"array","items":{"type":"object","required":["key","severity","text"],"properties":{"key":{"type":"string"},"severity":{"type":"string","enum":["problem","notice"]},"text":{"type":"string"}}}}}}]},"PersonaRunEntry":{"type":"object","required":["id","run_id","scenario_id","scenario_name","state","outcome","created_at","started_at","finished_at","pull_request_label","pull_request_url"],"properties":{"id":{"type":"string"},"run_id":{"type":"string"},"scenario_id":{"description":"Null for a run of a scenario file, which is not saved as a scenario","type":["string","null"]},"scenario_name":{"type":["string","null"]},"state":{"type":"string"},"outcome":{"description":"The state once the run has finished","type":["string","null"]},"created_at":{"type":"string"},"started_at":{"type":["string","null"]},"finished_at":{"type":["string","null"]},"pull_request_label":{"type":["string","null"]},"pull_request_url":{"type":["string","null"]}}},"PersonaHistory":{"type":"object","required":["entries","pagination","trend"],"properties":{"entries":{"type":"array","items":{"$ref":"#/components/schemas/PersonaRunEntry"}},"pagination":{"$ref":"#/components/schemas/VerifyRunsPagination"},"trend":{"type":"array","items":{"$ref":"#/components/schemas/ScenarioHealthDay"}}}},"PersonaCredentialChoice":{"type":"object","required":["id","name","login_method","status"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"login_method":{"type":"string","enum":["email_password","email_link","google","github","custom","passkey","session","oidc_identity"]},"status":{"type":"string","enum":["active","disabled"]}}},"PersonaScenario":{"type":"object","required":["id","name","health"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"health":{"$ref":"#/components/schemas/ScenarioHealth"}}},"ProjectPersonasPage":{"type":"object","required":["project","permissions","credentials","active_count","needs_attention_count","persona_states","personas"],"properties":{"project":{"$ref":"#/components/schemas/ProjectHeader"},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"},"credentials":{"type":"array","items":{"$ref":"#/components/schemas/PersonaCredentialChoice"}},"active_count":{"type":"integer"},"needs_attention_count":{"type":"integer"},"persona_states":{"$ref":"#/components/schemas/VerifyScenarioStateCounts"},"personas":{"type":"array","items":{"$ref":"#/components/schemas/PersonaSummary"}}}},"ProjectPersonaPage":{"type":"object","required":["project","permissions","credentials","persona","scenarios","history"],"properties":{"project":{"$ref":"#/components/schemas/ProjectHeader"},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"},"credentials":{"type":"array","items":{"$ref":"#/components/schemas/PersonaCredentialChoice"}},"persona":{"$ref":"#/components/schemas/PersonaSummary"},"scenarios":{"type":"array","items":{"$ref":"#/components/schemas/PersonaScenario"}},"history":{"$ref":"#/components/schemas/PersonaHistory"}}},"ProjectScenarioRowsPage":{"type":"object","required":["scenarios","pagination"],"properties":{"scenarios":{"type":"array","items":{"$ref":"#/components/schemas/ProjectScenarioSummary"}},"pagination":{"$ref":"#/components/schemas/VerifyRunsPagination"}}},"ProjectScenarioSelection":{"type":"object","required":["id","labels","selectable_for_run","current_state"],"properties":{"id":{"type":"string"},"labels":{"type":"array","items":{"type":"string"}},"selectable_for_run":{"type":"boolean"},"current_state":{"type":"string","enum":["passing","failing","blocked","cancelled","running","not_run"]}}},"ProjectScenarioOptions":{"type":"object","required":["project","permissions","personas","scenarios","scenario_states","environments"],"properties":{"project":{"$ref":"#/components/schemas/ProjectHeader"},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"},"personas":{"type":"array","items":{"$ref":"#/components/schemas/Persona"}},"scenarios":{"type":"array","items":{"$ref":"#/components/schemas/ProjectScenarioSelection"}},"scenario_states":{"$ref":"#/components/schemas/VerifyScenarioStateCounts"},"environments":{"type":"array","items":{"$ref":"#/components/schemas/ProjectLaunchEnvironment"}},"schedules":{"type":"array","items":{"$ref":"#/components/schemas/RunSchedule"}},"schedule_options":{"$ref":"#/components/schemas/RunScheduleSetupOptions"}}},"ProjectScenariosPage":{"type":"object","required":["project","permissions","personas","scenarios","scenario_states","environments"],"properties":{"project":{"$ref":"#/components/schemas/ProjectHeader"},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"},"personas":{"type":"array","items":{"$ref":"#/components/schemas/Persona"}},"scenarios":{"type":"array","items":{"$ref":"#/components/schemas/ProjectScenarioSummary"}},"scenario_states":{"$ref":"#/components/schemas/VerifyScenarioStateCounts"},"environments":{"type":"array","items":{"$ref":"#/components/schemas/ProjectLaunchEnvironment"}}}},"ProjectScenarioEditorPage":{"type":"object","required":["project","permissions","personas","project_labels","scenario","environments","credentials","identity_provider","dependency_scenarios","has_connections"],"properties":{"project":{"$ref":"#/components/schemas/ProjectHeader"},"permissions":{"type":"object","required":["manage","record_scenarios"],"properties":{"manage":{"type":"boolean"},"record_scenarios":{"type":"boolean","description":"Whether this admin can record a journey to draft a Scenario."}}},"personas":{"type":"array","items":{"$ref":"#/components/schemas/Persona"}},"project_labels":{"type":"array","items":{"type":"string"}},"scenario":{"allOf":[{"$ref":"#/components/schemas/Scenario"}],"nullable":true},"environments":{"type":"array","items":{"$ref":"#/components/schemas/ProjectLaunchEnvironment"}},"credentials":{"type":"array","items":{"$ref":"#/components/schemas/ProjectCredential"}},"identity_provider":{"description":"Where the organization's apps trust Composal sign-in, for new personas","type":"object","required":["issuer","discovery_url","email_suffix"],"properties":{"issuer":{"type":"string"},"discovery_url":{"type":"string"},"email_suffix":{"type":"string"}}},"dependency_scenarios":{"type":"array","items":{"$ref":"#/components/schemas/ScenarioDependencyChoice"}},"has_connections":{"type":"boolean"}}},"ProjectScenarioPage":{"type":"object","required":["project","permissions","personas","scenario","scenario_history","scenario_revisions","environments","dependency_context"],"properties":{"project":{"$ref":"#/components/schemas/ProjectHeader"},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"},"personas":{"type":"array","items":{"$ref":"#/components/schemas/Persona"}},"scenario":{"$ref":"#/components/schemas/ProjectScenario"},"scenario_history":{"$ref":"#/components/schemas/ScenarioHistory"},"scenario_revisions":{"type":"array","maxItems":10,"description":"The latest recorded saves, newest first.","items":{"$ref":"#/components/schemas/ScenarioRevision"}},"environments":{"type":"array","items":{"$ref":"#/components/schemas/ProjectLaunchEnvironment"}},"dependency_context":{"$ref":"#/components/schemas/ScenarioDependencyContext"},"inherited_fixtures":{"type":"array","description":"Library files a run of this Scenario inherits, with the assignments that bring each in. Optional for clients, which may load this page from an API released before the fixture library.","items":{"$ref":"#/components/schemas/VerifyInheritedFixture"}}}},"ProjectEnvironmentPage":{"type":"object","required":["project","permissions","environment","credentials","network_connections","binary_choices","messaging_enabled","tester_numbers"],"properties":{"project":{"$ref":"#/components/schemas/ProjectHeader"},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"},"environment":{"$ref":"#/components/schemas/EnvironmentDetail"},"credentials":{"type":"array","items":{"$ref":"#/components/schemas/ProjectCredential"}},"network_connections":{"type":"array","items":{"$ref":"#/components/schemas/VerifyNetworkConnection"}},"schedules":{"description":"Omitted by older API versions during a rolling deployment; hide scheduling until both scheduling fields are present.","type":"array","items":{"$ref":"#/components/schemas/RunSchedule"}},"schedule_options":{"description":"Omitted by older API versions during a rolling deployment.","$ref":"#/components/schemas/RunScheduleSetupOptions"},"binary_choices":{"type":"array","items":{"$ref":"#/components/schemas/VerifyBinaryChoice"}},"messaging_enabled":{"type":"boolean"},"tester_numbers":{"type":"array","items":{"type":"string"}}}},"ProjectRunsPage":{"type":"object","required":["runs","pagination","environments","environment_query","environments_has_more","selected_environment"],"properties":{"runs":{"type":"array","items":{"$ref":"#/components/schemas/ProjectRunHistory"}},"pagination":{"$ref":"#/components/schemas/VerifyRunsPagination"},"environments":{"type":"array","items":{"$ref":"#/components/schemas/ProjectRunEnvironmentOption"}},"environment_query":{"type":"string"},"environments_has_more":{"type":"boolean"},"selected_environment":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/ProjectRunEnvironmentOption"}]}}},"ProjectRunEnvironmentOption":{"type":"object","required":["id","name","preview","target_kind"],"properties":{"preview":{"type":"boolean"},"target_kind":{"type":"string","nullable":true},"id":{"type":"string"},"name":{"type":"string"}}},"ProjectRunHistory":{"allOf":[{"$ref":"#/components/schemas/ProjectRunSummary"},{"type":"object","required":["archived_at","can_archive","can_restore","scenario_count","trigger_kind","triggered_by","commit_sha","pull_request","source_run","started_at","finished_at","duration_seconds","browser_seconds"],"properties":{"archived_at":{"type":"string","format":"date-time","nullable":true},"can_archive":{"type":"boolean"},"can_restore":{"type":"boolean"},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"duration_seconds":{"type":"number","nullable":true},"browser_seconds":{"type":"number","nullable":true},"pull_request":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/ProjectRunHistoryPullRequest"}]},"source_run":{"type":"object","nullable":true,"required":["web_path","created_at"],"properties":{"web_path":{"type":"string"},"created_at":{"type":"string","format":"date-time"}}},"scenario_count":{"type":"integer"},"trigger_kind":{"type":"string","enum":["pull_request","writer","rerun","direct"]},"triggered_by":{"type":"string","nullable":true},"commit_sha":{"type":"string","nullable":true}}}]},"ProjectRunHistoryPullRequest":{"type":"object","required":["label","title","repository","branch","url"],"properties":{"label":{"type":"string"},"title":{"type":"string"},"repository":{"type":"string","nullable":true},"branch":{"type":"string","nullable":true},"url":{"type":"string","nullable":true}}},"ProjectRunSummary":{"type":"object","required":["id","title","state","outcome","environment_name","pull_request_label","created_at","cleanup_state","web_path"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"state":{"type":"string"},"outcome":{"type":"string","nullable":true},"environment_name":{"type":"string","nullable":true},"pull_request_label":{"type":"string","nullable":true},"created_at":{"type":"string"},"cleanup_state":{"type":"string"},"web_path":{"type":"string"}}},"ProjectOverview":{"type":"object","required":["organization","permissions","counts","active_scenario_runs","active_discoveries","pull_requests"],"properties":{"organization":{"type":"object","required":["slug"],"properties":{"slug":{"type":"string"}}},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"},"counts":{"type":"object","required":["active_runs","open_findings","ready_environments","scenarios"],"properties":{"open_findings":{"type":"integer","minimum":0},"ready_environments":{"type":"integer","minimum":0},"scenarios":{"$ref":"#/components/schemas/VerifyScenarioStateCounts"},"active_runs":{"type":"integer","minimum":0}}},"active_scenario_runs":{"$ref":"#/components/schemas/ProjectActiveScenarioRuns"},"active_discoveries":{"$ref":"#/components/schemas/ProjectActiveDiscoveries"},"pull_requests":{"type":"array","items":{"$ref":"#/components/schemas/VerifyPullRequestSummary"}}}},"ProjectActiveScenarioRuns":{"type":"object","description":"The browsers inside the project's active runs, running ones first.","required":["entries","total_count","running_count","queued_count"],"properties":{"entries":{"type":"array","maxItems":12,"items":{"$ref":"#/components/schemas/ProjectActiveScenarioRun"}},"total_count":{"type":"integer","minimum":0,"description":"Every browser still to finish, including those beyond the listed entries."},"running_count":{"type":"integer","minimum":0},"queued_count":{"type":"integer","minimum":0,"description":"Browsers waiting to start, including those still being planned."}}},"ProjectActiveDiscoveries":{"type":"object","required":["entries","total_count"],"properties":{"entries":{"type":"array","maxItems":12,"items":{"$ref":"#/components/schemas/ProjectActiveDiscovery"}},"total_count":{"type":"integer","minimum":0,"description":"Every active discovery, including those beyond the listed entries."}}},"ProjectActiveDiscovery":{"type":"object","required":["id","title","status","environment_name","started_at","web_path"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"web_path":{"type":"string"},"status":{"type":"string","enum":["discovering","testing"]},"environment_name":{"type":"string"},"started_at":{"type":"string","format":"date-time"}}},"ProjectActiveScenarioRun":{"type":"object","required":["id","state","scenario_name","environment_name","pull_request_label","live_frame_url","live_stream","web_path","created_at","started_at"],"properties":{"id":{"type":"string"},"state":{"type":"string","enum":["pending","planning","prepared","queued","running"]},"scenario_name":{"type":"string"},"environment_name":{"type":"string"},"pull_request_label":{"type":"string","nullable":true},"live_stream":{"description":"The browser's live stream for its tile, without DevTools.","oneOf":[{"$ref":"#/components/schemas/LiveBrowserStream"},{"type":"null"}]},"live_frame_url":{"type":"string","nullable":true,"description":"The latest browser frame while the scenario runs; changes with each new frame."},"web_path":{"type":"string"},"created_at":{"type":"string"},"started_at":{"type":"string","nullable":true}}},"ProjectOverviewPage":{"type":"object","required":["project","setup","discovery","overview","runs"],"properties":{"project":{"$ref":"#/components/schemas/ProjectHeader"},"setup":{"description":"Null once the project has available scenarios and no discovery to show.","oneOf":[{"$ref":"#/components/schemas/ProjectSetup"},{"type":"null"}]},"discovery":{"oneOf":[{"$ref":"#/components/schemas/ProjectDiscovery"},{"type":"null"}]},"overview":{"$ref":"#/components/schemas/ProjectOverview"},"runs":{"type":"array","items":{"$ref":"#/components/schemas/ProjectRunSummary"}}}},"ProjectScenarioSummary":{"type":"object","required":["id","persona_id","name","labels","step_count","actor_count","selectable_for_run","health","dependency_count"],"properties":{"id":{"type":"string"},"persona_id":{"type":"string"},"name":{"type":"string"},"labels":{"type":"array","items":{"type":"string"}},"step_count":{"type":"integer"},"actor_count":{"type":"integer"},"selectable_for_run":{"type":"boolean"},"health":{"$ref":"#/components/schemas/ScenarioHealth"},"dependency_count":{"type":"integer","minimum":0}}},"ProjectScenario":{"allOf":[{"$ref":"#/components/schemas/Scenario"},{"type":"object","required":["health"],"properties":{"health":{"$ref":"#/components/schemas/ScenarioHealth"}}}]},"ProjectLaunchEnvironment":{"type":"object","required":["id","name","base_url","kind"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"base_url":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true}}},"ProjectSetup":{"description":"Where a new project stands on its way to a first discovery, and what that discovery would run against.","type":"object","required":["stage","environment_id","app_url","test_account"],"properties":{"app_url":{"description":"The address discovery explores.","type":["string","null"]},"stage":{"type":"string","enum":["needs_environment","ready","discovering","discovered"]},"environment_id":{"type":["string","null"]},"test_account":{"description":"The configured test account discovery signs in as; null runs it signed out.","oneOf":[{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}},{"type":"null"}]}}},"ProjectDiscoveryLiveBrowser":{"description":"A browser running now, as a tile on the project overview.","type":"object","required":["agent_id","title","url","action","image","captured_at","stream"],"properties":{"agent_id":{"type":"string"},"stream":{"description":"The browser's live stream for its tile, without DevTools.","oneOf":[{"$ref":"#/components/schemas/LiveBrowserStream"},{"type":"null"}]},"title":{"type":"string"},"url":{"type":"string"},"action":{"type":"string"},"image":{"description":"A JPEG data URL of the latest capture.","type":["string","null"]},"captured_at":{"type":"string"}}},"ProjectDiscovery":{"description":"A project's latest discovery, small enough for its Overview to poll.","type":"object","required":["id","status","product_summary","page_count","flow_count","check_count","finding_count","created_at","deadline_at","finished_at","testers","recent_checks","live_browsers","scenarios"],"properties":{"id":{"type":"string"},"status":{"type":"string","enum":["discovering","testing","completed","partial","canceled"]},"product_summary":{"description":"The newest description of the product any agent has reported.","type":["string","null"]},"page_count":{"type":"integer"},"flow_count":{"type":"integer"},"check_count":{"type":"integer"},"finding_count":{"type":"integer"},"created_at":{"type":"string"},"deadline_at":{"type":"string"},"finished_at":{"type":["string","null"]},"testers":{"type":"array","items":{"type":"object","required":["id","title","task_group"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"task_group":{"type":"string","enum":["setup","working","queued","completed","stopped","attention"]}}}},"recent_checks":{"type":"array","maxItems":8,"items":{"type":"object","required":["charter","actual","outcome","url"],"properties":{"charter":{"type":"string"},"actual":{"type":"string"},"outcome":{"type":"string","enum":["observed","issue","blocked","inconclusive"]},"url":{"type":"string"}}}},"live_browsers":{"type":"array","maxItems":4,"items":{"$ref":"#/components/schemas/ProjectDiscoveryLiveBrowser"}},"scenarios":{"type":"object","required":["status","count","can_retry","writer"],"properties":{"can_retry":{"description":"Whether the scenarios request can run again, as Retry on the overview.","type":"boolean"},"status":{"type":"string","enum":["not_started","queued","writing","checking","ready","failed"]},"count":{"type":"integer"},"writer":{"description":"The scenario writer checking this discovery's scenarios; null on the single-call path.","anyOf":[{"$ref":"#/components/schemas/VerifyScenarioWriterProgress"},{"type":"null"}]}}}}},"RecordVersion":{"type":"object","required":["version"],"properties":{"version":{"type":"integer","minimum":0}}},"ProjectPermissions":{"type":"object","required":["manage"],"properties":{"manage":{"type":"boolean"}}},"VerifierPreferences":{"type":"object","additionalProperties":false,"description":"Project guidance for human-readable verifier reports; core execution and evidence rules take precedence.","properties":{"terminology":{"type":"string","maxLength":4000},"behavior_guidance":{"type":"string","maxLength":4000},"report_style":{"type":"string","maxLength":4000},"reporting_focus":{"type":"string","maxLength":4000},"prioritization":{"type":"string","maxLength":4000}}},"ProjectCreate":{"type":"object","required":["name"],"properties":{"execution_mode":{"type":"string","enum":["website","computer_use"]},"verifier_preferences":{"$ref":"#/components/schemas/VerifierPreferences"},"slug":{"type":"string","maxLength":100,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$"},"name":{"type":"string","maxLength":160},"website_url":{"type":["string","null"],"maxLength":1000,"format":"uri"},"purpose":{"type":"string","maxLength":4000},"context":{"type":"string","maxLength":4000},"documentation_urls":{"type":"array","maxItems":5,"items":{"type":"string","format":"uri"}}}},"ProjectUpdate":{"type":"object","required":["version"],"properties":{"execution_mode":{"type":"string","enum":["website","computer_use"]},"verifier_preferences":{"$ref":"#/components/schemas/VerifierPreferences"},"slug":{"type":"string","maxLength":100,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$"},"name":{"type":"string","maxLength":160},"website_url":{"type":["string","null"],"maxLength":1000,"format":"uri"},"purpose":{"type":"string","maxLength":4000},"context":{"type":"string","maxLength":4000},"documentation_urls":{"type":"array","maxItems":5,"items":{"type":"string","format":"uri"}},"version":{"type":"integer","minimum":0}}},"Project":{"type":"object","required":["execution_mode","demo","slug","website_url","icon_url","verifier_preferences","name","purpose","context","documentation_urls","id","lock_version","created_at","updated_at","organization_id","archived_at"],"properties":{"demo":{"type":"boolean","description":"Whether this is a signup demo project copied from the shared template."},"execution_mode":{"type":"string","enum":["website","computer_use"]},"icon_url":{"type":["string","null"],"format":"uri"},"verifier_preferences":{"$ref":"#/components/schemas/VerifierPreferences"},"slug":{"type":"string","maxLength":100,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$"},"name":{"type":"string","maxLength":160},"website_url":{"type":["string","null"],"maxLength":1000,"format":"uri"},"purpose":{"type":["string","null"]},"context":{"type":["string","null"]},"documentation_urls":{"type":"array","maxItems":5,"items":{"type":"string","format":"uri"}},"id":{"type":"string"},"lock_version":{"type":"integer"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"organization_id":{"type":"string"},"archived_at":{"type":["string","null"],"format":"date-time"}}},"PersonaCreate":{"type":"object","required":["name","role"],"properties":{"name":{"type":"string","maxLength":160},"role":{"type":"string","maxLength":255},"goals":{"type":"string","maxLength":4000},"capabilities":{"type":"string","maxLength":4000},"credential_id":{"description":"The credential this persona signs in with. Without one, a run chooses from the project's credentials.","type":["string","null"]},"access_mode":{"type":"string","enum":["anonymous","account","signup"]}}},"PersonaUpdate":{"type":"object","required":["version"],"properties":{"name":{"type":"string","maxLength":160},"role":{"type":"string","maxLength":255},"goals":{"type":"string","maxLength":4000},"capabilities":{"type":"string","maxLength":4000},"credential_id":{"description":"The credential this persona signs in with. Without one, a run chooses from the project's credentials.","type":["string","null"]},"access_mode":{"type":"string","enum":["anonymous","account","signup"]},"version":{"type":"integer","minimum":0}}},"Persona":{"type":"object","required":["name","role","goals","capabilities","access_mode","id","lock_version","created_at","updated_at","project_id","archived_at","credential_id"],"properties":{"credential_id":{"description":"The credential this persona signs in with. Without one, a run chooses from the project's credentials.","type":["string","null"]},"name":{"type":"string","maxLength":160},"role":{"type":"string","maxLength":255},"goals":{"type":["string","null"]},"capabilities":{"type":["string","null"]},"access_mode":{"type":"string","enum":["anonymous","account","signup"]},"id":{"type":"string"},"lock_version":{"type":"integer"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"project_id":{"type":"string"},"archived_at":{"type":["string","null"],"format":"date-time"}}},"ScenarioActor":{"type":"object","additionalProperties":false,"required":["persona_id"],"properties":{"persona_id":{"type":"string"},"distinct_from":{"type":"array","maxItems":3,"uniqueItems":true,"items":{"type":"string"}}}},"ScenarioFixture":{"type":"object","additionalProperties":false,"required":["name","sha256","content_type"],"properties":{"name":{"type":"string","maxLength":255,"description":"The file name the page receives"},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"content_type":{"type":"string"},"byte_size":{"type":["integer","null"],"description":"Present on the Scenario page; null when the project no longer holds the bytes"}}},"ScenarioFixtureInput":{"type":"object","additionalProperties":false,"required":["name","sha256"],"properties":{"name":{"type":"string","maxLength":255},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"content_type":{"type":"string"}}},"ScenarioFileFixture":{"type":"object","additionalProperties":false,"required":["path"],"properties":{"path":{"type":"string","maxLength":1024,"description":"Relative to the Scenario file"},"name":{"type":"string","maxLength":255,"description":"Defaults to the path's last part"},"content_type":{"type":"string"}}},"ScenarioActorStep":{"type":"object","additionalProperties":false,"required":["actor","instruction"],"properties":{"actor":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,39}$"},"instruction":{"type":"string","minLength":1,"maxLength":4000},"authentication":{"type":"boolean"}}},"ScenarioActorOutcome":{"type":"object","additionalProperties":false,"required":["actors","instruction"],"properties":{"actors":{"type":"array","minItems":1,"maxItems":4,"uniqueItems":true,"items":{"type":"string"}},"instruction":{"type":"string","minLength":1,"maxLength":4000}}},"ScenarioIdentityProbe":{"description":"Same-origin JSON identity endpoint. Required for two or more signed-in actors; optional for one signed-in actor or anonymous-only journeys. A supplied probe is always used. Responses stay private.","type":"object","additionalProperties":false,"required":["path","subject_pointer","email_pointer"],"properties":{"path":{"type":"string","maxLength":500},"subject_pointer":{"type":"string","maxLength":500},"email_pointer":{"type":"string","maxLength":500}}},"ScenarioCreate":{"type":"object","required":["name"],"oneOf":[{"required":["persona_id"],"not":{"required":["actors"]}},{"required":["actors","primary_actor"],"not":{"required":["persona_id"]}}],"properties":{"name":{"type":"string","maxLength":160},"persona_id":{"type":"string"},"actors":{"type":"object","minProperties":1,"maxProperties":4,"additionalProperties":{"$ref":"#/components/schemas/ScenarioActor"}},"primary_actor":{"type":["string","null"],"pattern":"^[a-z][a-z0-9_]{0,39}$"},"identity_probe":{"oneOf":[{"$ref":"#/components/schemas/ScenarioIdentityProbe"},{"type":"null"}]},"labels":{"type":"array","maxItems":20,"description":"Short tags that group Scenarios, such as checkout or smoke","items":{"type":"string","maxLength":40}},"fixtures":{"type":"array","maxItems":10,"description":"Files upload steps choose. Each sha256 must already be uploaded to this project; a missing content_type is chosen from the name.","items":{"$ref":"#/components/schemas/ScenarioFixtureInput"}},"starting_conditions":{"type":"string","maxLength":4000},"allowed_actions":{"type":"string","enum":["read_only","writes"]},"steps":{"type":"array","items":{"oneOf":[{"type":"string","maxLength":4000},{"$ref":"#/components/schemas/ScenarioActorStep"}]}},"cleanup":{"type":"array","maxItems":100,"description":"Optional application cleanup instructions, attempted after checks pass or fail. Omit on updates to preserve saved instructions; [] clears them. Results are separate from Scenario checks.","items":{"oneOf":[{"type":"string","minLength":1,"maxLength":4000},{"$ref":"#/components/schemas/ScenarioActorStep"}]}},"outcomes":{"type":"array","items":{"oneOf":[{"type":"string","maxLength":4000},{"$ref":"#/components/schemas/ScenarioActorOutcome"}]}},"dependencies":{"type":"array","maxItems":100,"items":{"$ref":"#/components/schemas/ScenarioDependency"}},"on":{"anyOf":[{"$ref":"#/components/schemas/ScenarioEvents"},{"type":"null"}],"description":"Explicit Actions-style automatic execution rules. Omit to preserve existing rules; null restores relevance selection. An empty object disables automatic execution."},"if":{"type":["string","null"],"maxLength":1000,"description":"A documented subset of Actions expressions. Supports comparisons, &&, ||, !, parentheses, contains, startsWith and endsWith over GitHub event metadata. Empty or null clears it. Applied to automatic execution."},"triggers":{"type":"array","maxItems":100,"uniqueItems":true,"description":"Positive repository path patterns that force fresh PR verification, alongside automatic selection.","items":{"type":"string","minLength":1,"maxLength":500}}}},"ScenarioUpdate":{"type":"object","required":["version"],"properties":{"name":{"type":"string","maxLength":160},"persona_id":{"type":"string"},"actors":{"type":"object","minProperties":1,"maxProperties":4,"additionalProperties":{"$ref":"#/components/schemas/ScenarioActor"}},"primary_actor":{"type":["string","null"],"pattern":"^[a-z][a-z0-9_]{0,39}$"},"identity_probe":{"oneOf":[{"$ref":"#/components/schemas/ScenarioIdentityProbe"},{"type":"null"}]},"labels":{"type":"array","maxItems":20,"description":"Short tags that group Scenarios, such as checkout or smoke","items":{"type":"string","maxLength":40}},"fixtures":{"type":"array","maxItems":10,"description":"Files upload steps choose. Each sha256 must already be uploaded to this project; a missing content_type is chosen from the name.","items":{"$ref":"#/components/schemas/ScenarioFixtureInput"}},"starting_conditions":{"type":"string","maxLength":4000},"allowed_actions":{"type":"string","enum":["read_only","writes"]},"steps":{"type":"array","items":{"oneOf":[{"type":"string","maxLength":4000},{"$ref":"#/components/schemas/ScenarioActorStep"}]}},"cleanup":{"type":"array","maxItems":100,"description":"Optional application cleanup instructions, attempted after checks pass or fail. Omit on updates to preserve saved instructions; [] clears them. Results are separate from Scenario checks.","items":{"oneOf":[{"type":"string","minLength":1,"maxLength":4000},{"$ref":"#/components/schemas/ScenarioActorStep"}]}},"outcomes":{"type":"array","items":{"oneOf":[{"type":"string","maxLength":4000},{"$ref":"#/components/schemas/ScenarioActorOutcome"}]}},"version":{"type":"integer","minimum":0},"dependencies":{"type":"array","maxItems":100,"items":{"$ref":"#/components/schemas/ScenarioDependency"}},"on":{"anyOf":[{"$ref":"#/components/schemas/ScenarioEvents"},{"type":"null"}],"description":"Explicit Actions-style automatic execution rules. Omit to preserve existing rules; null restores relevance selection. An empty object disables automatic execution."},"if":{"type":["string","null"],"maxLength":1000,"description":"A documented subset of Actions expressions. Supports comparisons, &&, ||, !, parentheses, contains, startsWith and endsWith over GitHub event metadata. Empty or null clears it. Applied to automatic execution."},"triggers":{"type":"array","maxItems":100,"uniqueItems":true,"description":"Positive repository path patterns that force fresh PR verification, alongside automatic selection.","items":{"type":"string","minLength":1,"maxLength":500}}}},"ScenarioRunHistoryEntry":{"type":"object","required":["id","run_id","state","created_at","started_at","finished_at","pull_request_label","pull_request_url"],"properties":{"id":{"type":"string"},"run_id":{"type":"string"},"state":{"type":"string"},"created_at":{"type":"string"},"started_at":{"type":["string","null"]},"finished_at":{"type":["string","null"]},"pull_request_label":{"type":["string","null"]},"pull_request_url":{"type":["string","null"]}}},"ScenarioHealth":{"type":"object","required":["passed","failed","success_rate","latest","recent","current_state"],"properties":{"current_state":{"description":"Where the Scenario stands by its latest execution. Timeouts count as failing.","type":"string","enum":["passing","failing","blocked","cancelled","running","not_run"]},"passed":{"type":"integer"},"failed":{"type":"integer"},"success_rate":{"type":["number","null"]},"latest":{"oneOf":[{"$ref":"#/components/schemas/ScenarioRunHistoryEntry"},{"type":"null"}]},"recent":{"type":"array","maxItems":20,"items":{"$ref":"#/components/schemas/ScenarioRunHistoryEntry"}}}},"ScenarioHealthDay":{"type":"object","required":["date","passed","failed","success_rate"],"properties":{"date":{"type":"string"},"passed":{"type":"integer"},"failed":{"type":"integer"},"success_rate":{"type":["number","null"]}}},"ScenarioHistory":{"type":"object","required":["entries","pagination","trend"],"properties":{"entries":{"type":"array","items":{"$ref":"#/components/schemas/ScenarioRunHistoryEntry"}},"pagination":{"$ref":"#/components/schemas/VerifyRunsPagination"},"trend":{"type":"array","items":{"$ref":"#/components/schemas/ScenarioHealthDay"}}}},"Scenario":{"type":"object","required":["selectable_for_run","name","labels","persona_id","starting_conditions","allowed_actions","steps","outcomes","id","lock_version","created_at","updated_at","project_id","archived_at","last_revision","dependencies","triggers"],"properties":{"selectable_for_run":{"type":"boolean"},"last_revision":{"description":"The latest recorded save; null when the Scenario was last saved before revisions were recorded.","oneOf":[{"$ref":"#/components/schemas/ScenarioRevision"},{"type":"null"}]},"health":{"$ref":"#/components/schemas/ScenarioHealth"},"name":{"type":"string","maxLength":160},"persona_id":{"type":"string"},"actors":{"type":"object","minProperties":1,"maxProperties":4,"additionalProperties":{"$ref":"#/components/schemas/ScenarioActor"}},"primary_actor":{"type":["string","null"],"pattern":"^[a-z][a-z0-9_]{0,39}$"},"identity_probe":{"oneOf":[{"$ref":"#/components/schemas/ScenarioIdentityProbe"},{"type":"null"}]},"labels":{"type":"array","maxItems":20,"description":"Short tags that group Scenarios, such as checkout or smoke","items":{"type":"string","maxLength":40}},"fixtures":{"type":"array","maxItems":10,"description":"Files upload steps choose, ordered by name. Omitted when the Scenario has none.","items":{"$ref":"#/components/schemas/ScenarioFixture"}},"starting_conditions":{"type":["string","null"]},"allowed_actions":{"type":"string","enum":["read_only","writes"]},"steps":{"type":"array","items":{"oneOf":[{"type":"string","maxLength":4000},{"$ref":"#/components/schemas/ScenarioActorStep"}]}},"cleanup":{"type":"array","maxItems":100,"description":"Optional application cleanup instructions, attempted after checks pass or fail. Omit on updates to preserve saved instructions; [] clears them. Results are separate from Scenario checks.","items":{"oneOf":[{"type":"string","minLength":1,"maxLength":4000},{"$ref":"#/components/schemas/ScenarioActorStep"}]}},"outcomes":{"type":"array","items":{"oneOf":[{"type":"string","maxLength":4000},{"$ref":"#/components/schemas/ScenarioActorOutcome"}]}},"id":{"type":"string"},"lock_version":{"type":"integer"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"project_id":{"type":"string"},"archived_at":{"type":["string","null"],"format":"date-time"},"dependencies":{"type":"array","items":{"$ref":"#/components/schemas/ScenarioDependency"}},"on":{"anyOf":[{"$ref":"#/components/schemas/ScenarioEvents"},{"type":"null"}],"description":"Explicit Actions-style automatic execution rules. Omit to preserve existing rules; null restores relevance selection. An empty object disables automatic execution."},"if":{"type":["string","null"],"maxLength":1000,"description":"A documented subset of Actions expressions. Supports comparisons, &&, ||, !, parentheses, contains, startsWith and endsWith over GitHub event metadata. Empty or null clears it. Applied to automatic execution."},"triggers":{"type":"array","maxItems":100,"uniqueItems":true,"description":"Positive repository path patterns that force fresh PR verification, alongside automatic selection.","items":{"type":"string","minLength":1,"maxLength":500}}}},"EnvironmentCreate":{"type":"object","required":["name"],"properties":{"desktop":{"oneOf":[{"$ref":"#/components/schemas/DesktopConfiguration"},{"$ref":"#/components/schemas/ManagedDesktopOptions"},{"$ref":"#/components/schemas/DesktopConfiguration"},{"$ref":"#/components/schemas/ManagedDesktopOptions"}]},"name":{"type":"string","maxLength":160},"kind":{"type":"string","enum":["production","staging","preview","development","custom"]},"base_url":{"type":"string","format":"uri"},"allowed_origins":{"type":"array","items":{"type":"string","format":"uri"}},"allowed_actions":{"type":"string","enum":["read_only","writes"]},"binary":{"type":"string"},"imessage_number":{"type":"string","nullable":true,"description":"International destination number; blank or null clears it on an added environment."},"messaging_tester_number":{"type":"string","nullable":true,"description":"One configured tester number. Copied to each preview; may be overridden locally before preparation."}}},"EnvironmentUpdate":{"type":"object","required":["version"],"properties":{"name":{"type":"string","maxLength":160},"kind":{"type":"string","enum":["production","staging","preview","development","custom"]},"base_url":{"type":["string","null"],"format":"uri"},"allowed_origins":{"type":"array","items":{"type":"string","format":"uri"}},"allowed_actions":{"type":"string","enum":["read_only","writes"]},"verify_network_connection_id":{"type":"string","nullable":true},"version":{"type":"integer","minimum":0},"binary":{"type":"string"},"imessage_number":{"type":"string","nullable":true,"description":"International destination number; blank or null clears it on an added environment."},"messaging_tester_number":{"type":"string","nullable":true,"description":"One configured tester number. Copied to each preview; may be overridden locally before preparation."}}},"Environment":{"type":"object","required":["execution_mode","desktop","name","kind","base_url","base_url_changeable","allowed_origins","allowed_actions","id","lock_version","created_at","updated_at","project_id","verify_network_connection_id","archived_at","pull_request","source_branch","imessage_number"],"properties":{"execution_mode":{"type":"string","enum":["website","computer_use"]},"desktop":{"$ref":"#/components/schemas/DesktopConfiguration","nullable":true},"source_branch":{"type":"string","nullable":true},"base_url_changeable":{"type":"boolean","description":"Whether an update may send a new base_url. Pull request and branch previews keep theirs."},"pull_request":{"type":"object","nullable":true,"required":["id","number","source_url","web_path","branch"],"properties":{"id":{"type":"string"},"number":{"type":"integer"},"source_url":{"type":"string","nullable":true},"web_path":{"type":"string"},"branch":{"type":"string","nullable":true}}},"name":{"type":"string","maxLength":160},"kind":{"type":"string","enum":["production","staging","preview","development","custom"]},"base_url":{"type":["string","null"],"format":"uri"},"allowed_origins":{"type":"array","items":{"type":"string","format":"uri"}},"allowed_actions":{"type":"string","enum":["read_only","writes"]},"id":{"type":"string"},"lock_version":{"type":"integer"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"project_id":{"type":"string"},"verify_network_connection_id":{"type":"string","nullable":true},"archived_at":{"type":["string","null"],"format":"date-time"},"imessage_number":{"type":"string","nullable":true,"description":"International destination number; blank or null clears it on an added environment."}}},"ProjectCredentialInput":{"description":"A project credential signs in on every environment in its project.","allOf":[{"$ref":"#/components/schemas/VerifyLoginAccountInput"}]},"ProjectCredential":{"allOf":[{"$ref":"#/components/schemas/VerifyLoginAccount"},{"type":"object","required":["project_id"],"properties":{"project_id":{"type":"string"}}}]},"RunPullRequest":{"type":"object","required":["id","number","title","request_label","provider","state","draft","source_repository","source_branch","source_url","comment_url","runnable","manual_runnable","head_sha","reason","selections","reused","not_selected_count"],"properties":{"id":{"type":"string"},"number":{"type":"integer"},"title":{"type":"string"},"request_label":{"type":"string"},"provider":{"type":"string"},"state":{"type":"string"},"draft":{"type":"boolean"},"source_repository":{"type":["string","null"]},"source_branch":{"type":["string","null"]},"source_url":{"type":["string","null"]},"comment_url":{"type":["string","null"]},"runnable":{"type":"boolean"},"head_sha":{"type":"string"},"reason":{"type":["string","null"]},"manual_runnable":{"type":"boolean"},"selections":{"type":"array","items":{"type":"object","required":["scenario_id","reason"],"properties":{"scenario_id":{"type":"string"},"reason":{"type":"string"}}}},"reused":{"type":"array","items":{"type":"object","required":["scenario_id","name","run_path"],"properties":{"scenario_id":{"type":"string"},"name":{"type":"string"},"run_path":{"type":["string","null"]}}}},"not_selected_count":{"type":"integer"}}},"Run":{"type":"object","required":["archived_at","can_archive","can_restore","title","pull_request","creator_name","verifier_preferences_snapshot","progress","id","project_id","environment_id","source_run_id","state","outcome","cleanup_state","target_snapshot","plan_digest","concurrency","max_seconds","lock_version","created_at","updated_at","source_versions","definition_mode","approved_digest","preparation_error_code","start_when_prepared","approved_at","queued_at","can_start_another_run"],"properties":{"archived_at":{"type":"string","format":"date-time","nullable":true},"can_archive":{"type":"boolean"},"can_restore":{"type":"boolean"},"progress":{"type":"object","required":["total","planned","planning","running","finished"],"properties":{"total":{"type":"integer"},"planned":{"type":"integer","description":"Scenarios ready to run or past that point."},"planning":{"type":"integer"},"running":{"type":"integer"},"finished":{"type":"integer"}}},"title":{"type":"string"},"pull_request":{"anyOf":[{"$ref":"#/components/schemas/RunPullRequest"},{"type":"null"}]},"creator_name":{"type":["string","null"]},"verifier_preferences_snapshot":{"$ref":"#/components/schemas/VerifierPreferences"},"id":{"type":"string"},"lock_version":{"type":"integer"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"project_id":{"type":"string"},"environment_id":{"type":["string","null"]},"source_run_id":{"type":["string","null"]},"state":{"type":"string","enum":["waiting_for_target","preparing","prepared","queued","running","cancelling","terminal"]},"outcome":{"type":["string","null"],"enum":["skipped","passed","failed","blocked","cancelled","timed_out","cleanup_blocked",null]},"cleanup_state":{"type":"string","enum":["not_started","pending","complete","blocked"]},"target_snapshot":{"type":"object","additionalProperties":true},"plan_digest":{"type":["string","null"]},"concurrency":{"type":"integer"},"max_seconds":{"type":"integer"},"source_versions":{"type":["array","null"],"items":{"type":"object","required":["type","id","version"],"properties":{"type":{"type":"string"},"id":{"type":"string"},"version":{"type":["integer","string"]}}}},"definition_mode":{"type":"string","enum":["saved","latest"]},"approved_digest":{"type":["string","null"]},"preparation_error_code":{"type":["string","null"]},"start_when_prepared":{"type":"boolean","description":"The run starts as soon as its browser plans are ready, without a review step."},"approved_at":{"type":["string","null"],"format":"date-time"},"queued_at":{"type":["string","null"],"format":"date-time"},"run_plan_id":{"type":"string","nullable":true},"can_start_another_run":{"type":"boolean"}}},"ScenarioRun":{"type":"object","properties":{"id":{"type":"string"},"lock_version":{"type":"integer"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"project_id":{"type":"string"},"run_id":{"type":"string"},"scenario_id":{"type":["string","null"],"description":"Null when the run came from a Scenario file that was not saved."},"persona_id":{"type":"string"},"account_assignment_id":{"type":["string","null"]},"credential_id":{"type":["string","null"]},"state":{"type":"string","enum":["pending","planning","prepared","queued","running","passed","failed","cancelled","timed_out","blocked","skipped"]},"scenario_snapshot":{"type":"object","additionalProperties":true},"persona_snapshot":{"type":"object","additionalProperties":true},"account_snapshot":{"type":"object","additionalProperties":true},"result_json":{"type":"object","additionalProperties":true,"description":"Raw report returned by the run API. The browser page omits it and publishes recording, outcomes and summaries directly."},"plan_snapshot":{"type":["object","null"],"deprecated":true,"description":"The prepared start of runs prepared before the runner derived it from the scenario. Newer runs leave it empty; read scenario_snapshot.outcomes instead.","properties":{"actions":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/ScenarioRunAction"},{"$ref":"#/components/schemas/ScenarioRunLogin"}]}},"assertions":{"type":"array","items":{"$ref":"#/components/schemas/ScenarioRunAssertion"}},"requires_adaptive_execution":{"type":"boolean","description":"The browser agent works from the original steps; actions hold only the start of the run."}}},"run_plan":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/RunPlanSnapshot"}]},"scenario_editable":{"type":"boolean","description":"Whether this execution has an active saved scenario that can be edited."},"starting_condition_scenarios":{"type":"array","description":"Active saved source Scenarios for reviewing a prerequisite or access blocker. Includes connected sources even when this execution has no direct Scenario. Editing requires project manage permission.","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"failure_code":{"type":["string","null"]},"failure_message":{"type":["string","null"]},"application_cleanup_state":{"type":"string","enum":["not_requested","not_started","pending","complete","incomplete"],"description":"Authored application cleanup, separate from Scenario checks and runner disposal."},"cleanup_state":{"type":"string","enum":["not_started","pending","complete","blocked"]},"cleanup_unconfirmed":{"type":"array","description":"When cleanup is blocked, the names the runner could not confirm were removed, either still shown or not fully readable. Empty when it checked no names.","items":{"type":"string"}},"runner_image_digest":{"type":["string","null"]},"shared_sign_in":{"description":"For the run dispatched to sign in for its account and share the session, whether it did, or the runner, Roder or exchange code saying why not.","oneOf":[{"type":"object","required":["status","recorded_at"],"properties":{"status":{"type":"string","enum":["shared","failed"]},"code":{"type":"string"},"recorded_at":{"type":"string","format":"date-time"}}},{"type":"null"}]},"waiting_reason":{"type":["string","null"],"description":"Why a queued execution has not started, such as waiting for its account's sign-in turn (credential_concurrency_limit)."},"started_at":{"type":["string","null"],"format":"date-time"},"finished_at":{"type":["string","null"],"format":"date-time"},"evidence":{"type":"array","items":{"$ref":"#/components/schemas/VerifyEvidenceItem"}},"finding_ids":{"type":"array","items":{"type":"string"}},"summary":{"$ref":"#/components/schemas/ScenarioRunSummary"},"recording":{"$ref":"#/components/schemas/ScenarioRunRecording"},"browser_errors":{"type":"array","description":"Console errors and failed requests the browser saw, each listed once with its count, in the order they first happened. At most ten.","items":{"$ref":"#/components/schemas/ScenarioRunBrowserError"}},"activity":{"type":["string","null"],"description":"What the scenario is doing now, in plain words, while it runs; null otherwise. The same line as its RunScenarioSummary activity."},"live":{"oneOf":[{"$ref":"#/components/schemas/ScenarioRunLive"},{"type":"null"}]},"completed_journey_steps":{"type":["integer","null"],"minimum":0,"description":"Authored steps passed so far, kept after the run ends so a run stopped early still shows how far it got; null for runs without an authored journey."},"learning":{"description":"How many of the steps learned from earlier passing runs this run replayed without model turns, and how each completed step and checked outcome was done; null when the runner reported no learning. While the run is live, steps and outcomes follow the runner's progress so far.","oneOf":[{"$ref":"#/components/schemas/ScenarioRunLearning"},{"type":"null"}]},"outcomes":{"type":"array","description":"Each expected outcome with the result of the browser checks that verify it.","items":{"$ref":"#/components/schemas/ScenarioRunOutcome"}},"other_findings":{"type":"array","description":"Findings that no failed outcome explains.","items":{"$ref":"#/components/schemas/ScenarioRunFinding"}},"evidence_archive_url":{"type":["string","null"],"description":"A zip of the scenario run's readable evidence; null when it has none."},"fixable":{"type":"boolean","description":"The browser failed, was blocked, or timed out, so its result can be handed to a coding agent to fix."},"lessons":{"type":"array","description":"What operators taught Verify on this run, oldest first. Later runs of the Scenario recall them as advisory notes.","items":{"$ref":"#/components/schemas/ScenarioRunLesson"}}},"required":["id","lock_version","created_at","updated_at","project_id","run_id","scenario_id","persona_id","account_assignment_id","credential_id","state","scenario_snapshot","persona_snapshot","account_snapshot","plan_snapshot","lessons"]},"ProjectCollection":{"type":"object","required":["projects","permissions"],"properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/Project"}},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"}}},"PersonaCollection":{"type":"object","required":["personas","permissions"],"properties":{"personas":{"type":"array","items":{"$ref":"#/components/schemas/Persona"}},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"}}},"ScenarioCollection":{"type":"object","required":["scenarios","permissions"],"properties":{"scenarios":{"type":"array","items":{"$ref":"#/components/schemas/Scenario"}},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"}}},"ProjectEnvironmentDirectory":{"type":"object","description":"The Environments page. Added addresses and pull request previews are searched and paged separately.","required":["project","environments","previews","active_count","archived_count","permissions","binary_choices","messaging_enabled","tester_numbers"],"properties":{"project":{"$ref":"#/components/schemas/ProjectHeader"},"environments":{"$ref":"#/components/schemas/ProjectEnvironmentDirectoryGroup"},"previews":{"$ref":"#/components/schemas/ProjectEnvironmentDirectoryGroup"},"active_count":{"type":"integer"},"archived_count":{"type":"integer"},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"},"binary_choices":{"type":"array","items":{"$ref":"#/components/schemas/VerifyBinaryChoice"}},"messaging_enabled":{"type":"boolean"},"tester_numbers":{"type":"array","items":{"type":"string"}}}},"ProjectEnvironmentDirectoryGroup":{"type":"object","required":["environments","pagination"],"properties":{"environments":{"type":"array","items":{"$ref":"#/components/schemas/Environment"}},"pagination":{"$ref":"#/components/schemas/VerifyRunsPagination"}}},"EnvironmentCollection":{"type":"object","required":["environments","permissions"],"properties":{"environments":{"type":"array","items":{"$ref":"#/components/schemas/Environment"}},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"}}},"ProjectCredentialCollection":{"type":"object","required":["credentials","permissions"],"properties":{"credentials":{"type":"array","items":{"$ref":"#/components/schemas/ProjectCredential"}},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"}}},"ProjectCredentialInbox":{"type":"object","description":"Recent mail received by a Composal-provisioned credential address, newest first.","required":["messages"],"properties":{"messages":{"type":"array","maxItems":10,"items":{"type":"object","required":["id","from","subject","received_at","text"],"properties":{"id":{"type":"string"},"from":{"type":"string"},"subject":{"type":["string","null"]},"received_at":{"type":"string","format":"date-time"},"recipient_tag":{"description":"The +tag the sender added to the address, such as run-7f3a in name+run-7f3a@acme.mailposal.com.","type":["string","null"]},"text":{"type":"string"}}}}}},"RunCollection":{"type":"object","required":["runs","permissions"],"properties":{"runs":{"type":"array","items":{"$ref":"#/components/schemas/Run"}},"pagination":{"type":"object","properties":{"count":{"type":"integer"},"page":{"type":"integer"},"limit":{"type":"integer"},"last":{"type":"integer"},"previous":{"type":["integer","null"]},"next":{"type":["integer","null"]}}},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"}}},"ProjectPage":{"type":"object","required":["project","permissions","personas","scenarios","scenario_states","environments","network_connections","credentials","identity_provider","runs","pull_requests","pull_request_options"],"properties":{"scenario_states":{"$ref":"#/components/schemas/VerifyScenarioStateCounts"},"identity_provider":{"description":"Where the organization's apps trust Composal sign-in, for new personas","type":"object","required":["issuer","discovery_url","email_suffix"],"properties":{"issuer":{"type":"string"},"discovery_url":{"type":"string"},"email_suffix":{"type":"string"}}},"scenario_history":{"$ref":"#/components/schemas/ScenarioHistory"},"pull_requests":{"type":"array","items":{"$ref":"#/components/schemas/VerifyPullRequestSummary"}},"overview":{"$ref":"#/components/schemas/VerifyPage"},"setup_required":{"type":"boolean"},"pull_request_options":{"$ref":"#/components/schemas/VerifyPullRequestOptions"},"project":{"$ref":"#/components/schemas/Project"},"permissions":{"type":"object","required":["manage","record_scenarios"],"properties":{"manage":{"type":"boolean"},"record_scenarios":{"type":"boolean","description":"Whether this admin can record a journey to draft a Scenario."}}},"personas":{"type":"array","items":{"$ref":"#/components/schemas/Persona"}},"scenarios":{"type":"array","items":{"$ref":"#/components/schemas/Scenario"}},"environments":{"type":"array","items":{"$ref":"#/components/schemas/Environment"}},"network_connections":{"type":"array","items":{"$ref":"#/components/schemas/VerifyNetworkConnection"}},"credentials":{"type":"array","items":{"$ref":"#/components/schemas/ProjectCredential"}},"runs":{"type":"array","items":{"$ref":"#/components/schemas/Run"}}}},"RunPage":{"type":"object","required":["project","run","web_path","scenario_runs","permissions","available_tests"],"properties":{"project":{"$ref":"#/components/schemas/Project"},"run":{"$ref":"#/components/schemas/Run"},"web_path":{"type":"string","description":"Path of the run's page in the web app, where it can be watched live."},"scenario_runs":{"type":"array","items":{"$ref":"#/components/schemas/ScenarioRun"}},"available_tests":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"}}},"ScenarioRevision":{"type":"object","required":["id","action","source","batch","version","user","created_at"],"properties":{"id":{"type":"string"},"action":{"type":"string","enum":["create","update","import","archive","duplicate","from_exploration","discovery","writer"]},"source":{"type":"string","description":"The client the save came through.","enum":["web","cli","api","mobile","mcp","system"]},"batch":{"type":"string","description":"Shared by every revision one request or job saved."},"version":{"type":"integer","description":"The Scenario's lock_version after this save."},"user":{"description":"Null when a system job saved the Scenario.","oneOf":[{"$ref":"#/components/schemas/User"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time"}}},"ScenarioRevisionDetail":{"allOf":[{"$ref":"#/components/schemas/ScenarioRevision"},{"type":"object","required":["definition"],"properties":{"definition":{"$ref":"#/components/schemas/ScenarioFile"}}}]},"ScenarioRevisionCollection":{"type":"object","required":["revisions","pagination"],"properties":{"revisions":{"type":"array","items":{"$ref":"#/components/schemas/ScenarioRevisionDetail"}},"pagination":{"$ref":"#/components/schemas/VerifyRunsPagination"}}},"ScenarioFile":{"type":"object","description":"One narrative v1 or named-actor v2 Scenario file; its $schema identifies the full contract.","required":["$schema","name","steps","outcomes"],"properties":{"$schema":{"type":"string","enum":["https://composal.ai/schema/verify/v1/scenario.json","https://composal.ai/schema/verify/v2/scenario.json"]},"id":{"type":"string","description":"Absent on a new file"},"key":{"type":"string","pattern":"^[a-z0-9_-]{1,100}$","description":"Set on a new file so a retried import matches the Scenario it created"},"version":{"type":"integer","minimum":0,"description":"The Scenario's lock_version; present exactly when id is"},"name":{"type":"string","maxLength":160},"persona":{"type":"string","description":"Active Persona name; omitted means the Signed-out visitor"},"labels":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":40},"description":"Omitted when the Scenario has none. On import, a missing key keeps the current labels and [] removes them."},"fixtures":{"type":"array","maxItems":10,"description":"Omitted when the Scenario has none. On import, a missing key keeps the current fixtures and [] removes them.","items":{"$ref":"#/components/schemas/ScenarioFileFixture"}},"fixture_hashes":{"type":"object","description":"Each fixture path's sha256. Sent beside the file's fields and removed before the file is checked against its schema.","additionalProperties":{"type":"string","pattern":"^[0-9a-f]{64}$"}},"allowed_actions":{"type":"string","enum":["read_only","writes"]},"starting_conditions":{"type":["string","null"],"maxLength":4000},"actors":{"type":"object","minProperties":1,"maxProperties":4,"additionalProperties":{"type":"object","required":["persona"],"properties":{"persona":{"type":"string"},"distinct_from":{"type":"array","maxItems":3,"items":{"type":"string"}}}}},"primary_actor":{"type":"string"},"identity_probe":{"$ref":"#/components/schemas/ScenarioIdentityProbe"},"steps":{"type":"array","maxItems":1000,"items":{"oneOf":[{"type":"string","maxLength":4000},{"$ref":"#/components/schemas/ScenarioActorStep"}]}},"outcomes":{"type":"array","maxItems":100,"items":{"oneOf":[{"type":"string","maxLength":4000},{"$ref":"#/components/schemas/ScenarioActorOutcome"}]}},"path":{"type":"string","description":"Submitted file location, used for result messages and resolving ./dependency.yaml relative to this file. Supply on each file object when using file references. The CLI supplies this metadata; do not add it to YAML file contents."},"dependencies":{"type":"array","items":{"$ref":"#/components/schemas/ScenarioFileDependency"}},"on":{"anyOf":[{"$ref":"#/components/schemas/ScenarioEvents"},{"type":"null"}],"description":"Explicit Actions-style automatic execution rules. Omit to preserve existing rules; null restores relevance selection. An empty object disables automatic execution."},"if":{"type":["string","null"],"maxLength":1000,"description":"A documented subset of Actions expressions. Supports comparisons, &&, ||, !, parentheses, contains, startsWith and endsWith over GitHub event metadata. Empty or null clears it. Applied to automatic execution."},"triggers":{"type":"array","maxItems":100,"uniqueItems":true,"description":"Positive repository path patterns that force fresh PR verification, alongside automatic selection.","items":{"type":"string","minLength":1,"maxLength":500}}}},"ScenarioFileExport":{"type":"object","required":["organization","project","scenarios"],"properties":{"organization":{"type":"object","required":["id","slug"],"properties":{"id":{"type":"string"},"slug":{"type":"string"}}},"project":{"type":"object","required":["id","slug","name"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}}},"scenarios":{"type":"array","items":{"$ref":"#/components/schemas/ScenarioFile"}}}},"ScenarioFileImport":{"type":"object","required":["scenarios"],"properties":{"dry_run":{"type":"boolean","default":false},"scenarios":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/ScenarioFile"},{"type":"object","required":["path"],"properties":{"path":{"type":"string","description":"The file's local path, echoed in its result and used to resolve ./dependency.yaml relative to this file within the submitted batch"}}}]}}}},"ScenarioFileImportResponse":{"type":"object","required":["results"],"properties":{"results":{"type":"array","items":{"type":"object","required":["path","outcome","id","version","errors","warnings"],"properties":{"path":{"type":"string"},"outcome":{"type":"string","enum":["created","updated","unchanged","refused"]},"id":{"type":["string","null"],"description":"Null for a refused file or a Scenario that was not saved"},"version":{"type":["integer","null"]},"errors":{"type":"array","items":{"type":"string"}},"warnings":{"type":"array","description":"Wording a run cannot check reliably, each with how to rewrite it. The file still saves.","items":{"type":"string"}}}}}}},"ScenarioDuplicate":{"type":"object","required":["name","version"],"properties":{"name":{"type":"string"},"version":{"type":"integer","minimum":0},"persona_id":{"type":"string"}}},"RunPrepare":{"type":"object","description":"Give exactly one of scenario_ids, scenario_files or run_plan_id. A Run Plan also requires run_plan_version.","required":["environment_id","idempotency_key"],"properties":{"viewer_time_zone":{"type":"string","maxLength":64,"description":"The launching viewer's IANA time zone. With an Automatic sandbox region, browsers run in the region nearest it."},"environment_id":{"type":"string"},"scenario_ids":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string"}},"scenario_files":{"type":"array","minItems":1,"description":"Scenario files to run as written without saving them. A file whose id, version, Persona, and run definition match an active Scenario in this project adds its execution to that Scenario's history. Other files keep separate run history. A refusal lists each refused file in details.","items":{"allOf":[{"$ref":"#/components/schemas/ScenarioFile"},{"type":"object","properties":{"path":{"type":"string","description":"The file's local path, echoed in refusals and used to resolve ./dependency.yaml relative to this file within the submitted batch."}}}]}},"idempotency_key":{"type":"string","minLength":1,"maxLength":160},"concurrency":{"type":"integer","minimum":1,"maximum":50,"description":"Defaults to 50, lowered by any explicit administrator browser limit. Packages do not cap browser parallelism. Retries that omit this field keep the saved run value."},"max_seconds":{"type":"integer","minimum":30,"maximum":7200,"description":"Seconds the whole run may take from when it is queued, including time scenarios wait to start. Defaults to 7200."},"start_when_prepared":{"type":"boolean","description":"Start the run as soon as its browser plans are ready instead of waiting for a launch request. Defaults to false."},"run_plan_id":{"type":"string"},"run_plan_version":{"type":"integer"}}},"RunLaunch":{"type":"object","required":["digest","idempotency_key"],"properties":{"viewer_time_zone":{"type":"string","maxLength":64,"description":"The launching viewer's IANA time zone. With an Automatic sandbox region, browsers run in the region nearest it."},"digest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"idempotency_key":{"type":"string","minLength":1,"maxLength":160}}},"RunRerun":{"type":"object","required":["mode","idempotency_key"],"properties":{"viewer_time_zone":{"type":"string","maxLength":64,"description":"The launching viewer's IANA time zone. With an Automatic sandbox region, browsers run in the region nearest it."},"mode":{"type":"string","enum":["saved","latest"]},"idempotency_key":{"type":"string","minLength":1,"maxLength":160},"start_when_prepared":{"type":"boolean","description":"Start the new run as soon as its browser plans are ready. Defaults to false."}}},"ScenarioRunAction":{"type":"object","required":["kind","target"],"additionalProperties":false,"properties":{"kind":{"type":"string","enum":["navigate","click","fill","select","wait","capture"]},"target":{"type":"string","minLength":1,"maxLength":500},"value":{"type":"string","minLength":1,"maxLength":4000},"value_ref":{"type":"string","minLength":1,"maxLength":128},"wait_ms":{"type":"integer","minimum":100,"maximum":10000}},"allOf":[{"if":{"required":["value"]},"then":{"properties":{"kind":{"enum":["fill","select"]}}}},{"if":{"required":["value_ref"]},"then":{"properties":{"kind":{"enum":["fill"]}},"not":{"required":["value"]}}},{"if":{"required":["wait_ms"]},"then":{"properties":{"kind":{"enum":["wait"]}}}}]},"ScenarioRunAssertion":{"type":"object","required":["outcome_index","kind","target","expected"],"additionalProperties":false,"properties":{"outcome_index":{"type":"integer","minimum":0},"kind":{"type":"string","enum":["visible","hidden","text","url","status"]},"target":{"type":"string","minLength":1,"maxLength":4000},"expected":{"type":["string","number","boolean"],"maxLength":4000}},"allOf":[{"if":{"properties":{"kind":{"const":"status"}}},"then":{"properties":{"target":{"type":"string","enum":["page"]},"expected":{"anyOf":[{"type":"integer","minimum":100,"maximum":599},{"type":"string","pattern":"^[1-5][0-9]{2}$"}]}}}}]},"ScenarioRunLogin":{"type":"object","additionalProperties":false,"required":["kind","target","test_account_id","credential_refs"],"properties":{"kind":{"type":"string","enum":["login"]},"target":{"type":"string"},"test_account_id":{"type":"string"},"credential_refs":{"type":"array","items":{"type":"string"}}}},"DesktopConfiguration":{"type":"object","additionalProperties":false,"not":{"required":["managed_binary","android"]},"required":["image","description"],"oneOf":[{"properties":{"platform":{"enum":["linux"]},"provider":{"enum":["blaxel"]},"image":{"pattern":"^sandbox/[a-zA-Z0-9_.-]+:(?!latest$)[a-zA-Z0-9_.-]+$"},"artifact_paths":{"items":{"pattern":"^/home/cua/"}}},"not":{"required":["ios"]}},{"required":["platform","provider"],"properties":{"platform":{"enum":["macos"]},"provider":{"enum":["namespace"]},"image":{"pattern":"^namespace/macos:26\\.3\\.1-25D2128-cua-0\\.34\\.0$","minLength":41,"maxLength":41},"artifact_paths":{"items":{"pattern":"^/Users/runner/"}}},"not":{"anyOf":[{"required":["android"]},{"required":["managed_binary"]}]}}],"properties":{"platform":{"type":"string","enum":["linux","macos"]},"provider":{"type":"string","enum":["blaxel","namespace"]},"image":{"type":"string","maxLength":256},"description":{"type":"string","minLength":1,"maxLength":4000},"setup_command":{"type":"string","maxLength":4000},"launch_command":{"type":"string","maxLength":4000},"artifact_paths":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":1000}},"ios":{"$ref":"#/components/schemas/IosApp"},"android":{"$ref":"#/components/schemas/AndroidApk"},"managed_binary":{"$ref":"#/components/schemas/ManagedBinaryManifest"}}},"IosApp":{"type":"object","additionalProperties":false,"required":["app_id","sha256"],"properties":{"app_id":{"type":"string","pattern":"^[a-zA-Z0-9_-]{20,100}$"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}}},"AndroidApk":{"type":"object","additionalProperties":false,"required":["apk_id","sha256"],"properties":{"apk_id":{"type":"string","minLength":20,"maxLength":100},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}}},"ProjectWorkflowConfiguration":{"type":"object","additionalProperties":false,"required":["steps","verification","repairLimit","completion"],"properties":{"steps":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","agent","model","instructions","skills"],"properties":{"id":{"type":"string"},"agent":{"type":"string","enum":["analyst","implementer","reviewer"]},"model":{"type":"string"},"instructions":{"type":"string"},"skills":{"type":"array","items":{"type":"string"}}}}},"verification":{"type":"array","items":{"type":"string"}},"repairLimit":{"type":"integer"},"completion":{"type":"object","additionalProperties":false,"required":["outcome","allChecksPass","requiredChecks","minimumApprovals","greptileScore"],"properties":{"outcome":{"type":"string","enum":["draft","merge"]},"allChecksPass":{"type":"boolean"},"requiredChecks":{"type":"array","items":{"type":"string"}},"minimumApprovals":{"type":"integer"},"greptileScore":{"type":"integer","nullable":true}}}}},"ProjectWorkflowRevision":{"type":"object","additionalProperties":false,"required":["id","parent_id","configuration","author","created_at"],"properties":{"id":{"type":"string"},"parent_id":{"type":"string","nullable":true},"configuration":{"$ref":"#/components/schemas/ProjectWorkflowConfiguration"},"author":{"type":"object","additionalProperties":false,"required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}},"nullable":true},"created_at":{"type":"string"}}},"ProjectWorkflow":{"type":"object","additionalProperties":false,"required":["id","name","archived","revision","can_launch"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"archived":{"type":"boolean"},"revision":{"$ref":"#/components/schemas/ProjectWorkflowRevision"},"can_launch":{"type":"boolean"}}},"ProjectWorkflowRun":{"type":"object","additionalProperties":false,"required":["id","request","status","outcome","repository","workflow_name","revision","requester","cancelled_by","created_at","finished_at","step_index","repair_count","evidence","cancel_token","candidates","can_cancel"],"properties":{"id":{"type":"string"},"request":{"type":"string"},"status":{"type":"string"},"outcome":{"type":"string","nullable":true},"repository":{"type":"object","additionalProperties":false,"required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}},"workflow_name":{"type":"string"},"revision":{"$ref":"#/components/schemas/ProjectWorkflowRevision"},"requester":{"type":"object","additionalProperties":false,"required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}},"nullable":true},"cancelled_by":{"type":"object","additionalProperties":false,"required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}},"nullable":true},"created_at":{"type":"string"},"finished_at":{"type":"string","nullable":true},"step_index":{"type":"integer"},"repair_count":{"type":"integer"},"evidence":{"type":"string","nullable":true},"cancel_token":{"type":"string"},"candidates":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["sha","branch","pull_request_url"],"properties":{"sha":{"type":"string"},"branch":{"type":"string"},"pull_request_url":{"type":"string","nullable":true}}}},"attempts":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","step_id","attempt","model","receipt","usage"],"properties":{"id":{"type":"string"},"step_id":{"type":"string"},"attempt":{"type":"integer"},"model":{"type":"string"},"receipt":{"type":"object","nullable":true,"additionalProperties":true},"usage":{"type":"object","nullable":true,"additionalProperties":true}}}},"usage":{"type":"array","items":{"type":"object","additionalProperties":true}},"can_cancel":{"type":"boolean"},"steps":{"type":"array","description":"Saved-order step progress published by Rails on detail responses; omitted from summaries and optional during rolling upgrades.","items":{"type":"object","additionalProperties":false,"required":["id","agent","model","state"],"properties":{"id":{"type":"string"},"agent":{"type":"string"},"model":{"type":"string"},"state":{"type":"string"}}}},"completion":{"type":"object","nullable":true,"additionalProperties":false,"required":["phase","head_sha"],"properties":{"phase":{"type":"string","nullable":true},"head_sha":{"type":"string"},"merge_sha":{"type":"string"},"deadline_at":{"type":"string"},"conditions":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["source","status","message","repairable"],"properties":{"source":{"type":"string"},"status":{"type":"string","enum":["pass","fail","pending"]},"message":{"type":"string"},"repairable":{"type":"boolean"}}}}}},"pull_request_url":{"type":"string","nullable":true}}},"ProjectWorkflowsPage":{"type":"object","additionalProperties":false,"required":["workflows","runs","repositories","template","can_manage","model_choices","pagination","runs_pagination"],"properties":{"workflows":{"type":"array","items":{"$ref":"#/components/schemas/ProjectWorkflow"}},"runs":{"type":"array","items":{"$ref":"#/components/schemas/ProjectWorkflowRun"}},"repositories":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"template":{"$ref":"#/components/schemas/ProjectWorkflowConfiguration"},"can_manage":{"type":"boolean"},"model_choices":{"type":"array","items":{"type":"string"}},"pagination":{"$ref":"#/components/schemas/ProjectWorkflowPagination"},"runs_pagination":{"$ref":"#/components/schemas/ProjectWorkflowPagination"}}},"ProjectWorkflowAgent":{"type":"object","additionalProperties":false,"required":["agent_id","owner","shared"],"properties":{"agent_id":{"type":"string","nullable":true},"owner":{"type":"object","additionalProperties":false,"required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}},"nullable":true},"shared":{"type":"boolean"},"can_initialize":{"type":"boolean"}}},"ProjectAgentConversationPage":{"type":"object","additionalProperties":false,"required":["organization_id","viewer_id","selected_agent","conversation","error","model_choices"],"properties":{"organization_id":{"type":"string"},"viewer_id":{"type":"string"},"selected_agent":{"anyOf":[{"$ref":"#/components/schemas/PersistentAgentDetail"},{"type":"null"}]},"conversation":{"type":"null"},"error":{"type":"string","nullable":true},"model_choices":{"$ref":"#/components/schemas/PersistentAgentsWorkspacePage/properties/model_choices"}}},"ProjectAgentPage":{"type":"object","additionalProperties":false,"required":["identity","view"],"properties":{"workflows":{"type":"array","items":{"$ref":"#/components/schemas/ProjectWorkflow"}},"runs":{"type":"array","items":{"$ref":"#/components/schemas/ProjectWorkflowRun"}},"repositories":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"template":{"$ref":"#/components/schemas/ProjectWorkflowConfiguration"},"can_manage":{"type":"boolean"},"model_choices":{"type":"array","items":{"type":"string"}},"identity":{"$ref":"#/components/schemas/ProjectWorkflowAgent"},"agentPage":{"anyOf":[{"$ref":"#/components/schemas/ProjectAgentConversationPage"},{"type":"null"}]},"run":{"anyOf":[{"$ref":"#/components/schemas/ProjectWorkflowRun"},{"type":"null"}]},"view":{"type":"string","enum":["conversation","workflows","runs"]},"pagination":{"$ref":"#/components/schemas/ProjectWorkflowPagination"},"inspection":{"$ref":"#/components/schemas/ProjectWorkflowDetail"}}},"ProjectWorkflowPagination":{"type":"object","additionalProperties":false,"required":["page","next_page"],"properties":{"page":{"type":"integer"},"next_page":{"type":["integer","null"]}}},"ProjectWorkflowDetail":{"type":"object","additionalProperties":false,"required":["id","name","archived","revision","revisions","can_launch","pagination"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"archived":{"type":"boolean"},"revision":{"$ref":"#/components/schemas/ProjectWorkflowRevision"},"revisions":{"type":"array","items":{"$ref":"#/components/schemas/ProjectWorkflowRevision"}},"can_launch":{"type":"boolean"},"pagination":{"$ref":"#/components/schemas/ProjectWorkflowPagination"}}},"RelayOperatorTools":{"type":"object","additionalProperties":true,"required":["requester_id","participant","scope_key","tools"],"properties":{"requester_id":{"type":"string"},"participant":{"type":"string","pattern":"^operator-[a-f0-9]{16}$"},"scope_key":{"type":"string","pattern":"^[a-f0-9]{64}$"},"tools":{"type":"array","items":{"type":"object","additionalProperties":true,"required":["name","inputSchema"],"properties":{"name":{"type":"string"},"description":{"type":"string"},"inputSchema":{"type":"object","additionalProperties":true}}}}}},"RelayOperatorResources":{"type":"object","additionalProperties":true,"required":["requester_id","participant","scope_key","resources"],"properties":{"requester_id":{"type":"string"},"participant":{"type":"string","pattern":"^operator-[a-f0-9]{16}$"},"scope_key":{"type":"string","pattern":"^[a-f0-9]{64}$"},"resources":{"type":"array","items":{"type":"object","additionalProperties":true,"required":["uri","name"],"properties":{"uri":{"type":"string"},"name":{"type":"string"}}}}}},"RelayOperatorResource":{"type":"object","additionalProperties":true,"required":["requester_id","participant","scope_key","contents"],"properties":{"requester_id":{"type":"string"},"participant":{"type":"string","pattern":"^operator-[a-f0-9]{16}$"},"scope_key":{"type":"string","pattern":"^[a-f0-9]{64}$"},"contents":{"type":"array","items":{"type":"object","additionalProperties":true,"required":["uri"],"properties":{"uri":{"type":"string"},"text":{"type":"string"},"blob":{"type":"string"},"mimeType":{"type":"string"}}}}}},"RelayOperatorCall":{"type":"object","additionalProperties":false,"required":["requester_id","key","name","arguments"],"properties":{"requester_id":{"type":"string","description":"Signed-in user public ID returned by discovery. Retain it with the exact request key."},"key":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string","pattern":"^[a-z][a-z0-9_.]{0,99}$"},"arguments":{"type":"object","additionalProperties":true,"description":"JSON object limited to 65536 encoded bytes. Reserved routing fields are rejected."}}},"RelayOperatorOperation":{"type":"object","additionalProperties":false,"required":["id","tool","state","result","result_expired","retryable"],"properties":{"id":{"type":"string"},"tool":{"type":"string"},"state":{"type":"string","enum":["pending","running","completed","uncertain"]},"result":{"type":["object","null"],"additionalProperties":true},"result_expired":{"type":"boolean"},"retryable":{"type":"boolean","const":false},"status_action":{"$ref":"#/components/schemas/RelayOperationObservation"}}},"RelayOperatorReceipt":{"type":"object","additionalProperties":false,"required":["requester_id","participant","scope_key","operation"],"properties":{"requester_id":{"type":"string"},"participant":{"type":"string","pattern":"^operator-[a-f0-9]{16}$"},"scope_key":{"type":"string","pattern":"^[a-f0-9]{64}$"},"operation":{"$ref":"#/components/schemas/RelayOperatorOperation"}}},"RelayInspectorThread":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"provider":{"type":"string","enum":["codex","claude"]},"device_name":{"type":"string"},"title":{"type":["string","null"],"description":"Saved authorized native thread title, retained after copied history expires. Absent on older servers."}},"required":["id","provider","device_name"]},"RelayInspectorAgent":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string"},"status":{"type":"string"},"type":{"type":"string"},"thread":{"anyOf":[{"$ref":"#/components/schemas/RelayInspectorThread"},{"type":"null"}]}},"required":["name","status","thread"]},"RelayInspectorChannel":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"topic":{"type":["string","null"]},"is_archived":{"type":"boolean"}},"required":["id","name"]},"RelayInspectorLastMessage":{"type":"object","additionalProperties":false,"properties":{"text":{"type":"string"},"agent_name":{"type":"string"},"created_at":{"type":"string"}},"required":["text","agent_name","created_at"]},"RelayInspectorConversation":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"type":{"type":"string"},"participants":{"type":"array","items":{"type":"string"}},"message_count":{"type":"integer"},"last_message":{"anyOf":[{"$ref":"#/components/schemas/RelayInspectorLastMessage"},{"type":"null"}]},"management_actions":{"type":"array","items":{"$ref":"#/components/schemas/RelayManagementAction"}},"name":{"type":["string","null"]}},"required":["id","type","participants","message_count","last_message"]},"RelayInspectorFile":{"type":"object","additionalProperties":false,"properties":{"file_id":{"type":"string"},"filename":{"type":"string"},"content_type":{"type":"string"},"size_bytes":{"type":"integer"}},"required":["file_id","filename","content_type","size_bytes"]},"RelayInspectorReaction":{"type":"object","additionalProperties":false,"properties":{"emoji":{"type":"string"},"count":{"type":"integer"}},"required":["emoji","count"]},"RelayInspectorMessage":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"agent_name":{"type":"string"},"text":{"type":"string"},"created_at":{"type":"string"},"reply_count":{"type":"integer"},"read_by_count":{"type":"integer"},"attachments":{"type":"array","items":{"$ref":"#/components/schemas/RelayInspectorFile"}},"reactions":{"type":"array","items":{"$ref":"#/components/schemas/RelayInspectorReaction"}}},"required":["id","agent_name","text","created_at","attachments","reactions"]},"RelayInspection":{"type":"object","additionalProperties":false,"properties":{"requester_id":{"type":"string"},"participant":{"type":"string"},"scope_key":{"type":"string"},"view":{"type":"string","enum":["agents","channels","conversations","channel","dm","thread"]},"target":{"type":["string","null"]},"cursor":{"type":["string","null"]},"before":{"type":["string","null"]},"agents":{"type":"array","items":{"$ref":"#/components/schemas/RelayInspectorAgent"}},"channels":{"type":"array","items":{"$ref":"#/components/schemas/RelayInspectorChannel"}},"conversations":{"type":"array","items":{"$ref":"#/components/schemas/RelayInspectorConversation"}},"messages":{"type":"array","items":{"$ref":"#/components/schemas/RelayInspectorMessage"}},"parent":{"anyOf":[{"$ref":"#/components/schemas/RelayInspectorMessage"},{"type":"null"}]},"after":{"type":["string","null"]},"message_target":{"description":"Selected message destination. Submission still checks the current operator participant permissions. Absent on older servers.","anyOf":[{"$ref":"#/components/schemas/RelayMessageTarget"},{"type":"null"}]},"management_actions":{"type":"array","items":{"$ref":"#/components/schemas/RelayManagementAction"}},"channel":{"anyOf":[{"$ref":"#/components/schemas/RelayChannelDetails"},{"type":"null"}]}},"required":["requester_id","participant","scope_key","view","target","cursor","before","agents","channels","conversations","messages","parent","after"]},"RelayFileDownload":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"filename":{"type":"string"},"content_type":{"type":"string"},"size_bytes":{"type":"integer","minimum":1,"maximum":26214400},"download_url":{"type":"string"}},"required":["id","filename","content_type","size_bytes","download_url"]},"RelayMessageTarget":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","enum":["message.dm.send","message.post","message.reply","composal.dm.send"]},"target":{"type":"string","minLength":1,"maxLength":200}},"required":["name","target"]},"RelayManagementAction":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","enum":["channel.create","channel.join","channel.leave","channel.invite","channel.set_topic","channel.archive","message.dm.send_group","composal.dm.add_participant","composal.dm.leave"]},"arguments":{"type":"object","additionalProperties":{"type":"string"},"description":"Fixed destination arguments selected by Rails. Submitted operations still recheck live permissions."},"defaults":{"type":"object","additionalProperties":{"type":"string"}}},"required":["name","arguments"]},{"type":"object","additionalProperties":false,"required":["name","arguments"],"properties":{"name":{"type":"string","enum":["agent.rename"]},"arguments":{"type":"object","additionalProperties":false,"required":["source_operation_id","expected_version"],"properties":{"source_operation_id":{"type":"string"},"expected_version":{"type":"integer","minimum":0,"maximum":9007199254740990}}},"defaults":{"type":"object","additionalProperties":{"type":"string"}}}}]},"RelayChannelDetails":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string"},"topic":{"type":["string","null"]},"member_count":{"type":"integer"},"members":{"type":"array","maxItems":100,"items":{"type":"string"}},"is_archived":{"type":"boolean"}},"required":["name","topic","member_count","members"]},"RelayOperationObservation":{"type":["object","null"],"additionalProperties":false,"required":["name","arguments"],"properties":{"name":{"type":"string","enum":["agent.rename_status"]},"arguments":{"type":"object","additionalProperties":false,"required":["operation_id"],"properties":{"operation_id":{"type":"string"}}}}},"RepositoryAccessEntry":{"type":"object","required":["organization_id","organization_slug","organization_name","membership_role","repository_id","repository_slug","repository_name","default_branch","git_https_clone_url","git_https_supported","git_auth_username"],"properties":{"organization_id":{"type":"string"},"organization_slug":{"type":"string"},"organization_name":{"type":"string"},"membership_role":{"type":"string"},"repository_id":{"type":"string"},"repository_slug":{"type":"string"},"repository_name":{"type":"string"},"default_branch":{"type":"string"},"git_https_clone_url":{"type":"string","format":"uri","nullable":true},"git_https_supported":{"type":"boolean"},"git_auth_username":{"type":"string"},"github_access_warnings":{"type":"array","items":{"$ref":"#/components/schemas/GithubRepositoryAccessHealth"}}}},"RepositoryAccessToken":{"type":"object","required":["id","name","permission_level","token_preview","active","expires_at","last_used_at","revoked_at","created_at","updated_at","expires_at_label","last_used_at_label","revoked_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"permission_level":{"type":"string","enum":["read_only","read_write"]},"token_preview":{"type":"string"},"active":{"type":"boolean"},"expires_at":{"type":"string","format":"date-time","nullable":true},"last_used_at":{"type":"string","format":"date-time","nullable":true},"revoked_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"expires_at_label":{"type":"string","nullable":true},"last_used_at_label":{"type":"string","nullable":true},"revoked_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"RepositorySourceStatus":{"type":"object","required":["status","import_id","can_retry","started_at","updated_at"],"properties":{"status":{"type":"string","enum":["ready","queued","downloading","preparing","failed","canceled","unavailable"]},"import_id":{"type":"string","nullable":true},"can_retry":{"type":"boolean"},"started_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"RepositoryCodeMap":{"type":"object","required":["commit_sha","status","configured","can_scan","error_code"],"properties":{"commit_sha":{"type":"string"},"status":{"type":"string","enum":["not_scanned","queued","cloning","parsing","drawing","done","failed"]},"configured":{"type":"boolean"},"can_scan":{"type":"boolean"},"error_code":{"type":"string","nullable":true},"revision":{"type":"object","required":["summary","author_name","authored_at","commit_url","branch_name","at_branch_head"],"properties":{"summary":{"type":"string","nullable":true},"author_name":{"type":"string","nullable":true},"authored_at":{"type":"string","nullable":true},"commit_url":{"type":"string","nullable":true},"branch_name":{"type":"string"},"at_branch_head":{"type":"boolean","nullable":true},"comparison":{"type":"object","required":["status","behind","ahead"],"properties":{"status":{"type":"string","enum":["current","behind","ahead","diverged","unrelated","unavailable"]},"behind":{"type":"integer","nullable":true},"ahead":{"type":"integer","nullable":true}}}}}}},"RepositoryImportSessionCreateRequest":{"type":"object","required":["idempotency_key"],"properties":{"idempotency_key":{"type":"string"},"github_app_installation_id":{"type":"string"},"client_name":{"type":"string"},"client_version":{"type":"string"}}},"RepositoryImportSelectionRequest":{"type":"object","required":["repositories"],"properties":{"repositories":{"oneOf":[{"type":"string","enum":["all"]},{"type":"array","items":{"type":"object","required":["owner","name"],"properties":{"owner":{"type":"string"},"name":{"type":"string"}}}}]}}},"RepositoryImportInventory":{"type":"object","required":["repositories","limit","truncated"],"properties":{"repositories":{"type":"array","maxItems":500,"items":{"type":"object","required":["owner","name","full_name","visibility","private","default_branch","selectable","status"],"properties":{"owner":{"type":"string"},"name":{"type":"string"},"full_name":{"type":"string"},"visibility":{"type":"string"},"private":{"type":"boolean"},"default_branch":{"type":"string","nullable":true},"selectable":{"type":"boolean"},"status":{"type":"string","enum":["eligible","already_imported","selected","queued","running","succeeded","failed","canceled","in_progress_elsewhere","ineligible"]},"reason":{"type":"string","nullable":true}}}},"limit":{"type":"integer","minimum":1,"maximum":500},"truncated":{"type":"boolean"},"query":{"type":"string"},"action_required":{"type":"string","enum":["github_app_installation"]},"authorization_endpoint":{"type":"string"}}},"RepositoryImportSession":{"type":"object","required":["id","organization_id","organization_slug","github_app_installation_id","status","client_name","client_version","error_message","can_authorize_github","github_connected","expires_at","git_imports","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"organization_slug":{"type":"string"},"github_app_installation_id":{"type":"string","nullable":true},"status":{"type":"string","enum":["pending","running","completed","failed","canceled","expired"]},"git_imports":{"type":"array","items":{"$ref":"#/components/schemas/GitImportStatus"}},"client_name":{"type":"string","nullable":true},"client_version":{"type":"string","nullable":true},"can_authorize_github":{"type":"boolean"},"github_connected":{"type":"boolean"},"error_message":{"type":"string","nullable":true},"expires_at":{"type":"string","format":"date-time"},"action_required":{"type":"string","enum":["github_app_installation"]},"authorization_endpoint":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"Repository":{"type":"object","required":["id","organization_id","slug","name","description","icon_name","status","merge_authority","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"icon_name":{"type":"string"},"status":{"type":"string","enum":["active","archived"]},"merge_authority":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"RepositoryMutationLease":{"type":"object","required":["held","kind","fingerprint","fence_version","expires_at","takeover_after","expired","recoverable","blockers","inspected_at"],"properties":{"held":{"type":"boolean"},"kind":{"type":"string","nullable":true,"enum":["short","remote",null]},"fingerprint":{"type":"string","nullable":true},"fence_version":{"type":"integer"},"expires_at":{"type":"string","nullable":true},"takeover_after":{"type":"string","nullable":true},"expired":{"type":"boolean"},"recoverable":{"type":"boolean"},"blockers":{"type":"array","items":{"type":"string"}},"inspected_at":{"type":"string"}}},"RepositoryStatsFreshness":{"type":"object","required":["computed_at","stale","from_cache","collection_duration_ms","collector_version"],"properties":{"computed_at":{"type":"string","format":"date-time","nullable":true},"stale":{"type":"boolean"},"from_cache":{"type":"boolean"},"collection_duration_ms":{"type":"integer","minimum":0},"collector_version":{"type":"string","nullable":true}}},"RepositoryGitObjectTally":{"type":"object","required":["kind","objects","object_bytes","largest_object_bytes"],"properties":{"kind":{"type":"string","enum":["blob","tree","commit","tag"]},"objects":{"type":"integer","minimum":0},"object_bytes":{"type":"integer","minimum":0},"largest_object_bytes":{"type":"integer","minimum":0}}},"RepositoryGitPhysicalStats":{"type":"object","required":["backend_generation","revision","objects","object_bytes","pack_count","pack_entries","kinds"],"properties":{"backend_generation":{"type":"integer","minimum":1},"revision":{"type":"integer","minimum":0},"objects":{"type":"integer","minimum":0},"object_bytes":{"type":"integer","minimum":0},"pack_count":{"type":"integer","minimum":0},"pack_entries":{"type":"integer","minimum":0},"kinds":{"type":"array","items":{"$ref":"#/components/schemas/RepositoryGitObjectTally"}}}},"RepositoryGitStatsSeriesPoint":{"type":"object","required":["captured_at","physical"],"properties":{"captured_at":{"type":"string","format":"date-time"},"physical":{"$ref":"#/components/schemas/RepositoryGitPhysicalStats"}}},"RepositoryGitStats":{"type":"object","required":["backend","freshness","physical","note","series","can_refresh"],"properties":{"backend":{"type":"string","enum":["git"]},"freshness":{"$ref":"#/components/schemas/RepositoryStatsFreshness"},"physical":{"$ref":"#/components/schemas/RepositoryGitPhysicalStats"},"note":{"type":"string"},"series":{"type":"array","items":{"$ref":"#/components/schemas/RepositoryGitStatsSeriesPoint"}},"can_refresh":{"type":"boolean"}}},"RunChatCard":{"type":"object","required":["project","run","web_path"],"properties":{"project":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}},"web_path":{"type":"string"},"run":{"type":"object","required":["title","state","outcome","cleanup_state","progress"],"properties":{"title":{"type":"string"},"state":{"$ref":"#/components/schemas/Run/properties/state"},"outcome":{"$ref":"#/components/schemas/Run/properties/outcome"},"cleanup_state":{"$ref":"#/components/schemas/Run/properties/cleanup_state"},"progress":{"type":"object","required":["total","finished"],"properties":{"total":{"type":"integer"},"finished":{"type":"integer"}}}}}}},"RunScenarioSummary":{"type":"object","required":["id","state","scenario_name","failure_code","summary","activity","fixable"],"properties":{"id":{"type":"string"},"state":{"$ref":"#/components/schemas/ScenarioRun/properties/state"},"scenario_name":{"type":"string","nullable":true},"failure_code":{"type":"string","nullable":true},"summary":{"type":"string","nullable":true,"maxLength":2000},"activity":{"type":"string","nullable":true,"maxLength":2000,"description":"What a running scenario is doing now, the same line as its ScenarioRun activity; null unless running."},"fixable":{"type":"boolean"}}},"RunBrowserPage":{"type":"object","required":["project","run","web_path","permissions","scenario_runs","selected_scenario_run","pagination","fixable_count","fix_scenarios","fix_scenario_count","preparation_reason","available_tests"],"properties":{"project":{"$ref":"#/components/schemas/ProjectHeader"},"run":{"$ref":"#/components/schemas/Run"},"web_path":{"type":"string"},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"},"scenario_runs":{"type":"array","items":{"$ref":"#/components/schemas/RunScenarioSummary"}},"selected_scenario_run":{"allOf":[{"$ref":"#/components/schemas/ScenarioRun"}],"nullable":true},"pagination":{"$ref":"#/components/schemas/VerifyRunsPagination"},"fixable_count":{"type":"integer"},"fix_scenarios":{"type":"array","description":"The fixable scenarios an agent handoff covers. With an open browser, only that scenario; otherwise the fixable scenarios on this page.","items":{"$ref":"#/components/schemas/RunScenarioSummary"}},"fix_scenario_count":{"type":"integer","description":"How many scenarios the agent handoff covers, including those on other pages."},"preparation_reason":{"type":"string","nullable":true},"available_tests":{"$ref":"#/components/schemas/RunPage/properties/available_tests"}}},"RunPlanNode":{"type":"object","additionalProperties":false,"required":["key","scenario_id"],"properties":{"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,39}$"},"scenario_id":{"type":"string"}}},"RunPlanDependency":{"type":"object","additionalProperties":false,"required":["from","after_step","to","before_step"],"properties":{"from":{"type":"string"},"after_step":{"type":"integer","minimum":1},"to":{"type":"string"},"before_step":{"type":"integer","minimum":1},"name":{"type":"string","maxLength":80}}},"RunPlanInput":{"type":"object","required":["name","nodes","dependencies"],"properties":{"name":{"type":"string","minLength":1,"maxLength":160},"nodes":{"type":"array","minItems":1,"maxItems":20,"items":{"$ref":"#/components/schemas/RunPlanNode"}},"dependencies":{"type":"array","maxItems":100,"items":{"$ref":"#/components/schemas/RunPlanDependency"}},"identity_probe":{"type":"object","nullable":true,"required":["path","subject_pointer","email_pointer"],"properties":{"path":{"type":"string"},"subject_pointer":{"type":"string"},"email_pointer":{"type":"string"}}}}},"RunPlanStep":{"type":"object","required":["step","position","instruction"],"properties":{"step":{"type":"integer"},"position":{"type":"integer"},"instruction":{"type":"string"},"setup":{"type":"boolean"}}},"RunPlanLane":{"type":"object","required":["key","scenario_id","name","persona_name","version","steps","outcome_indexes"],"properties":{"key":{"type":"string"},"scenario_id":{"type":"string"},"name":{"type":"string"},"persona_name":{"type":"string"},"version":{"type":"integer"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/RunPlanStep"}},"outcome_indexes":{"type":"array","items":{"type":"integer"}},"state":{"type":"string"},"completed_steps":{"type":"integer"}}},"RunPlanSnapshot":{"type":"object","required":["id","version","name","nodes","dependencies","connectors","step_count","participants"],"properties":{"participants":{"type":"array","items":{"type":"object","required":["id","version"],"properties":{"id":{"type":"string"},"version":{"type":"integer"}}}},"step_count":{"type":"integer"},"connectors":{"type":"array","items":{"type":"object","required":["from_row","to_row","from_position","to_position"],"properties":{"from_row":{"type":"integer"},"to_row":{"type":"integer"},"from_position":{"type":"integer"},"to_position":{"type":"integer"}}}},"id":{"type":"string"},"version":{"type":"integer"},"name":{"type":"string"},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/RunPlanLane"}},"dependencies":{"type":"array","items":{"$ref":"#/components/schemas/RunPlanDependency"}},"completed_steps":{"type":"integer"},"root_scenario_id":{"type":"string"}}},"RunPlan":{"type":"object","required":["id","project_id","name","nodes","dependencies","identity_probe","lock_version","preview","archived_at","created_at","updated_at"],"properties":{"id":{"type":"string"},"project_id":{"type":"string"},"name":{"type":"string"},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/RunPlanNode"}},"dependencies":{"type":"array","items":{"$ref":"#/components/schemas/RunPlanDependency"}},"identity_probe":{"type":"object","nullable":true,"required":["path","subject_pointer","email_pointer"],"properties":{"path":{"type":"string"},"subject_pointer":{"type":"string"},"email_pointer":{"type":"string"}}},"lock_version":{"type":"integer"},"preview":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/RunPlanSnapshot"}]},"archived_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}}},"RunPlanScenario":{"type":"object","required":["id","name","persona_name","step_count","available"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"persona_name":{"type":"string"},"step_count":{"type":"integer"},"available":{"type":"boolean"}}},"RunPlansPage":{"type":"object","required":["plans","scenarios","environments","permissions","pagination"],"properties":{"plans":{"type":"array","items":{"$ref":"#/components/schemas/RunPlan"}},"scenarios":{"type":"array","items":{"$ref":"#/components/schemas/RunPlanScenario"}},"environments":{"type":"array","items":{"$ref":"#/components/schemas/ProjectLaunchEnvironment"}},"permissions":{"type":"object","required":["manage"],"properties":{"manage":{"type":"boolean"}}},"pagination":{"$ref":"#/components/schemas/VerifyRunsPagination"}}},"RunPlanUpdate":{"allOf":[{"$ref":"#/components/schemas/RunPlanInput"},{"type":"object","required":["version"],"properties":{"version":{"type":"integer"}}}]},"RunPlanError":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}},"field_errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}},"RunSchedule":{"type":"object","required":["id","name","state","time_of_day","time_zone","credential_ids","lock_version","environment_id","next_run_at","history","selection_mode","labels","scenario_count"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"state":{"type":"string","enum":["active","paused"]},"time_of_day":{"type":"string"},"time_zone":{"type":"string"},"credential_ids":{"type":"object","additionalProperties":{"type":"string"}},"lock_version":{"type":"integer"},"environment_id":{"type":"string"},"environment_name":{"type":"string"},"source_scenario_id":{"type":"string","nullable":true},"cron_expression":{"type":"string","nullable":true},"notification_channel":{"type":"string","enum":["email","slack","none"],"description":"Email the schedule owner by default; legacy requests with a Slack subscription keep Slack."},"slack_subscription_id":{"type":"string","nullable":true},"next_run_at":{"type":"string","format":"date-time"},"history":{"type":"array","items":{"type":"object","required":["id","due_at","state","error_code","run_path","outcome"],"properties":{"id":{"type":"string"},"due_at":{"type":"string","format":"date-time"},"state":{"type":"string"},"error_code":{"type":"string","nullable":true},"run_path":{"type":"string","nullable":true},"outcome":{"type":"string","nullable":true}}}},"selection_mode":{"type":"string","enum":["all","labels"]},"labels":{"type":"array","items":{"type":"string","maxLength":40},"maxItems":20},"scenario_count":{"type":"integer"}}},"RunScheduleCreate":{"type":"object","required":["name","state","time_of_day","time_zone","credential_ids","environment_id","selection_mode","labels"],"properties":{"name":{"type":"string"},"state":{"type":"string","enum":["active","paused"]},"time_of_day":{"type":"string"},"time_zone":{"type":"string"},"credential_ids":{"type":"object","additionalProperties":{"type":"string"}},"environment_id":{"type":"string","description":"Project environment slug or public ID."},"notification_channel":{"type":"string","enum":["email","slack"],"description":"Email the schedule owner by default; legacy requests with a Slack subscription keep Slack."},"slack_subscription_id":{"type":"string","nullable":true},"selection_mode":{"type":"string","enum":["all","labels"]},"labels":{"type":"array","items":{"type":"string","maxLength":40},"maxItems":20}}},"RunScheduleUpdate":{"type":"object","required":["version"],"properties":{"name":{"type":"string"},"state":{"type":"string","enum":["active","paused"]},"time_of_day":{"type":"string"},"time_zone":{"type":"string"},"credential_ids":{"type":"object","additionalProperties":{"type":"string"}},"environment_id":{"type":"string","description":"Project environment slug or public ID."},"notification_channel":{"type":"string","enum":["email","slack"],"description":"Email the schedule owner by default; legacy requests with a Slack subscription keep Slack."},"slack_subscription_id":{"type":"string","nullable":true},"version":{"type":"integer"},"selection_mode":{"type":"string","enum":["all","labels"]},"labels":{"type":"array","items":{"type":"string","maxLength":40},"maxItems":20}}},"RunScheduleOptions":{"type":"object","required":["labels","slack_channels"],"properties":{"labels":{"type":"array","items":{"type":"string"}},"slack_channels":{"type":"array","items":{"type":"object","required":["id","workspace_name","name"],"properties":{"id":{"type":"string"},"workspace_name":{"type":"string"},"name":{"type":"string"}}}}}},"RunScheduleSelection":{"type":"object","required":["selection_mode","labels"],"properties":{"selection_mode":{"type":"string","enum":["all","labels"]},"labels":{"type":"array","items":{"type":"string","maxLength":40},"maxItems":20}}},"RunSchedulePreview":{"type":"object","required":["count","scenarios","personas"],"properties":{"count":{"type":"integer"},"scenarios":{"type":"array","items":{"type":"object","required":["id","name","available"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"available":{"type":"boolean"}}}},"personas":{"type":"array","items":{"type":"object","required":["id","name","credential_id"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"credential_id":{"type":"string","nullable":true}}}}}},"RunScheduleSetupOptions":{"allOf":[{"$ref":"#/components/schemas/RunScheduleOptions"},{"type":"object","required":["environments","credentials"],"properties":{"environments":{"type":"array","items":{"type":"object","required":["id","slug","name"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}}}},"credentials":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}}}}]},"ScenarioDependency":{"type":"object","additionalProperties":false,"required":["scenario_id","after_step","before_step"],"properties":{"scenario_id":{"type":"string","pattern":"^scenario_"},"after_step":{"type":"integer","minimum":1,"maximum":1000},"before_step":{"type":"integer","minimum":1,"maximum":1000},"name":{"type":"string","maxLength":80}}},"ScenarioFileDependency":{"type":"object","additionalProperties":false,"required":["scenario_id","after_step","before_step"],"properties":{"scenario_id":{"type":"string","description":"Saved Scenario ID or ./relative-file.yaml within the submitted batch, relative to the referring file.","anyOf":[{"type":"string","pattern":"^scenario_","maxLength":100},{"type":"string","pattern":"^\\./[^\\\\\\r\\n\\u0000]+\\.ya?ml$","maxLength":500}]},"after_step":{"type":"integer","minimum":1,"maximum":1000},"before_step":{"type":"integer","minimum":1,"maximum":1000},"name":{"type":"string","maxLength":80}}},"ScenarioDependencyChoice":{"type":"object","additionalProperties":false,"required":["id","name","persona_name","step_count"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"persona_name":{"type":"string"},"step_count":{"type":"integer"}}},"ScenarioDependencyContext":{"type":"object","required":["preview","error"],"properties":{"preview":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/RunPlanSnapshot"}]},"error":{"type":"string","nullable":true}}},"ScenarioEditSuggestionRequest":{"allOf":[{"$ref":"#/components/schemas/ScenarioRunEditSave"},{"type":"object","required":["prompt"],"properties":{"prompt":{"type":"string","minLength":1,"maxLength":4000}}}]},"ScenarioEditProposal":{"allOf":[{"$ref":"#/components/schemas/ScenarioEditContent"},{"type":"object","required":["explanation"],"properties":{"explanation":{"type":"string"}}}]},"ScenarioEditContent":{"type":"object","required":["steps","outcomes"],"properties":{"steps":{"type":"array","minItems":1,"maxItems":1000,"items":{"oneOf":[{"type":"string","minLength":1,"maxLength":4000},{"$ref":"#/components/schemas/ScenarioActorStep"}]}},"outcomes":{"type":"array","minItems":1,"maxItems":100,"items":{"oneOf":[{"type":"string","minLength":1,"maxLength":4000},{"$ref":"#/components/schemas/ScenarioActorOutcome"}]}}}},"ScenarioRunEdit":{"type":"object","required":["organization_id","scenario_id","version","current","actor_keys","can_run","run_unavailable_reason"],"properties":{"organization_id":{"type":"string"},"scenario_id":{"type":"string"},"version":{"type":"integer"},"current":{"$ref":"#/components/schemas/ScenarioEditContent"},"actor_keys":{"type":"array","items":{"type":"string"}},"can_run":{"type":"boolean"},"run_unavailable_reason":{"type":["string","null"]}}},"ScenarioRunEditSave":{"allOf":[{"$ref":"#/components/schemas/ScenarioEditContent"},{"type":"object","required":["version"],"properties":{"version":{"type":"integer"}}}]},"ScenarioEvents":{"type":"object","description":"Explicit Actions-style automatic execution rules. Omit to preserve existing rules; null restores relevance selection. An empty object disables automatic execution.","additionalProperties":false,"properties":{"pull_request":{"type":"object","additionalProperties":false,"properties":{"types":{"type":"array","minItems":1,"uniqueItems":true,"items":{"enum":["opened","reopened","synchronize","ready_for_review","labeled","unlabeled","edited"]}},"paths":{"type":"array","minItems":1,"maxItems":100,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":500}},"paths-ignore":{"type":"array","minItems":1,"maxItems":100,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":500}},"branches":{"type":"array","minItems":1,"maxItems":100,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":500}},"branches-ignore":{"type":"array","minItems":1,"maxItems":100,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":500}}},"allOf":[{"not":{"required":["paths","paths-ignore"]}},{"not":{"required":["branches","branches-ignore"]}}]},"schedule":{"type":"array","maxItems":10,"uniqueItems":true,"description":"Recurring runs. Cron minute slots must be at least five minutes apart. Each entry names the project environment it tests; timezone defaults to UTC.","items":{"type":"object","additionalProperties":false,"required":["cron","environment"],"properties":{"cron":{"type":"string","minLength":9,"maxLength":100},"timezone":{"type":"string","minLength":1,"maxLength":100},"environment":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,100}$","description":"An existing, unarchived environment slug or venv_ ID from this Project."}}}}}},"ScenarioRecordingCreate":{"type":"object","required":["persona_id","environment_id"],"properties":{"persona_id":{"type":"string","description":"The project persona the journey acts as."},"environment_id":{"type":"string","description":"The project environment the browser opens."},"start_path":{"type":"string","maxLength":500,"description":"A path on the environment to start at, such as /settings. Defaults to its address."}}},"ScenarioRecordingFinish":{"type":"object","properties":{"outcome_hint":{"type":"string","maxLength":1000,"description":"What shows the journey worked."}}},"ScenarioRecording":{"type":"object","required":["id","status","phase","persona_id","environment_id","browser","event_count","signed_in_during_recording","error","draft","created_at","updated_at"],"properties":{"id":{"type":"string"},"status":{"type":"string","enum":["recording","drafting","drafted","failed","discarded","expired"]},"phase":{"type":"string","enum":["preparing","recording","saving","drafting","drafted","redraftable","ended"],"description":"What the owner can do now. preparing: the browser is starting. recording: the browser takes input and the recording can be finished. saving: the lease ended and the journey is being saved. drafting: the draft is being written. drafted: the draft is ready. redraftable: the journey is saved and can be drafted again. ended: nothing more happens; start a new recording. drafted, redraftable and ended change only when the owner acts."},"persona_id":{"type":"string"},"environment_id":{"type":"string"},"browser":{"$ref":"#/components/schemas/ScenarioRecordingBrowser"},"event_count":{"type":"integer"},"signed_in_during_recording":{"type":"boolean"},"error":{"type":["string","null"]},"draft":{"description":"Present once drafted.","oneOf":[{"$ref":"#/components/schemas/ScenarioDraft"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"ScenarioRecordingBrowser":{"type":"object","required":["status","expires_at","viewer_url","origin"],"properties":{"status":{"type":"string","enum":["pending","starting","ready","saved","closed","failed"]},"expires_at":{"type":"string","format":"date-time"},"viewer_url":{"type":["string","null"],"description":"Creator-only bearer link while the browser is ready. Do not share."},"origin":{"type":"string"}}},"ScenarioDraft":{"type":"object","description":"A Scenario drafted from a recording, shaped like ScenarioCreate. It is never saved automatically.","required":["name","labels","persona_id","allowed_actions","starting_conditions","steps","outcomes","gaps","persona_hint"],"properties":{"name":{"type":"string"},"labels":{"type":"array","items":{"type":"string"}},"persona_id":{"type":"string"},"allowed_actions":{"type":"string","enum":["read_only","writes"]},"starting_conditions":{"type":"string"},"steps":{"type":"array","items":{"type":"string"}},"outcomes":{"type":"array","items":{"type":"string"}},"gaps":{"type":"array","items":{"type":"string"},"description":"What the recording could not show."},"persona_hint":{"type":["string","null"],"enum":["signs_in",null],"description":"signs_in when the journey signed in but its persona does not."}}},"SessionShowMarker":{"type":"object","description":"A commit landmark. Rails resolves `event_index` against the transcript being shown. Emitted only for checkpoints whose index is built. The commit the checkpoint was sealed at rides along: `git_commit_sha` (with `github_commit_url` when the repository is still addressable on GitHub) and `linked_commit_ids` open Git commits associated with this checkpoint. A checkpoint with no commit association carries neither.","required":["checkpoint_id","sequence_number","label","event_index","event_count","linked_commit_ids","git_commit_sha","github_commit_url"],"properties":{"checkpoint_id":{"type":"string"},"sequence_number":{"type":"integer"},"label":{"type":"string"},"event_index":{"type":"integer"},"event_count":{"type":"integer"},"linked_commit_ids":{"type":"array","items":{"type":"string"}},"git_commit_sha":{"type":"string","nullable":true,"description":"40-hex Git commit this checkpoint was sealed at; null when unsealed."},"github_commit_url":{"type":"string","nullable":true,"description":"Where that commit lives on GitHub, built from the repository's GitHub address. Null when the checkpoint is unsealed or the repository has no GitHub address."}}},"SessionShowTokenStats":{"type":"object","description":"Session-level token usage for the header cost estimate. `total_tokens` and `token_usage_scope` are the non-additive session aggregate; `token_usage` carries the itemized counters and `model_usage` the per-model split behind it, resolved with the same scope rule. `subagent_token_usage` is the child-agent share already inside them. `model` is from the latest uploaded checkpoint. The flat per-type fields remain for readers of the older shape.","required":["input_tokens","cached_input_tokens","output_tokens","reasoning_output_tokens","total_tokens","model","token_usage_scope","token_usage","model_usage","subagent_token_usage","estimated_cost"],"properties":{"input_tokens":{"type":"integer","nullable":true},"cached_input_tokens":{"type":"integer","nullable":true},"output_tokens":{"type":"integer","nullable":true},"reasoning_output_tokens":{"type":"integer","nullable":true},"total_tokens":{"type":"integer","nullable":true},"model":{"type":"string","nullable":true},"token_usage_scope":{"type":"string","nullable":true},"token_usage":{"oneOf":[{"$ref":"#/components/schemas/AgentTokenUsage"},{"type":"null"}]},"model_usage":{"type":"array","items":{"$ref":"#/components/schemas/AgentModelTokenUsage"}},"subagent_token_usage":{"oneOf":[{"$ref":"#/components/schemas/AgentTokenUsage"},{"type":"null"}]},"estimated_cost":{"oneOf":[{"$ref":"#/components/schemas/AgentCostEstimate"},{"type":"null"}]}}},"SessionTranscriptStats":{"type":"object","description":"Derived header stats for the resolved checkpoint's transcript. File/line/ duration fields are null when derivation could not read them (the UI omits those); transcript facet counts are always present.","required":["duration_ms","files_touched","files_touched_count","lines_added","lines_removed","prompt_count","response_count","step_count","reasoning_count","tool_event_count","tool_call_count","other_count"],"properties":{"duration_ms":{"type":"integer","nullable":true},"files_touched":{"type":"array","nullable":true,"description":"Distinct edited paths, capped at 50.","items":{"type":"string"}},"files_touched_count":{"type":"integer","nullable":true},"lines_added":{"type":"integer","nullable":true},"lines_removed":{"type":"integer","nullable":true},"prompt_count":{"type":"integer"},"response_count":{"type":"integer"},"step_count":{"type":"integer"},"reasoning_count":{"type":"integer"},"tool_event_count":{"type":"integer"},"tool_call_count":{"type":"integer"},"other_count":{"type":"integer"}}},"SessionShowTranscriptIndexState":{"type":"object","description":"The resolved checkpoint's transcript-index build state (page contract).","required":["state","checkpoint_id"],"properties":{"state":{"type":"string","enum":["ready","preparing","failed","unavailable"]},"checkpoint_id":{"type":"string"}}},"SessionShowPage":{"type":"object","required":["session","markers","token_stats","transcript_stats","transcript_index"],"properties":{"github_access_warnings":{"type":"array","items":{"$ref":"#/components/schemas/GithubRepositoryAccessHealth"}},"session":{"description":"Identical serialization to the org sessions page's expanded session, so the web reuses one session-detail builder. Jump-to data lives in `markers`, not on these checkpoints.","allOf":[{"$ref":"#/components/schemas/OrganizationSessionDetail"}]},"markers":{"type":"array","items":{"$ref":"#/components/schemas/SessionShowMarker"}},"token_stats":{"oneOf":[{"$ref":"#/components/schemas/SessionShowTokenStats"},{"type":"null"}]},"transcript_stats":{"oneOf":[{"$ref":"#/components/schemas/SessionTranscriptStats"},{"type":"null"}]},"transcript_index":{"oneOf":[{"$ref":"#/components/schemas/SessionShowTranscriptIndexState"},{"type":"null"}]}}},"TranscriptIndexBucketCounts":{"type":"object","description":"Event counts by UI filter bucket. Prompts include user, system, and developer messages. Responses, reasoning, tool traffic, and other lifecycle data remain distinct. Drives both whole-transcript totals and precise per-chunk skip planning during backward loading.","required":["prompts","responses","reasoning","tools","other"],"properties":{"prompts":{"type":"integer"},"responses":{"type":"integer"},"reasoning":{"type":"integer"},"tools":{"type":"integer"},"other":{"type":"integer"}}},"TranscriptIndexManifestChunk":{"type":"object","required":["seq","event_start","event_end","bucket_counts","bytes","sha256"],"properties":{"seq":{"type":"integer"},"event_start":{"type":"integer","description":"0-based inclusive index of the first event in the chunk."},"event_end":{"type":"integer","description":"0-based inclusive index of the last event in the chunk."},"bucket_counts":{"$ref":"#/components/schemas/TranscriptIndexBucketCounts"},"bytes":{"type":"integer","description":"Uncompressed JSON byte size of the chunk."},"sha256":{"type":"string","description":"SHA-256 of the uncompressed chunk JSON."}}},"TranscriptIndexManifest":{"type":"object","required":["version","session_id","checkpoint_id","event_count","chunk_size","chunk_count","bucket_counts","chunks","stats"],"properties":{"version":{"type":"integer"},"session_id":{"type":"string"},"checkpoint_id":{"type":"string"},"event_count":{"type":"integer"},"chunk_size":{"type":"integer"},"chunk_count":{"type":"integer"},"bucket_counts":{"$ref":"#/components/schemas/TranscriptIndexBucketCounts"},"chunks":{"type":"array","items":{"$ref":"#/components/schemas/TranscriptIndexManifestChunk"}},"stats":{"$ref":"#/components/schemas/SessionTranscriptStats"}}},"TranscriptIndexChunkUrl":{"type":"object","required":["seq","url"],"properties":{"seq":{"type":"integer"},"url":{"type":"string","description":"Same-origin API path for the chunk's bytes — this operation with the resolved checkpoint pinned. The version and digest identify the exact immutable chunk bytes. Relative, so the browser sends it to the API with its session credentials."}}},"TranscriptIndexChunk":{"type":"object","description":"One chunk object's body, returned when `chunk` is set. Served zstd-encoded to clients that accept it, decompressed to everyone else.","required":["version","seq","events"],"properties":{"version":{"type":"integer"},"seq":{"type":"integer"},"events":{"type":"array","items":{"$ref":"#/components/schemas/AgentSessionTranscriptEvent"}}}},"SessionTranscriptIndexResponse":{"type":"object","required":["state","session_id","checkpoint_id"],"properties":{"state":{"type":"string","enum":["ready","preparing","failed"]},"session_id":{"type":"string"},"checkpoint_id":{"type":"string"},"manifest":{"description":"Present only when `state` is `ready`.","oneOf":[{"$ref":"#/components/schemas/TranscriptIndexManifest"},{"type":"null"}]},"chunks":{"type":"array","description":"Per-chunk same-origin URLs, present only when `state` is `ready`.","items":{"$ref":"#/components/schemas/TranscriptIndexChunkUrl"}}}},"OrganizationSessionRepository":{"type":"object","required":["id","slug","name"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}}},"OrganizationSessionUser":{"type":"object","required":["id","name","handle","avatar_url"],"properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true},"handle":{"type":"string","nullable":true},"avatar_url":{"type":"string","nullable":true,"description":"Avatar URL for the session owner: their OAuth/profile picture when set, otherwise a deterministic Gravatar derived from their email (mirrors History's commit author avatars)."}}},"AgentTokenUsage":{"type":"object","description":"Itemized token counters a cost estimate prices. `input_tokens` is the uncached prompt share; `cache_read_input_tokens` and `cache_creation_input_tokens` are the two cache classes (priced very differently), with the creation count split by TTL when the provider reports it; `cached_input_tokens` is their sum. `output_tokens` already includes `reasoning_output_tokens`. `api_call_count` is the number of distinct model responses behind the counters. Each field is null when the harness did not report it.","required":["input_tokens","cached_input_tokens","cache_read_input_tokens","cache_creation_input_tokens","cache_creation_5m_input_tokens","cache_creation_1h_input_tokens","output_tokens","reasoning_output_tokens","total_tokens","api_call_count"],"properties":{"input_tokens":{"type":"integer","nullable":true},"cached_input_tokens":{"type":"integer","nullable":true},"cache_read_input_tokens":{"type":"integer","nullable":true},"cache_creation_input_tokens":{"type":"integer","nullable":true},"cache_creation_5m_input_tokens":{"type":"integer","nullable":true},"cache_creation_1h_input_tokens":{"type":"integer","nullable":true},"output_tokens":{"type":"integer","nullable":true},"reasoning_output_tokens":{"type":"integer","nullable":true},"total_tokens":{"type":"integer","nullable":true},"api_call_count":{"type":"integer","nullable":true}}},"AgentCostEstimate":{"type":"object","description":"Estimated token cost at today's public list prices, priced by Rails so no client carries a price table. `usd` is a decimal string. `floor` is true when a model in the session has no list price, so the figure is a lower bound; those models are listed in `unpriced_models`. `models` gives each priced model's share. Rows shipped to analytics carry the price at capture time instead, so history never moves when the table does.","required":["usd","floor","models","unpriced_models","pricing_version"],"properties":{"usd":{"type":"string"},"floor":{"type":"boolean"},"models":{"type":"array","items":{"type":"object","required":["model","usd"],"properties":{"model":{"type":"string"},"usd":{"type":"string"}}}},"unpriced_models":{"type":"array","items":{"type":"string"}},"pricing_version":{"type":"string"}}},"AgentModelTokenUsage":{"allOf":[{"$ref":"#/components/schemas/AgentTokenUsage"},{"type":"object","required":["model"],"properties":{"model":{"type":"string","description":"Provider model id this share of the usage was billed to."}}}]},"OrganizationSessionStats":{"type":"object","required":["checkpoint_count","uploaded_count","failed_count","pending_count","redaction_count","last_captured_at","total_tokens","token_usage_scope","token_usage","model_usage","estimated_cost","message_count","agent_count","model","commit_count","pull_request_count","pull_requests"],"properties":{"checkpoint_count":{"type":"integer"},"uploaded_count":{"type":"integer"},"failed_count":{"type":"integer"},"pending_count":{"type":"integer"},"redaction_count":{"type":"integer"},"last_captured_at":{"type":"string","nullable":true},"total_tokens":{"type":"integer","nullable":true},"token_usage_scope":{"type":"string","nullable":true},"token_usage":{"oneOf":[{"$ref":"#/components/schemas/AgentTokenUsage"},{"type":"null"}],"description":"Itemized counters behind `total_tokens`, resolved across uploaded checkpoints with the same scope rule. Null when no checkpoint reported usage."},"model_usage":{"type":"array","description":"Per-model split of `token_usage`, sorted by model. Empty when the checkpoints predate per-model accounting.","items":{"$ref":"#/components/schemas/AgentModelTokenUsage"}},"estimated_cost":{"oneOf":[{"$ref":"#/components/schemas/AgentCostEstimate"},{"type":"null"}]},"message_count":{"type":"integer","nullable":true,"description":"Conversation prompt and response count derived from the session's latest uploaded checkpoint transcript. Falls back to the captured harness count when the transcript has not been indexed, or null."},"agent_count":{"type":"integer","nullable":true,"description":"Total agents the session ran (the primary agent plus its observed child agents), or null for a solo session with no observed subagents."},"model":{"type":"string","nullable":true,"description":"Model id from the latest uploaded checkpoint, for cost estimation."},"commit_count":{"type":"integer","description":"Server-derived Git commits linked to this session. The commits themselves ride the expanded session, not the row."},"pull_request_count":{"type":"integer","description":"Distinct GitHub pull requests those commits belong to. Zero while a trailer link is waiting for its pull request."},"pull_requests":{"type":"array","description":"The first few of those pull requests, in first-seen order, so a row can link them — at most three, whatever `pull_request_count` says. A reader renders the remainder as a `+N` from the count.","items":{"$ref":"#/components/schemas/OrganizationSessionPullRequest"}}}},"OrganizationSessionCommit":{"type":"object","required":["sha","evidence","pull_request_number"],"properties":{"sha":{"type":"string","description":"The 40-character git commit SHA."},"evidence":{"type":"string","enum":["trailer","merge","checkpoint"],"description":"How the server found this commit for the session: `trailer` — the commit message carried the session's `Vex-Session` line; `merge` — GitHub reported it as the pull request's merge commit. `checkpoint` — a session's checkpoint was sealed at this commit and no trailer named it."},"pull_request_number":{"type":"integer","nullable":true,"description":"The pull request this commit was found in, or null for a trailer link discovered before any pull request named it."}}},"OrganizationSessionPullRequest":{"type":"object","required":["number","state","github_url","merge_commit_sha","merged_at","head_branch"],"properties":{"number":{"type":"integer"},"state":{"type":"string","enum":["open","closed","merged"]},"github_url":{"type":"string","nullable":true,"description":"The pull request on GitHub, built from the virtual repository's owner and name. Null when that addressing is missing."},"merge_commit_sha":{"type":"string","nullable":true,"description":"The commit that landed on merge, whatever strategy produced it."},"merged_at":{"type":"string","nullable":true},"head_branch":{"type":"string","nullable":true}}},"OrganizationSessionBase":{"type":"object","required":["id","adapter","harness","status","title","external_session_id","repository","user","started_at","ended_at","last_checkpoint_at","last_activity_at","created_at","updated_at"],"properties":{"id":{"type":"string"},"adapter":{"type":"string"},"harness":{"type":"string","description":"Harness id the session presents as (codex, claude-code, cursor, roder, grok): the captured envelope's harness when recorded, else the adapter's canonical harness."},"status":{"type":"string"},"title":{"type":"string","nullable":true},"external_session_id":{"type":"string"},"repository":{"oneOf":[{"$ref":"#/components/schemas/OrganizationSessionRepository"},{"type":"null"}]},"user":{"oneOf":[{"$ref":"#/components/schemas/OrganizationSessionUser"},{"type":"null"}]},"started_at":{"type":"string","nullable":true},"ended_at":{"type":"string","nullable":true},"last_checkpoint_at":{"type":"string","nullable":true},"last_activity_at":{"type":"string","nullable":true,"description":"When the session last did anything: the newest checkpoint capture, else the session end, else its start."},"created_at":{"type":"string","nullable":true},"updated_at":{"type":"string","nullable":true}}},"OrganizationSessionSummary":{"allOf":[{"$ref":"#/components/schemas/OrganizationSessionBase"},{"type":"object","required":["stats"],"properties":{"stats":{"$ref":"#/components/schemas/OrganizationSessionStats"}}}]},"OrganizationSessionCheckpoint":{"type":"object","required":["id","external_checkpoint_id","sequence_number","capture_kind","status","scrubber_version","redaction_count","model","reasoning_effort","total_tokens","token_usage_scope","captured_at","uploaded_at","tombstoned_at","linked_commits","linked_commits_available"],"properties":{"id":{"type":"string"},"external_checkpoint_id":{"type":"string"},"sequence_number":{"type":"integer"},"capture_kind":{"type":"string"},"status":{"type":"string"},"scrubber_version":{"type":"string"},"redaction_count":{"type":"integer"},"model":{"type":"string","nullable":true,"description":"Model id from this checkpoint's sanitized envelope, or null."},"reasoning_effort":{"type":"string","nullable":true,"description":"Reasoning effort from this checkpoint's sanitized envelope (none, minimal, low, medium, high, xhigh, max, ultra), or null."},"total_tokens":{"type":"integer","nullable":true,"description":"This checkpoint's own reported token total, or null."},"token_usage_scope":{"type":"string","nullable":true,"description":"What the reported total covers (turn, session, or cumulative), or null when no usage was reported."},"captured_at":{"type":"string","nullable":true},"uploaded_at":{"type":"string","nullable":true},"tombstoned_at":{"type":"string","nullable":true},"linked_commits":{"type":"array","description":"Native commit ids this checkpoint is attached to (reverse checkpoint→commit lookup). Empty when unavailable or unattached.","items":{"type":"string"}},"linked_commits_available":{"type":"boolean","description":"True when the reverse checkpoint→commit lookup succeeded for this session; false (with empty `linked_commits`) when it was unavailable."}}},"OrganizationSessionDetail":{"allOf":[{"$ref":"#/components/schemas/OrganizationSessionBase"},{"type":"object","required":["original_resume","linked_commits_available","total_tokens","token_usage_scope","token_usage","model_usage","estimated_cost","models","redaction_count","linked_commits","commits","pull_requests","resume_checkpoint_id","checkpoints"],"properties":{"original_resume":{"oneOf":[{"type":"object","additionalProperties":false,"required":["kind","value"],"properties":{"kind":{"type":"string","enum":["codex_deep_link","claude_command","cursor_command","grok_command"]},"value":{"type":"string"}}},{"type":"null"}],"description":"An author-only local resume target for the original provider session. Null for other viewers and unsupported providers."},"linked_commits_available":{"type":"boolean","description":"True when the reverse checkpoint→commit lookup succeeded for the expanded session; false when it was unavailable."},"total_tokens":{"type":"integer","nullable":true,"description":"Session token headline: the latest checkpoint's own reported total (never a sum — turn and cumulative scopes are not additive), or null when no checkpoint reported usage."},"token_usage_scope":{"type":"string","nullable":true,"description":"The scope of the headline total (turn, session, or cumulative)."},"token_usage":{"oneOf":[{"$ref":"#/components/schemas/AgentTokenUsage"},{"type":"null"}],"description":"Itemized counters for the cost estimate, resolved across uploaded checkpoints with the session aggregation rule. Null when no uploaded checkpoint reported usage."},"model_usage":{"type":"array","description":"Per-model split of `token_usage`, sorted by model.","items":{"$ref":"#/components/schemas/AgentModelTokenUsage"}},"estimated_cost":{"oneOf":[{"$ref":"#/components/schemas/AgentCostEstimate"},{"type":"null"}]},"models":{"type":"array","description":"Distinct model ids seen across the session's checkpoints, first-seen order.","items":{"type":"string"}},"redaction_count":{"type":"integer","description":"Total redactions across the session's checkpoints."},"linked_commits":{"type":"array","description":"Distinct Git commit IDs the session's checkpoints are attached to, in first-seen order. Empty when the reverse lookup was unavailable.","items":{"type":"string"}},"commits":{"type":"array","description":"Server-derived git commits for this session, oldest first, each labelled by how it was found.","items":{"$ref":"#/components/schemas/OrganizationSessionCommit"}},"pull_requests":{"type":"array","description":"Distinct GitHub pull requests those commits belong to, in first-seen order.","items":{"$ref":"#/components/schemas/OrganizationSessionPullRequest"}},"resume_checkpoint_id":{"type":"string","nullable":true,"description":"Public id of the checkpoint a local resume/continue command should target — the latest UPLOADED checkpoint (only uploaded checkpoints have a verified archive). Null when none uploaded."},"checkpoints":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationSessionCheckpoint"}}}}]},"SignalIntegrationProvider":{"type":"string","enum":["sentry","planetscale"]},"SignalIntegrationMode":{"type":"string","description":"`connected` is a customer-owned credential pasted into Vex; `managed` is a Vex-provisioned resource where Vex already holds the credential.","enum":["connected","managed"]},"SignalIntegrationStatus":{"type":"string","enum":["pending","active","failed","disabled"]},"SignalIntegrationExternalKind":{"type":"string","enum":["sentry_project","planetscale_database"]},"SignalIntegrationDeliveryState":{"type":"string","enum":["pending","processing","processed","failed","ignored"]},"SignalIntegration":{"type":"object","description":"One organization's connection to a signal source. Secret values are never rendered; `webhook_secret_stored` / `api_token_stored` say only whether one exists.","required":["id","organization_id","provider","mode","name","status","inbound_url","inbound_path","webhook_secret_stored","api_token_stored","config","unmapped_delivery_count","rejected_signature_count","failure_message","target_count"],"properties":{"id":{"type":"string","description":"Public id (`sint_…`)."},"organization_id":{"type":"string"},"provider":{"$ref":"#/components/schemas/SignalIntegrationProvider"},"mode":{"$ref":"#/components/schemas/SignalIntegrationMode"},"name":{"type":"string"},"status":{"$ref":"#/components/schemas/SignalIntegrationStatus"},"inbound_url":{"type":"string","description":"The absolute URL to paste into the provider's webhook configuration."},"inbound_path":{"type":"string"},"webhook_secret_stored":{"type":"boolean"},"api_token_stored":{"type":"boolean"},"config":{"type":"object","additionalProperties":true},"unmapped_delivery_count":{"type":"integer","description":"Deliveries accepted whose provider resource matched no enabled target."},"rejected_signature_count":{"type":"integer","description":"Deliveries rejected for a bad or missing signature."},"failure_message":{"type":"string","nullable":true},"target_count":{"type":"integer"},"last_received_at":{"type":"string","nullable":true},"last_verified_at":{"type":"string","nullable":true},"created_at":{"type":"string","nullable":true},"updated_at":{"type":"string","nullable":true}},"additionalProperties":false},"SignalIntegrationTarget":{"type":"object","description":"One provider resource mapped to a hosted app. A delivery naming an unmapped resource still becomes a signal, with null attribution.","required":["id","organization_id","signal_integration_id","external_kind","external_id","enabled"],"properties":{"id":{"type":"string","description":"Public id (`stgt_…`)."},"organization_id":{"type":"string"},"signal_integration_id":{"type":"string"},"external_kind":{"$ref":"#/components/schemas/SignalIntegrationExternalKind"},"external_id":{"type":"string"},"external_slug":{"type":"string","nullable":true},"display_name":{"type":"string","nullable":true},"hosted_app_id":{"type":"string","nullable":true},"app_service_id":{"type":"string","nullable":true},"enabled":{"type":"boolean"},"created_at":{"type":"string","nullable":true},"updated_at":{"type":"string","nullable":true}},"additionalProperties":false},"SignalIntegrationDelivery":{"type":"object","description":"One inbound receipt. Provider content is deliberately absent — the debugging question this answers is arrival, processing and failure.","required":["id","organization_id","signal_integration_id","provider","delivery_id","state","attempt_count"],"properties":{"id":{"type":"string","description":"Public id (`sdel_…`)."},"organization_id":{"type":"string"},"signal_integration_id":{"type":"string"},"provider":{"$ref":"#/components/schemas/SignalIntegrationProvider"},"delivery_id":{"type":"string","description":"The provider's delivery id, or a `content-…` id derived from the event kind, its timestamp header and the body checksum when it sends none."},"event_kind":{"type":"string","nullable":true},"state":{"$ref":"#/components/schemas/SignalIntegrationDeliveryState"},"attempt_count":{"type":"integer"},"last_error":{"type":"string","nullable":true},"ops_signal_id":{"type":"string","nullable":true,"description":"Public id (`sig_…`) of the signal this delivery emitted."},"received_at":{"type":"string","nullable":true},"processed_at":{"type":"string","nullable":true},"created_at":{"type":"string","nullable":true}},"additionalProperties":false},"SignalIntegrationCreatePayload":{"type":"object","required":["provider","name"],"properties":{"provider":{"$ref":"#/components/schemas/SignalIntegrationProvider"},"mode":{"$ref":"#/components/schemas/SignalIntegrationMode"},"name":{"type":"string"},"webhook_secret":{"type":"string","description":"The provider's signing secret. Stored as an organization secret; never read back."},"api_token":{"type":"string","description":"Optional provider API token for target discovery and backfill."},"config":{"type":"object","additionalProperties":true}},"additionalProperties":false},"SignalIntegrationUpdatePayload":{"type":"object","properties":{"name":{"type":"string"},"mode":{"$ref":"#/components/schemas/SignalIntegrationMode"},"status":{"$ref":"#/components/schemas/SignalIntegrationStatus"},"webhook_secret":{"type":"string"},"api_token":{"type":"string"},"config":{"type":"object","additionalProperties":true}},"additionalProperties":false},"SignalIntegrationTargetsPayload":{"type":"object","required":["targets"],"properties":{"targets":{"type":"array","items":{"type":"object","required":["external_id"],"properties":{"external_kind":{"$ref":"#/components/schemas/SignalIntegrationExternalKind"},"external_id":{"type":"string"},"external_slug":{"type":"string"},"display_name":{"type":"string"},"hosted_app_id":{"type":"string","description":"Hosted app public id (`app_…`), raw id, or slug."},"app_service_id":{"type":"string"},"enabled":{"type":"boolean"}},"additionalProperties":false}}},"additionalProperties":false},"SignalIntegrationInboundAccepted":{"type":"object","required":["delivery_id","state"],"properties":{"delivery_id":{"type":"string"},"state":{"$ref":"#/components/schemas/SignalIntegrationDeliveryState"}},"additionalProperties":false},"SignalIntegrationError":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"OpsSignalSeverity":{"type":"string","description":"Severity levels (docs §2, reusing `AlertRule::SEVERITIES`).","enum":["info","warning","error","critical"]},"OpsSignalLinks":{"type":"object","description":"Canonical, relative API paths built from real routes (docs §6a). Sits alongside — never inside — the frozen `payload`. A key is present only when it resolves from the columns the signal carries; `self` always is. These are REST resource paths, not UI routes.","required":["self"],"properties":{"self":{"type":"string"},"app":{"type":"string"},"service":{"type":"string"},"subject":{"type":"string"},"external":{"type":"string","description":"The provider deep link for an integration-sourced signal — the one absolute URL in this envelope, present only when the payload carries an http(s) `external_url` (docs §6e)."}}},"OpsSignalResolution":{"type":"object","description":"Recovery pairing (docs §6b). Present only on signals with a pairing shape — `runtime.health` degraded/failed and `alert.fired`. An applicable-but-unrecovered signal renders just `{ \"resolved\": false }`; every other kind omits the key entirely.","required":["resolved"],"properties":{"resolved":{"type":"boolean"},"resolved_by_signal":{"type":"string","nullable":true,"description":"Public id (`sig_…`) of the signal that cleared the condition."},"resolved_at":{"type":"string","nullable":true}}},"OpsSignalAttributionRef":{"type":"object","description":"One attribution target (hosted app or app service) — public id + display name.","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}},"additionalProperties":false},"OpsSignalAttribution":{"type":"object","description":"The producer-stamped attribution (docs §3) lifted out of `payload` into a typed sibling (docs §6d), so consumers get the ids and names they need — e.g. vex-web building its own UI routes — without reading the per-kind JSON. Always present; each key is null when the producer did not know it.","required":["app","service","region"],"properties":{"app":{"oneOf":[{"$ref":"#/components/schemas/OpsSignalAttributionRef"},{"type":"null"}]},"service":{"oneOf":[{"$ref":"#/components/schemas/OpsSignalAttributionRef"},{"type":"null"}]},"region":{"type":"string","nullable":true}},"additionalProperties":false},"OpsSignalRecovery":{"type":"object","description":"Recovered/resolved state folded from the `resolution` pairing (docs §6b/§6d). Present only when the pairing is satisfied — `recovered` for a runtime.health signal whose instance came back to running, `resolved` for an alert.fired whose event cleared. Absent otherwise.","required":["state","resolved_at"],"properties":{"state":{"type":"string","enum":["recovered","resolved"]},"resolved_at":{"type":"string","nullable":true}},"additionalProperties":false},"OpsSignalSourceProvider":{"type":"string","description":"Who produced the signal (docs §6e). `vex` is every signal the platform emits itself. Slack is the native Composal app; the others are signal-integration adapters.","enum":["vex","sentry","planetscale","slack"]},"OpsSignalSource":{"type":"object","description":"Provenance envelope (docs §6e), a sibling of the frozen `payload`. ALWAYS present, so a reader never branches on key presence: a Vex-produced signal renders `provider: \"vex\"` with null siblings.","required":["provider","integration_id","external_id","external_url"],"properties":{"provider":{"$ref":"#/components/schemas/OpsSignalSourceProvider"},"integration_id":{"type":"string","nullable":true,"description":"The `sint_…` public id of the signal integration that ingested this signal. Null for native Vex and Slack sources; Slack uses its same-organization SlackInstallation subject."},"external_id":{"type":"string","nullable":true,"description":"The provider's own id for the thing the signal is about (a Sentry issue id)."},"external_url":{"type":"string","nullable":true,"description":"Deep link to read the full event at the provider — Vex stores only a bounded reduction of it. Mirrored as `links.external`."}},"additionalProperties":false},"SignalSubscriptionFilters":{"type":"object","description":"The frozen filter slice a `SignalSubscription` stores. `sources` is the roadmap-138 addition, normalized and validated exactly like `kinds`.","required":["kinds","min_severity","hosted_app_ids","sources"],"properties":{"kinds":{"type":"array","items":{"type":"string"}},"min_severity":{"oneOf":[{"$ref":"#/components/schemas/OpsSignalSeverity"},{"type":"null"}]},"hosted_app_ids":{"type":"array","items":{"type":"string"},"description":"Rendered as `app_…` public ids; accepted as public ids, raw ids, or slugs."},"sources":{"type":"array","items":{"$ref":"#/components/schemas/OpsSignalSourceProvider"},"description":"Empty means every source."}},"additionalProperties":false},"OpsSignalSolutionChange":{"type":"object","description":"The Change a linked agent run submitted as the fix (`link_signal_to_change`).","required":["id","number","reference"],"properties":{"id":{"type":"string"},"number":{"type":"integer"},"reference":{"type":"string","description":"Pre-formatted human id (`#42`)."}},"additionalProperties":false},"OpsSignalAgentRuns":{"type":"object","description":"Dispatched-run summary (docs §6c). Present only once a signal has at least one `SignalAgentRun`, of either origin.","required":["count","latest_status"],"properties":{"count":{"type":"integer"},"latest_status":{"$ref":"#/components/schemas/OpsSignalAgentRunStatus"},"solution_change":{"oneOf":[{"$ref":"#/components/schemas/OpsSignalSolutionChange"},{"type":"null"}]}}},"OpsSignal":{"type":"object","description":"One ops signal, as serialized by `OpsSignalResource` (frozen envelope, docs §3). Every id is a prefixed public id, never a raw bigint.","required":["id","organization_id","kind","severity","subject_type","subject_id","hosted_app_id","app_service_id","dedupe_key","payload","summary","attribution","source","occurred_at","acked_at","created_at","links"],"properties":{"id":{"type":"string","description":"The signal's own `sig_…` public id — also the paging cursor value."},"organization_id":{"type":"string"},"kind":{"type":"string","description":"A frozen taxonomy kind (§1) or an `app.custom.*` kind."},"severity":{"$ref":"#/components/schemas/OpsSignalSeverity"},"subject_type":{"type":"string","nullable":true,"description":"Polymorphic pointer: `AppDeployment`, `RuntimeInstance`, `AlertEvent`, `HostedApp`, or `SignalSubscription`."},"subject_id":{"type":"string","nullable":true},"hosted_app_id":{"type":"string","nullable":true},"app_service_id":{"type":"string","nullable":true},"dedupe_key":{"type":"string","nullable":true},"payload":{"type":"object","additionalProperties":true,"description":"Per-kind shape (docs §4), with the producer's `region`/`app`/ `service` attribution keys baked in when known. Frozen contract — deliberately not narrowed per kind here."},"summary":{"type":"string","description":"One-line, kind-composed human sentence for the feed row (docs §6d, e.g. `deploying → failed`, `47× fp_9c1e77a4b2d0f331`) — server-authored so consumers never re-derive it from `payload`."},"attribution":{"$ref":"#/components/schemas/OpsSignalAttribution"},"source":{"$ref":"#/components/schemas/OpsSignalSource"},"recovery":{"$ref":"#/components/schemas/OpsSignalRecovery"},"occurred_at":{"type":"string","description":"ISO8601 domain event time — what the UI displays and `since` filters on."},"acked_at":{"type":"string","nullable":true},"acked_by":{"description":"Who acked the signal, read from `acked_by_user_id`. Always present so it reads as a pair with `acked_at`: null while unacked, and null for an ack recorded without a user (a bulk ack from a token-authed caller).","type":"object","nullable":true,"required":["id","name","email","picture_url"],"properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"created_at":{"type":"string","description":"ISO8601 row insert time — retention math and debugging only."},"links":{"$ref":"#/components/schemas/OpsSignalLinks"},"resolution":{"$ref":"#/components/schemas/OpsSignalResolution"},"agent_runs":{"$ref":"#/components/schemas/OpsSignalAgentRuns"}}},"OpsSignalPage":{"type":"object","required":["signals","next_cursor","has_more"],"properties":{"signals":{"type":"array","items":{"$ref":"#/components/schemas/OpsSignal"}},"next_cursor":{"type":"string","nullable":true,"description":"The last returned signal's public id when more pages exist, else null. Feed it back as the same boundary param the request used."},"has_more":{"type":"boolean"}}},"OpsSignalEnvelope":{"type":"object","required":["signal"],"properties":{"signal":{"$ref":"#/components/schemas/OpsSignal"}}},"OpsSignalBulkAckRequest":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string"},"description":"Explicit `sig_…` ids. When present every other key is ignored."},"before_id":{"type":"string","description":"Inclusive upper bound (`sig_…`) — ack matching signals at or before it."},"kind":{"type":"string","description":"Single kind or comma-separated list."},"severity":{"type":"string","description":"Single severity or comma-separated list."},"min_severity":{"$ref":"#/components/schemas/OpsSignalSeverity"},"hosted_app_id":{"type":"string"},"source":{"type":"string","description":"Single source provider or comma-separated list (docs §6e). Alone it satisfies the \"explicitly scoped\" guard."},"integration_id":{"type":"string","description":"One signal integration — raw id, or `sint_…` once that model ships."},"since":{"type":"string"},"all":{"type":"boolean","description":"Opt in to an otherwise-unconstrained ack of every unacked signal."},"recovered_only":{"type":"boolean","description":"Narrow to signals whose `resolution.resolved` is true. Composes with every other filter and alone satisfies the \"explicitly scoped\" guard."}},"additionalProperties":false},"OpsSignalBulkAckResult":{"type":"object","required":["acked_count"],"properties":{"acked_count":{"type":"integer"}},"additionalProperties":false},"OpsSignalAgentPrompt":{"type":"object","required":["prompt"],"properties":{"prompt":{"type":"string"}},"additionalProperties":false},"OpsSignalAgentRunStatus":{"type":"string","enum":["dispatched","running","succeeded","failed","canceled"]},"StaticSite":{"type":"object","required":["id","organization_id","hosted_app_id","repository_id","slug","name","description","status","region","replication_regions","index_document","error_document","default_url","cdn_url","cdn_hostname","cname_target","provisioned","failure_message","active_deployment_id","provisioned_at","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"hosted_app_id":{"type":"string","nullable":true},"repository_id":{"type":"string","nullable":true},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"status":{"type":"string","enum":["draft","provisioning","active","degraded","archived","failed"]},"region":{"type":"string","nullable":true},"replication_regions":{"type":"array","items":{"type":"string"}},"index_document":{"type":"string"},"error_document":{"type":"string","nullable":true},"default_url":{"type":"string","format":"uri"},"cdn_url":{"type":"string","format":"uri"},"cdn_hostname":{"type":"string"},"cname_target":{"type":"string"},"provisioned":{"type":"boolean"},"failure_message":{"type":"string","nullable":true},"active_deployment_id":{"type":"string","nullable":true},"provisioned_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"StaticSiteCreatePayload":{"type":"object","required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"region":{"type":"string"},"replication_regions":{"type":"array","items":{"type":"string"}},"index_document":{"type":"string"},"error_document":{"type":"string"},"hosted_app_id":{"type":"string"},"repository_id":{"type":"string"}}},"StaticSiteDeployment":{"type":"object","required":["id","static_site_id","creator_user_id","deploy_slug","status","trigger_kind","commit_sha","source_ref","file_count","total_bytes","file_count_label","total_bytes_label","failure_message","is_active","uploaded_at","activated_at","started_at","finished_at","created_at","updated_at","uploaded_at_label","activated_at_label","started_at_label","finished_at_label","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"static_site_id":{"type":"string"},"creator_user_id":{"type":"string","nullable":true},"deploy_slug":{"type":"string"},"status":{"type":"string","enum":["pending","uploading","uploaded","activating","active","failed","canceled","superseded"]},"trigger_kind":{"type":"string","enum":["cli","api","dashboard","ci"]},"commit_sha":{"type":"string","nullable":true},"source_ref":{"type":"string","nullable":true},"file_count":{"type":"integer","minimum":0},"total_bytes":{"type":"integer","minimum":0},"file_count_label":{"type":"string"},"total_bytes_label":{"type":"string"},"failure_message":{"type":"string","nullable":true},"is_active":{"type":"boolean"},"uploaded_at":{"type":"string","format":"date-time","nullable":true},"activated_at":{"type":"string","format":"date-time","nullable":true},"started_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"uploaded_at_label":{"type":"string","nullable":true},"activated_at_label":{"type":"string","nullable":true},"started_at_label":{"type":"string","nullable":true},"finished_at_label":{"type":"string","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"StaticSiteDomain":{"type":"object","required":["id","hosted_app_id","app_service_id","app_environment_id","static_site_id","hostname","kind","target_kind","dns_mode","record_type","record_name","record_value","tls_status","dns_status","verification_status","last_checked_at","failure_message","redirect_to","created_at","updated_at"],"properties":{"id":{"type":"string"},"hosted_app_id":{"type":"string","nullable":true},"app_service_id":{"type":"string","nullable":true},"app_environment_id":{"type":"string","nullable":true},"static_site_id":{"type":"string","nullable":true},"hostname":{"type":"string"},"kind":{"type":"string","enum":["primary","redirect","preview","internal"]},"target_kind":{"type":"string","enum":["app_service","static_site"]},"dns_mode":{"type":"string","enum":["manual_cname","cloudflare"]},"record_type":{"type":"string","nullable":true},"record_name":{"type":"string","nullable":true},"record_value":{"type":"string","nullable":true},"tls_status":{"type":"string","enum":["pending","active","failed"]},"dns_status":{"type":"string","enum":["pending","configured","failed"]},"verification_status":{"type":"string","enum":["pending","configured","failed"]},"last_checked_at":{"type":"string","format":"date-time","nullable":true},"failure_message":{"type":"string","nullable":true},"redirect_to":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"StaticSiteDomainCreatePayload":{"type":"object","required":["hostname"],"properties":{"hostname":{"type":"string"},"kind":{"type":"string","enum":["primary","redirect","preview","internal"]},"dns_mode":{"type":"string","enum":["manual_cname","cloudflare"]},"redirect_to":{"type":"string"}}},"DomainDnsIntegration":{"type":"object","required":["id","organization_id","provider","account_label","status","has_token","last_verified_at","failure_message","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"provider":{"type":"string","enum":["cloudflare"]},"account_label":{"type":"string","nullable":true},"status":{"type":"string","enum":["active","failed","disabled"]},"has_token":{"type":"boolean"},"last_verified_at":{"type":"string","format":"date-time","nullable":true},"failure_message":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"StaticSiteError":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}},"status":{"type":"string"},"failure_message":{"type":"string","nullable":true}}},"ToolFeedbackMetadata":{"type":"object","additionalProperties":false,"description":"Caller-supplied session context; no secrets or transcripts","properties":{"session_id":{"type":"string","maxLength":1000},"harness":{"type":"string","maxLength":1000},"model":{"type":"string","maxLength":1000},"client_version":{"type":"string","maxLength":1000},"platform":{"type":"string","maxLength":1000},"tool_name":{"type":"string","maxLength":1000},"command":{"type":"string","maxLength":1000},"run_id":{"type":"string","maxLength":1000}}},"ToolFeedbackInput":{"type":"object","required":["source","summary","details"],"properties":{"category":{"type":"string","enum":["bug","feedback"],"default":"feedback"},"source":{"type":"string","enum":["cli","mcp","harness","android"]},"summary":{"type":"string","minLength":1,"maxLength":255},"details":{"type":"string","minLength":1,"maxLength":12000},"metadata":{"$ref":"#/components/schemas/ToolFeedbackMetadata"}}},"ToolFeedback":{"type":"object","required":["id","organization_id","user_id","category","source","summary","details","metadata","created_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"user_id":{"type":"string"},"category":{"type":"string","enum":["bug","feedback"]},"source":{"type":"string","enum":["cli","mcp","harness","android"]},"summary":{"type":"string"},"details":{"type":"string"},"metadata":{"$ref":"#/components/schemas/ToolFeedbackMetadata"},"created_at":{"type":"string","format":"date-time"}}},"TranscriptPagination":{"type":"object","required":["next_cursor","has_more","limit"],"properties":{"next_cursor":{"type":"string","nullable":true},"has_more":{"type":"boolean"},"limit":{"type":"integer"}}},"TranscriptCheckpoint":{"type":"object","required":["id","captured_at","status","source_ref","matches"],"properties":{"id":{"type":"string"},"captured_at":{"type":"string","nullable":true},"status":{"type":"string","enum":["available","preparing","pending","unavailable","expired"]},"source_ref":{"type":"string","description":"Opaque saved-content reference. It grants no access."},"matches":{"type":"object","required":["entries","truncated"],"properties":{"truncated":{"type":"boolean"},"entries":{"type":"array","items":{"type":"object","required":["kind","commit"],"properties":{"kind":{"type":"string"},"commit":{"type":"string"},"patchset":{"type":"integer","nullable":true},"current_patchset":{"type":"boolean","nullable":true}}}}}}}},"TranscriptDiscoverySession":{"type":"object","required":["id","title","agent","author","started_at","last_checkpoint_at","source_url","status","selected_checkpoint","checkpoints","checkpoint_pagination"],"properties":{"id":{"type":"string"},"title":{"type":"string","nullable":true},"agent":{"type":"string"},"author":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true}}},"started_at":{"type":"string"},"last_checkpoint_at":{"type":"string","nullable":true},"source_url":{"type":"string"},"status":{"type":"string","enum":["available","preparing","pending","unavailable","expired","no_matching_checkpoint"]},"selected_checkpoint":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/TranscriptCheckpoint"}]},"checkpoints":{"type":"array","items":{"$ref":"#/components/schemas/TranscriptCheckpoint"}},"checkpoint_pagination":{"$ref":"#/components/schemas/TranscriptPagination"}}},"TranscriptDiscoveryPage":{"type":"object","required":["target","sessions","pagination","as_of","linkage"],"properties":{"target":{"type":"object","required":["kind","reference","repo","observed_head"],"properties":{"kind":{"type":"string","enum":["github_pr","change","commit"]},"reference":{"type":"string"},"repo":{"type":"string"},"observed_head":{"type":"string","nullable":true},"change_id":{"type":"string"},"number":{"type":"integer"},"github_url":{"type":"string"},"commit":{"type":"string"}}},"sessions":{"type":"array","items":{"$ref":"#/components/schemas/TranscriptDiscoverySession"}},"pagination":{"$ref":"#/components/schemas/TranscriptPagination"},"as_of":{"type":"string"},"linkage":{"type":"string","enum":["observed"]}}},"TranscriptReadPage":{"type":"object","required":["status","session_id","checkpoint_id","source_ref","scope","events","older_cursor","has_more","limits","contains_truncated_events","truncation_notice","newer_cursor"],"properties":{"status":{"type":"string","enum":["available","preparing","pending","unavailable","expired","no_checkpoint"]},"session_id":{"type":"string"},"checkpoint_id":{"type":"string","nullable":true},"source_ref":{"type":"string","nullable":true},"scope":{"type":"string","enum":["checkpoint","whole_session"]},"events":{"type":"array","items":{"$ref":"#/components/schemas/TranscriptReadEvent"}},"older_cursor":{"type":"string","nullable":true},"has_more":{"type":"boolean"},"limits":{"type":"object","required":["events","bytes","include_tools"],"properties":{"events":{"type":"integer"},"bytes":{"type":"integer"},"include_tools":{"type":"boolean"}}},"contains_truncated_events":{"type":"boolean"},"truncation_notice":{"type":"string","nullable":true},"newer_cursor":{"type":"string","nullable":true}}},"TranscriptReadEvent":{"type":"object","required":["index","kind","role","text","truncated","timestamp","citation"],"properties":{"index":{"type":"integer"},"kind":{"type":"string","enum":["message","tool_use","tool_result"]},"role":{"type":"string","nullable":true},"text":{"type":"string"},"truncated":{"type":"boolean"},"timestamp":{"type":"string","nullable":true},"citation":{"type":"object","required":["checkpoint_id","event_index","digest"],"properties":{"checkpoint_id":{"type":"string"},"event_index":{"type":"integer"},"digest":{"type":"string"}}}}},"TranscriptSearchRequest":{"type":"object","additionalProperties":false,"required":["query"],"properties":{"query":{"type":"string","minLength":1,"maxLength":4000},"mode":{"type":"string","enum":["hybrid","keyword","semantic"],"default":"hybrid"},"repo":{"type":"string"},"user":{"type":"string"},"adapter":{"type":"string"},"status":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"},"cursor":{"type":"string"},"limit":{"type":"integer","minimum":1,"maximum":50,"default":20},"max_bytes":{"type":"integer","minimum":8192,"maximum":131072,"default":32768}}},"TranscriptSearchResult":{"type":"object","required":["query","mode_requested","mode_used","status","coverage","results","pagination","limits"],"properties":{"query":{"type":"string"},"mode_requested":{"type":"string"},"mode_used":{"type":"string"},"status":{"type":"string","enum":["ready","empty","not_ready","degraded"]},"coverage":{"type":"object","required":["sessions","ready","pending","failed","indexed_at"],"properties":{"sessions":{"type":"integer"},"ready":{"type":"integer"},"pending":{"type":"integer"},"failed":{"type":"integer"},"indexed_at":{"type":"string","nullable":true}}},"results":{"type":"array","items":{"$ref":"#/components/schemas/TranscriptSearchHit"}},"pagination":{"type":"object","required":["next_cursor","window_exhausted","budget_limited"],"properties":{"next_cursor":{"type":"string","nullable":true},"window_exhausted":{"type":"boolean"},"budget_limited":{"type":"boolean"}}},"limits":{"type":"object","required":["limit","max_bytes","candidate_window"],"properties":{"limit":{"type":"integer"},"max_bytes":{"type":"integer"},"candidate_window":{"type":"integer"}}},"degradation":{"type":"string"}}},"TranscriptSearchHit":{"type":"object","required":["session_id","title","repository","user","harness","model","started_at","url","matches"],"properties":{"session_id":{"type":"string"},"title":{"type":"string","nullable":true},"repository":{"type":"object","required":["id","slug"],"properties":{"id":{"type":"string"},"slug":{"type":"string"}}},"user":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true}}},"harness":{"type":"string"},"model":{"type":"string","nullable":true},"started_at":{"type":"string"},"url":{"type":"string"},"matches":{"type":"array","items":{"$ref":"#/components/schemas/TranscriptSearchMatch"}}}},"TranscriptSearchMatch":{"type":"object","required":["role","excerpt","source_ref","checkpoint_id","event_index","event_digest","byte_start","byte_end","truncated"],"properties":{"role":{"type":"string","enum":["user","assistant"]},"excerpt":{"type":"string"},"source_ref":{"type":"string"},"checkpoint_id":{"type":"string"},"event_index":{"type":"integer"},"event_digest":{"type":"string"},"byte_start":{"type":"integer"},"byte_end":{"type":"integer"},"truncated":{"type":"boolean"}}},"TranscriptSearchError":{"type":"object","required":["status","code","error","results"],"properties":{"status":{"type":"string","enum":["error"]},"code":{"type":"string"},"error":{"type":"string"},"results":{"type":"array","items":{"$ref":"#/components/schemas/TranscriptSearchHit"}}}},"VcsBranch":{"type":"object","required":["name","target_commit_id"],"properties":{"name":{"type":"string"},"target_commit_id":{"type":"string"}}},"VcsBranchesResponse":{"type":"object","required":["branches","branches_count_label","default_branch","protected_bookmarks","setup_required"],"properties":{"branches":{"type":"array","items":{"$ref":"#/components/schemas/VcsBranch"}},"branches_count_label":{"type":"string"},"default_branch":{"type":"string","nullable":true},"protected_bookmarks":{"type":"array","items":{"type":"string"}},"setup_required":{"type":"boolean","description":"True when the repository has no jj-backend counterpart yet, so the client should offer first-time setup instead of browsing."}}},"VcsCommitGithubLink":{"type":"object","required":["repository","root_path","commit_sha","commit_url"],"properties":{"repository":{"type":"string"},"root_path":{"type":"string"},"commit_sha":{"type":"string"},"commit_url":{"type":"string","format":"uri"}}},"VcsCommitAuthorIdentity":{"type":"object","required":["source"],"properties":{"source":{"type":"string","enum":["vex","github","gravatar"]},"github_login":{"type":"string","nullable":true},"github_url":{"type":"string","format":"uri","nullable":true},"name":{"type":"string","nullable":true},"bio":{"type":"string","nullable":true},"company":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"public_repos":{"type":"integer","nullable":true},"followers":{"type":"integer","nullable":true}}},"VcsCommitAgentContext":{"type":"object","required":["checkpoint_count","status","transcript_count","transcripts","transcripts_label","checkpoints_label","tokens_label","status_label"],"properties":{"harness":{"type":"string","nullable":true},"model":{"type":"string","nullable":true},"total_tokens":{"type":"integer","nullable":true},"token_usage_scope":{"type":"string","nullable":true,"enum":["turn","session","cumulative"]},"checkpoint_count":{"type":"integer","minimum":1},"session_id":{"type":"string","nullable":true},"session_title":{"type":"string","nullable":true},"status":{"type":"string","enum":["available","unavailable"]},"transcript_count":{"type":"integer","minimum":0},"transcripts":{"type":"array","items":{"$ref":"#/components/schemas/VcsCommitAgentTranscript"}},"transcripts_label":{"type":"string","nullable":true,"description":"e.g. \"3 transcripts\". Null when no transcript is linkable."},"checkpoints_label":{"type":"string","nullable":true,"description":"e.g. \"3 checkpoints\". Null below two, where the count adds nothing."},"tokens_label":{"type":"string","nullable":true,"description":"Exact total with the scope it was measured over, e.g. \"2,461,146 tokens (cumulative)\". Null when no total is known."},"status_label":{"type":"string","nullable":true,"description":"e.g. \"Still uploading\". Null when the context is ready to read."}}},"VcsCommitAgentTranscript":{"type":"object","required":["session_id","checkpoint_count","status","captures_label","status_label"],"properties":{"session_id":{"type":"string"},"session_title":{"type":"string","nullable":true},"checkpoint_id":{"type":"string","nullable":true},"checkpoint_count":{"type":"integer","minimum":1},"captured_at":{"type":"string","format":"date-time","nullable":true},"harness":{"type":"string","nullable":true},"model":{"type":"string","nullable":true},"total_tokens":{"type":"integer","nullable":true},"token_usage_scope":{"type":"string","nullable":true,"enum":["turn","session","cumulative"]},"status":{"type":"string","enum":["available","unavailable"]},"captures_label":{"type":"string","nullable":true,"description":"e.g. \"2 captures\" when this session saved the commit more than once. Null for a single capture."},"status_label":{"type":"string","nullable":true,"description":"e.g. \"Still uploading\". Null when this transcript is ready to read."}}},"VcsCommitDeployment":{"type":"object","required":["status","trigger_kind","deployment_id"],"properties":{"app_slug":{"type":"string","nullable":true},"service_slug":{"type":"string","nullable":true},"environment_slug":{"type":"string","nullable":true},"location_code":{"type":"string","nullable":true},"status":{"type":"string"},"trigger_kind":{"type":"string"},"deployment_id":{"type":"string"},"deployed_url":{"type":"string","format":"uri","nullable":true}}},"VcsCommitDeployments":{"type":"object","required":["items","total_count","has_more"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/VcsCommitDeployment"}},"total_count":{"type":"integer","minimum":0},"has_more":{"type":"boolean"}}},"VcsCommitChangeLink":{"description":"The reviewable Change this commit landed from. Absent on commits that never went through review.","type":"object","required":["number","reference"],"properties":{"number":{"type":"integer","minimum":1},"reference":{"type":"string","description":"The organization-scoped human id, rendered as `#262`."},"title":{"type":"string","nullable":true},"landed_by_name":{"type":"string","nullable":true,"description":"Display name of the user who landed the Change (or the Change author when landed_by is unset). Prefer this over the commit's author_name when the history line says \"landed\"."},"landed_by_email":{"type":"string","nullable":true}}},"VcsCommit":{"type":"object","required":["id"],"properties":{"id":{"type":"string"},"message":{"type":"string","nullable":true},"summary":{"type":"string","nullable":true},"parent_ids":{"type":"array","items":{"type":"string"}},"author_name":{"type":"string","nullable":true},"author_email":{"type":"string","nullable":true},"author_date":{"type":"string","format":"date-time","nullable":true},"author_date_label":{"type":"string","nullable":true},"committer_name":{"type":"string","nullable":true},"committer_date":{"type":"string","format":"date-time","nullable":true},"committer_date_label":{"type":"string","nullable":true},"landed_at":{"type":"string","format":"date-time","nullable":true},"committed_on_key":{"type":"string","format":"date","nullable":true},"committed_on_label":{"type":"string","nullable":true},"parent_count_label":{"type":"string","nullable":true},"author_avatar_url":{"type":"string","format":"uri","nullable":true},"author_identity":{"oneOf":[{"$ref":"#/components/schemas/VcsCommitAuthorIdentity"},{"type":"null"}]},"actor_name":{"type":"string","nullable":true,"description":"The person the history line names — the Change lander when the commit has landed, otherwise the commit author."},"actor_email":{"type":"string","nullable":true},"actor_avatar_url":{"type":"string","format":"uri","nullable":true},"actor_identity":{"oneOf":[{"$ref":"#/components/schemas/VcsCommitAuthorIdentity"},{"type":"null"}]},"actor_verb":{"type":"string","nullable":true,"enum":["landed","committed"],"description":"The verb that belongs next to the actor. `landed` when this commit was observed as the target bookmark's tip."},"github":{"oneOf":[{"$ref":"#/components/schemas/VcsCommitGithubLink"},{"type":"null"}]},"change":{"oneOf":[{"$ref":"#/components/schemas/VcsCommitChangeLink"},{"type":"null"}]},"agent_context":{"oneOf":[{"$ref":"#/components/schemas/VcsCommitAgentContext"},{"type":"null"}]},"ci_status":{"type":"string","nullable":true,"enum":["queued","running","succeeded","failed","canceled"]},"deployments":{"oneOf":[{"$ref":"#/components/schemas/VcsCommitDeployments"},{"type":"null"}]}}},"VcsCommitsResponse":{"type":"object","required":["ref_name","default_branch","branches","protected_bookmarks","commits","page_count_label","has_more","offset","limit","query","search_truncated","pagination"],"properties":{"ref_name":{"type":"string","description":"The ref this page walked — the requested `ref`, or the resolved trunk when the request named none."},"default_branch":{"type":"string","description":"The repository's authoritative trunk, resolved server-side."},"branches":{"type":"array","items":{"$ref":"#/components/schemas/VcsBranch"}},"protected_bookmarks":{"type":"array","items":{"type":"string"}},"commits":{"type":"array","items":{"$ref":"#/components/schemas/VcsCommit"}},"page_count_label":{"type":"string"},"has_more":{"type":"boolean"},"offset":{"type":"integer","minimum":0},"limit":{"type":"integer","minimum":1},"query":{"type":"string"},"search_truncated":{"type":"boolean","description":"True when `q` stopped at the search scan bound rather than at the root of the repository, so \"no matches\" means \"none this far back\"."},"pagination":{"type":"object","additionalProperties":true,"required":["page","limit","last"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1},"last":{"type":"integer","minimum":1},"previous":{"type":"integer","minimum":1,"nullable":true},"next":{"type":"integer","minimum":1,"nullable":true}}}}},"VcsCommitPageResponse":{"type":"object","required":["commit","diff_path"],"properties":{"commit":{"oneOf":[{"$ref":"#/components/schemas/VcsCommit"},{"type":"null"}]},"diff_path":{"type":"string","description":"Fingerprinted path serving this commit range's file diff. Rails builds it; fetch it as given rather than assembling one."}}},"VcsCommitRangeDiffResponse":{"type":"object","required":["parent_id","files"],"description":"Carries no commit metadata by design — an author's avatar would make these bytes mutable and cost the response its `immutable` window.","properties":{"parent_id":{"type":"string","nullable":true},"files":{"type":"array","items":{"$ref":"#/components/schemas/VcsDiffFile"}}}},"VcsDiffFile":{"type":"object","required":["path","status","additions","deletions"],"properties":{"path":{"type":"string"},"previous_path":{"type":"string","nullable":true},"status":{"type":"string","enum":["added","modified","deleted","renamed"]},"additions":{"type":"integer","minimum":0},"deletions":{"type":"integer","minimum":0},"binary":{"type":"boolean"},"truncated":{"type":"boolean"},"generated":{"type":"boolean","description":"True when this path is a lockfile or well-known generated dump a reviewer usually does not need expanded."},"patch":{"type":"string","nullable":true},"unresolved_comments_count":{"type":"integer","minimum":0},"unresolved_comments_count_label":{"type":"string"}}},"VcsBrowserRef":{"type":"object","required":["name","resolved_commit_id"],"properties":{"name":{"type":"string"},"resolved_commit_id":{"type":"string"},"default_branch":{"type":"string","nullable":true}}},"VcsSyncedSpace":{"type":"object","required":["root_path","provider","repository_full_name","url"],"properties":{"root_path":{"type":"string"},"provider":{"type":"string"},"repository_full_name":{"type":"string"},"url":{"type":"string","format":"uri"}}},"VcsBrowserTreeResponse":{"type":"object","required":["ref","tree","synced_spaces"],"properties":{"ref":{"$ref":"#/components/schemas/VcsBrowserRef"},"directory_ref":{"type":"string","description":"Immutable commit reference for expanding this tree. Fall back to ref.name when absent."},"tree":{"type":"object","required":["paths","truncated","path_count"],"properties":{"loaded_directories":{"type":"array","nullable":true,"description":"Directories whose children are present; null for a recursive index.","items":{"type":"string"}},"paths":{"type":"array","items":{"type":"string"}},"truncated":{"type":"boolean"},"path_count":{"type":"integer","minimum":0}}},"synced_spaces":{"type":"array","items":{"$ref":"#/components/schemas/VcsSyncedSpace"}}}},"VcsTrunkTipResponse":{"type":"object","required":["trunk_tip"],"properties":{"trunk_tip":{"oneOf":[{"$ref":"#/components/schemas/VcsCommit"},{"type":"null"}]}}},"VcsBrowserFileContents":{"type":"object","required":["name","contents","cacheKey"],"properties":{"name":{"type":"string"},"contents":{"type":"string"},"lang":{"type":"string"},"cacheKey":{"type":"string"}}},"VcsBrowserSelectedFile":{"type":"object","required":["path","kind","encoding","size_bytes","size_label","line_count","line_count_label","raw_url"],"properties":{"path":{"type":"string"},"kind":{"type":"string","enum":["text","binary","image","empty","missing","not_a_file","too_large"]},"encoding":{"type":"string","nullable":true,"enum":["utf-8","binary"]},"size_bytes":{"type":"integer","nullable":true},"size_label":{"type":"string","nullable":true},"line_count":{"type":"integer","nullable":true},"line_count_label":{"type":"string","nullable":true},"raw_url":{"type":"string","nullable":true},"file":{"$ref":"#/components/schemas/VcsBrowserFileContents"}}},"VcsBrowserFileResponse":{"type":"object","required":["ref","selected_file"],"properties":{"ref":{"$ref":"#/components/schemas/VcsBrowserRef"},"selected_file":{"$ref":"#/components/schemas/VcsBrowserSelectedFile"}}},"VcsFilesResponse":{"type":"object","required":["paths","truncated"],"properties":{"paths":{"type":"array","items":{"type":"string"}},"truncated":{"type":"boolean"}}},"VcsBlameLine":{"type":"object","required":["number","content","commit_id"],"properties":{"number":{"type":"integer","minimum":1},"content":{"type":"string"},"commit_id":{"type":"string","nullable":true}}},"VcsBlameRevision":{"type":"object","required":["id","short_id","author_name","author_email","author_date","author_date_label","summary"],"properties":{"id":{"type":"string"},"short_id":{"type":"string"},"author_name":{"type":"string","nullable":true},"author_email":{"type":"string","nullable":true},"author_date":{"type":"string","format":"date-time","nullable":true},"author_date_label":{"type":"string","nullable":true},"summary":{"type":"string","nullable":true}}},"VcsBlameResponse":{"type":"object","required":["ref","path","blame","revisions"],"properties":{"ref":{"$ref":"#/components/schemas/VcsBrowserRef"},"path":{"type":"string"},"blame":{"type":"object","required":["lines","truncated","line_count"],"properties":{"lines":{"type":"array","items":{"$ref":"#/components/schemas/VcsBlameLine"}},"truncated":{"type":"boolean"},"line_count":{"type":"integer","minimum":0}}},"revisions":{"type":"array","items":{"$ref":"#/components/schemas/VcsBlameRevision"}}}},"VcsMergePayload":{"type":"object","additionalProperties":false,"required":["into","from"],"properties":{"into":{"type":"string"},"from":{"type":"string"}}},"VcsMergeResponse":{"type":"object","required":["ok","fast_forward","tip_id"],"properties":{"ok":{"type":"boolean"},"fast_forward":{"type":"boolean"},"tip_id":{"type":"string"},"into":{"type":"string"},"from":{"type":"string"},"message":{"type":"string"}}},"VcsChangePreview":{"type":"object","required":["id","app_id","app_name","name","status","access","retained","expires_at","source_revision","source_patchset_number","current_patchset","urls","deployments","runtime_revisions"],"properties":{"id":{"type":"string"},"app_id":{"type":"string"},"app_name":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"access":{"type":"string","enum":["org_members","public"]},"retained":{"type":"boolean"},"expires_at":{"type":"string","format":"date-time"},"source_revision":{"type":["string","null"]},"source_patchset_number":{"type":["integer","null"]},"current_patchset":{"type":"boolean"},"urls":{"type":"array","items":{"type":"object","required":["hostname","available"],"properties":{"hostname":{"type":"string"},"available":{"type":"boolean"}}}},"deployments":{"type":"array","items":{"type":"object","required":["id","service_name","status","build_status","rollout_status","source_revision","patchset_number"],"properties":{"id":{"type":"string"},"service_name":{"type":"string"},"status":{"type":"string"},"build_status":{"type":"string"},"rollout_status":{"type":"string"},"source_revision":{"type":["string","null"]},"patchset_number":{"type":["integer","null"]}}}},"runtime_revisions":{"type":"array","items":{"type":"object","required":["source_revision","patchset_number","status"],"properties":{"source_revision":{"type":"string"},"patchset_number":{"type":["integer","null"]},"status":{"type":"string"}}}}}},"VcsResolvedReviewer":{"type":"object","required":["name","email"],"properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","format":"email"}}},"VcsChangeError":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}},"VcsChangePrimaryStatus":{"type":"string","enum":["needs_review","review_requested","changes_requested","approved","ready_to_land","waiting_to_land","landing","landed","abandoned","folded","orphaned","needs_restack"]},"VcsActorSummary":{"allOf":[{"$ref":"#/components/schemas/VcsUserSummary"},{"type":"object","properties":{"kind":{"type":"string","enum":["automation"]},"slug":{"type":"string"}}}],"description":"Human user summary or organization automation identity. Automations have kind and slug, without email or picture_url."},"VcsUserSummary":{"type":"object","required":["id"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"picture_url":{"type":"string"}}},"VcsChangeCheck":{"type":"object","required":["id","name","status"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"required":{"type":"boolean"},"started_at":{"type":"string","format":"date-time"},"finished_at":{"type":"string","format":"date-time"},"pipeline_id":{"type":"string"},"run_id":{"type":"string"},"job_id":{"type":"string"},"blocked_reason":{"type":"string"},"source":{"type":"string","enum":["vex","github"]},"details_url":{"type":"string","format":"uri"},"app_id":{"type":"integer"},"expected":{"type":"boolean"},"expected_since":{"type":"string","format":"date-time"},"requirement":{"type":"object","properties":{"name":{"type":"string"},"source":{"type":"string","enum":["vex","github","any"]},"app_id":{"type":"integer","nullable":true},"state":{"type":"string","enum":["expected","pending","failed","passed"]},"evaluated_head":{"type":"string"}}}}},"VcsChangeVote":{"type":"object","required":["id","kind"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["accept","request_changes"]},"message":{"type":"string"},"user":{"$ref":"#/components/schemas/VcsUserSummary"},"created_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string"},"updated_at":{"type":"string","format":"date-time"},"updated_at_label":{"type":"string"}}},"VcsChangeReviewer":{"type":"object","required":["user","state","requested"],"properties":{"user":{"$ref":"#/components/schemas/VcsUserSummary"},"state":{"type":"string","enum":["changes_requested","approved","pending"]},"requested":{"type":"boolean"}}},"VcsChangeReviewerCandidate":{"type":"object","required":["user"],"properties":{"user":{"$ref":"#/components/schemas/VcsUserSummary"},"unavailable_reason":{"type":"string"}}},"VcsChangePatchset":{"type":"object","required":["id","number","commit_id"],"properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":1},"commit_id":{"type":"string"},"parent_commit_id":{"type":"string"},"base_commit_id":{"type":"string"},"message":{"type":"string"},"source_kind":{"type":"string","enum":["git"]},"source_git_sha":{"type":"string"},"checks_status":{"type":"string"},"created_by":{"$ref":"#/components/schemas/VcsActorSummary"},"created_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string"}}},"VcsChangeDiffPatchset":{"allOf":[{"$ref":"#/components/schemas/VcsChangePatchset"},{"type":"object","required":["reviewed_files"],"properties":{"reviewed_files":{"type":"array","items":{"$ref":"#/components/schemas/VcsReviewedFile"}}}}]},"VcsChangeDiffOption":{"type":"object","required":["key","label","group"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"group":{"type":"string","enum":["Target","Stack changes","Patchset history"]}}},"VcsChangeDiff":{"type":"object","required":["base_key","base_commit_id","head_key","head_patchset","files","options","target_advanced"],"properties":{"base_key":{"type":"string","nullable":true},"base_commit_id":{"type":"string","nullable":true},"head_key":{"type":"string","nullable":true},"head_patchset":{"oneOf":[{"$ref":"#/components/schemas/VcsChangeDiffPatchset"},{"type":"null"}]},"files":{"type":"array","items":{"$ref":"#/components/schemas/VcsDiffFile"}},"options":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeDiffOption"}},"target_advanced":{"type":"boolean"}}},"VcsChangeSync":{"type":"object","required":["state","target_branch","base","conflicts"],"properties":{"state":{"type":"string","enum":["current","clean","conflicts","unavailable"]},"target_branch":{"type":"string"},"target_commit_id":{"type":"string","nullable":true},"base":{"type":"object","required":["kind"],"properties":{"kind":{"type":"string","enum":["change","target"]},"commit_id":{"type":"string","nullable":true},"target_branch":{"type":"string"},"change":{"type":"object","required":["id","number","title"],"properties":{"id":{"type":"string"},"number":{"type":"integer"},"title":{"type":"string"}}}}},"conflicts":{"type":"array","items":{"type":"object","required":["path","kind","message"],"properties":{"path":{"type":"string"},"kind":{"type":"string"},"message":{"type":"string"}}}}}},"VcsChangeTranscript":{"type":"object","additionalProperties":false,"required":["id","capture_kind","status","captured_at","redaction_count","patchset_number","patchset_commit_id","superseded","harness"],"properties":{"id":{"type":"string"},"capture_kind":{"type":"string","enum":["commit","lifecycle","manual"]},"status":{"type":"string","enum":["pending","uploaded","failed","deleted"]},"captured_at":{"type":"string","format":"date-time"},"redaction_count":{"type":"integer","minimum":0},"patchset_number":{"type":"integer","minimum":1},"patchset_commit_id":{"type":"string"},"superseded":{"type":"boolean"},"harness":{"$ref":"#/components/schemas/VcsChangeTranscriptHarness"},"user":{"$ref":"#/components/schemas/VcsUserSummary"},"session_id":{"type":"string","nullable":true},"session_title":{"type":"string","nullable":true},"original_resume":{"oneOf":[{"type":"object","additionalProperties":false,"required":["kind","value"],"properties":{"kind":{"type":"string","enum":["codex_deep_link","claude_command","cursor_command","grok_command"]},"value":{"type":"string"}}},{"type":"null"}]}}},"VcsChangeTranscriptHarness":{"type":"object","additionalProperties":false,"properties":{"harness":{"type":"string","enum":["codex","claude-code","cursor","roder","grok"]},"harness_version":{"type":"string"},"model":{"type":"string"},"reasoning_effort":{"type":"string","enum":["none","minimal","low","medium","high","xhigh","max","ultra"]},"token_usage":{"type":"object","additionalProperties":false,"properties":{"input_tokens":{"type":"integer","minimum":0},"cached_input_tokens":{"type":"integer","minimum":0},"output_tokens":{"type":"integer","minimum":0},"reasoning_output_tokens":{"type":"integer","minimum":0},"total_tokens":{"type":"integer","minimum":0},"total_tokens_is_estimated":{"type":"boolean"}}},"token_usage_scope":{"type":"string","enum":["turn","session","cumulative"]},"subagent_count":{"type":"integer","minimum":0,"maximum":1000000},"subagent_count_truncated":{"type":"boolean"}}},"VcsChangeTranscripts":{"type":"object","required":["status","available_count","unavailable_count","transcripts"],"properties":{"status":{"type":"string","enum":["available","unavailable"]},"available_count":{"type":"integer","minimum":0},"unavailable_count":{"type":"integer","minimum":0},"transcripts":{"type":"array","maxItems":8,"items":{"$ref":"#/components/schemas/VcsChangeTranscript"}}}},"VcsChangePatchsetUnresolvedCommentCount":{"type":"object","description":"Unresolved review threads on one file of one patchset.","required":["path","count","count_label"],"properties":{"path":{"type":"string"},"count":{"type":"integer","minimum":1},"count_label":{"type":"string"}}},"VcsReviewedFile":{"type":"object","required":["path","reviewed_patchset_number"],"properties":{"path":{"type":"string"},"reviewed_at":{"type":"string","format":"date-time"},"reviewed_patchset_number":{"type":"integer","minimum":1}}},"VcsChangeApproval":{"type":"object","required":["state","message","accepted","can_accept","can_request_changes"],"properties":{"state":{"type":"string","enum":["available","approved","unavailable"]},"message":{"type":"string","nullable":true},"accepted":{"type":"boolean"},"can_accept":{"type":"boolean"},"can_request_changes":{"type":"boolean"}}},"VcsChangeCapabilities":{"type":"object","required":["can_mark_ready","can_edit_description","can_edit_labels","can_edit_stack_name","can_edit_reviewers","can_comment"],"properties":{"can_mark_ready":{"type":"boolean"},"can_edit_description":{"type":"boolean"},"can_edit_labels":{"type":"boolean"},"can_edit_stack_name":{"type":"boolean"},"can_edit_reviewers":{"type":"boolean"},"can_comment":{"type":"boolean"}}},"VcsLabel":{"type":"object","description":"A free-form, organization-scoped grouping name applied to changes.","required":["id","name","slug","changes_count"],"properties":{"id":{"type":"string"},"name":{"type":"string","description":"Display name","preserving the casing it was created with.":null},"slug":{"type":"string","description":"Normalized identity used for filtering and lookup."},"changes_count":{"type":"integer","minimum":0}}},"VcsLabelFacet":{"type":"object","required":["slug","name","changes_count"],"properties":{"slug":{"type":"string"},"name":{"type":"string"},"changes_count":{"type":"integer","minimum":0}}},"VcsRelatedChange":{"type":"object","required":["id","number","title","status","primary_status","repository_slug","orphaned","url"],"properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":1},"title":{"type":"string"},"status":{"type":"string","enum":["open","landed","abandoned","folded"]},"primary_status":{"$ref":"#/components/schemas/VcsChangePrimaryStatus"},"repository_slug":{"type":"string"},"orphaned":{"type":"boolean"},"url":{"type":"string"}}},"VcsRelatedChangeGroup":{"type":"object","required":["label","changes","total_count","count_label"],"properties":{"label":{"$ref":"#/components/schemas/VcsLabel"},"total_count":{"type":"integer","minimum":1,"description":"Total related changes for this label, which may exceed the returned page."},"count_label":{"type":"string"},"changes":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/VcsRelatedChange"}}}},"VcsChangePatchsetRef":{"type":"object","nullable":true,"required":["id","number","commit_id"],"properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":1},"commit_id":{"type":"string"},"source_kind":{"type":"string","enum":["git"]}}},"VcsChangeRelationChainMember":{"type":"object","required":["id","number","title","status","primary_status","relation","orphaned"],"properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":1},"title":{"type":"string"},"status":{"type":"string","enum":["open","landed","abandoned","folded"]},"primary_status":{"$ref":"#/components/schemas/VcsChangePrimaryStatus"},"relation":{"type":"string","enum":["current","ancestor","descendant"],"description":"Position of this member relative to the change being read."},"parent_change_id":{"type":"string","nullable":true},"orphaned":{"type":"boolean"},"restack_state":{"type":"string","enum":["clean","restack_required"]},"current_patchset":{"$ref":"#/components/schemas/VcsChangePatchsetRef"},"patchset_count":{"type":"integer","minimum":0},"url":{"type":"string"}}},"VcsChangeLandingRequirement":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"change_id":{"type":"string"},"number":{"type":"integer","minimum":1},"check_name":{"type":"string"},"overridable":{"type":"boolean","description":"True when an acknowledged override can clear this requirement."},"source":{"type":"string","enum":["vex","github","any"]},"app_id":{"type":"integer","nullable":true},"evaluated_head":{"type":"string"},"conclusion":{"type":"string"}}},"VcsChangeLandingTone":{"type":"string","enum":["success","warning","destructive","neutral"],"description":"Semantic readiness tone. React maps this to presentation; Rails never sends CSS."},"VcsChangeLandingLabeledTone":{"type":"object","required":["label","tone"],"properties":{"label":{"type":"string"},"tone":{"$ref":"#/components/schemas/VcsChangeLandingTone"}}},"VcsChangeLandingWaitingRow":{"type":"object","required":["key","label","tone"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"tone":{"$ref":"#/components/schemas/VcsChangeLandingTone"},"code":{"type":"string","description":"Requirement code for display icons."},"title":{"type":"string","description":"Short server-owned requirement heading."},"number":{"type":"integer","minimum":1},"check_name":{"type":"string"},"evaluated_head":{"type":"string","description":"Full revision evaluated by the check."}}},"VcsChangeLandingMember":{"type":"object","required":["id","number","title","status","primary_status","landable","orphaned"],"properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":1},"title":{"type":"string"},"status":{"type":"string","enum":["open","landed","abandoned","folded"]},"primary_status":{"$ref":"#/components/schemas/VcsChangePrimaryStatus"},"landable":{"type":"boolean"},"orphaned":{"type":"boolean"}}},"VcsChangeLandingMemberReference":{"type":"object","required":["id","number","title"],"properties":{"id":{"type":"string"},"number":{"type":"integer","minimum":1},"title":{"type":"string"}}},"VcsChangeLanding":{"type":"object","description":"Server-computed submitted-together closure and landing preflight. An unavailable closure returns `available: false` with `error` and nothing else.","required":["available","changes"],"properties":{"available":{"type":"boolean"},"can_land":{"type":"boolean"},"can_defer_landing":{"type":"boolean"},"can_prioritize":{"type":"boolean"},"target_requires_checks":{"type":"boolean","description":"Whether a bookmark protection rule makes the merge queue require CI on this target. When false, a deferred landing has nothing to wait for and lands immediately."},"landable":{"type":"boolean"},"error":{"type":"string"},"scope_version":{"type":"string","description":"Opaque fence echoed back as `expected_scope_version` when requesting a landing."},"count":{"type":"integer","minimum":0},"changes":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeLandingMember"}},"submitted_together":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeLandingMember"}},"requirements":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeLandingRequirement"}},"blocker_summary":{"type":"string","nullable":true,"description":"One-line stack footer for why the set cannot land yet. Null when there are no requirements. Derived from requirement codes; React must not re-summarize the requirement list."},"votes_summary":{"$ref":"#/components/schemas/VcsChangeLandingLabeledTone"},"checks_summary":{"$ref":"#/components/schemas/VcsChangeLandingLabeledTone"},"waiting_on":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeLandingWaitingRow"},"description":"Ordered readiness rows for the land action preview."},"sync_available":{"type":"boolean","description":"Whether Rails could build a merge preview for every Change in the landing scope."},"sync_unavailable_changes":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeLandingMemberReference"}},"sync_conflicts":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeLandingSyncConflict"}},"override_info":{"type":"object","required":["available","required"],"properties":{"available":{"type":"boolean","description":"True when this actor may force the set past its overridable requirements."},"required":{"type":"boolean"},"requirement_version":{"type":"string","nullable":true,"description":"Opaque fence echoed back as `expected_requirement_version` when overriding."}}},"request":{"type":"object","nullable":true,"required":["id","state","version","retry_count","health"],"properties":{"queue":{"type":"object","required":["ahead_count","paused","ahead"],"properties":{"ahead_count":{"type":"integer","minimum":0},"paused":{"type":"boolean"},"ahead":{"type":"array","items":{"type":"object","required":["id","number","title","state","retry_count","error"],"properties":{"id":{"type":"string"},"number":{"type":"integer","nullable":true},"title":{"type":"string"},"state":{"type":"string"},"retry_count":{"type":"integer"},"error":{"type":"string","nullable":true}}}}}},"id":{"type":"string"},"state":{"type":"string"},"priority":{"type":"string","enum":["normal","high"]},"position":{"type":"integer","minimum":1},"version":{"type":"integer","nullable":true,"description":"Optimistic fence echoed back as `expected_version` when cancelling."},"retry_count":{"type":"integer","minimum":0,"description":"How many times the queue restarted this attempt after it stalled."},"health":{"type":"string","enum":["steady","retrying","stalled"],"description":"Whether the retries so far are routine or the attempt is going nowhere."},"failure":{"allOf":[{"$ref":"#/components/schemas/VcsChangeLandingFailure"}],"nullable":true,"description":"The error this entry itself recorded, verbatim."},"queue_error":{"allOf":[{"$ref":"#/components/schemas/VcsChangeLandingFailure"}],"nullable":true,"description":"What the merge queue tick last recorded. Sent only while this entry is at the front of the queue, and attributed to the queue rather than to this change."}}},"attention":{"allOf":[{"$ref":"#/components/schemas/VcsChangeLandingAttention"}],"nullable":true}}},"VcsChangeLandingSyncConflict":{"type":"object","required":["change","base","conflicts"],"properties":{"change":{"$ref":"#/components/schemas/VcsChangeLandingMember"},"base":{"type":"object","required":["kind"],"properties":{"kind":{"type":"string","enum":["change","target"]},"commit_id":{"type":"string","nullable":true},"target_branch":{"type":"string"},"change":{"type":"object","required":["id","number","title"],"properties":{"id":{"type":"string"},"number":{"type":"integer"},"title":{"type":"string"}}}}},"conflicts":{"type":"array","items":{"type":"object","required":["path","kind","message"],"properties":{"path":{"type":"string"},"kind":{"type":"string"},"message":{"type":"string"}}}}}},"VcsChangeLandingFailure":{"type":"object","required":["message"],"description":"A raw recorded error, shown behind a disclosure. Unlike the guidance summary this is the queue's own internal text and is not a fixed vocabulary.","properties":{"message":{"type":"string"},"recorded_at":{"type":"string","format":"date-time","nullable":true}}},"VcsChangeLandingAttention":{"type":"object","required":["entry_id","state","kind","summary","next_step","action_required_by","action_kind","occurred_at","occurred_at_label","retry_count","agent_prompt"],"properties":{"entry_id":{"type":"string"},"retry_count":{"type":"integer","minimum":0,"description":"How many times the queue restarted this attempt before it stopped."},"failure":{"allOf":[{"$ref":"#/components/schemas/VcsChangeLandingFailure"}],"nullable":true},"state":{"type":"string","enum":["ejected","needs_attention"]},"kind":{"type":"string"},"summary":{"type":"string"},"next_step":{"type":"string"},"action_required_by":{"type":"string","enum":["author","repo_admin","vex"]},"action_kind":{"type":"string","enum":["open_checks","open_change","open_integration","open_queue"]},"occurred_at":{"type":"string","format":"date-time"},"occurred_at_label":{"type":"string"},"agent_prompt":{"type":"string","description":"A paste-ready prompt for a coding agent. Rails composes it from the published attention contract so the browser only copies it."},"checks":{"type":"array","items":{"type":"object","required":["name","result","result_label"],"properties":{"name":{"type":"string"},"result":{"type":"string","enum":["failed","running","queued","passed"]},"result_label":{"type":"string"},"source":{"type":"string"},"app_id":{"type":"integer","nullable":true},"evaluated_head":{"type":"string"}}}},"conflicts":{"type":"array","items":{"type":"object","required":["path"],"properties":{"path":{"type":"string"},"kind":{"type":"string"},"change_number":{"type":"integer","nullable":true}}}}}},"VcsChangeActivityItem":{"type":"object","required":["id","kind","tone","title","occurred_at","occurred_at_label"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["submitted","patchset_pushed","synced","accepted","changes_requested","reviews_carried_forward","landing_requested","landing_retried","landing_candidate_built","landing_ejected","landing_cancelled","landed"]},"tone":{"type":"string","enum":["neutral","info","success","warning","destructive"]},"title":{"type":"string"},"detail":{"type":"string","nullable":true},"actor":{"allOf":[{"$ref":"#/components/schemas/VcsActorSummary"}],"nullable":true},"occurred_at":{"type":"string","format":"date-time"},"occurred_at_label":{"type":"string"},"patchset_number":{"type":"integer","minimum":1,"nullable":true},"source":{"type":"object","nullable":true,"required":["provider","repository","commit_sha","commit_url"],"properties":{"provider":{"type":"string","enum":["github"]},"repository":{"type":"string"},"branch":{"type":"string","nullable":true},"commit_sha":{"type":"string","pattern":"^[0-9a-f]{40}$"},"commit_url":{"type":"string","format":"uri"}}},"queue_entry_id":{"type":"string","nullable":true}}},"VcsStackSummary":{"type":"object","required":["code","name"],"properties":{"code":{"type":"string","pattern":"^[A-Z0-9]{4}$"},"name":{"type":"string","nullable":true}}},"VcsStackLanding":{"type":"object","description":"Compact landing state for the Stack CLI.","required":["changes"],"properties":{"can_land":{"type":"boolean"},"count":{"type":"integer","minimum":0},"changes":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeLandingMember"}},"requirements":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeLandingRequirement"}},"sync_available":{"type":"boolean"},"sync_unavailable_changes":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeLandingMemberReference"}},"sync_conflicts":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeLandingSyncConflict"}},"attention":{"type":"object","nullable":true,"required":["state","summary"],"properties":{"state":{"type":"string"},"summary":{"type":"string"}}},"error":{"type":"string"}}},"VcsStack":{"allOf":[{"$ref":"#/components/schemas/VcsStackSummary"},{"type":"object","required":["status","member_count","ref_name","alias_ref_name","tip_change_number","updated_at","updated_at_label","changes"],"properties":{"status":{"type":"string","enum":["active","archived"]},"member_count":{"type":"integer","minimum":0},"ref_name":{"type":"string","pattern":"^refs/heads/stacks/[A-Z0-9]{4}$"},"alias_ref_name":{"type":"string","nullable":true},"tip_change_number":{"type":"integer","minimum":1,"nullable":true},"updated_at":{"type":"string","format":"date-time"},"updated_at_label":{"type":"string"},"changes":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeIndexItem"}},"landing":{"$ref":"#/components/schemas/VcsStackLanding"}}}]},"VcsChangeSummary":{"type":"object","required":["id","number","title","status","target_branch"],"properties":{"id":{"type":"string"},"public_id":{"type":"string"},"number":{"type":"integer","minimum":1},"jj_change_id":{"type":"string","nullable":true},"title":{"type":"string"},"description":{"type":"string","nullable":true},"status":{"type":"string","enum":["open","landed","abandoned","folded"]},"primary_status":{"type":"string","nullable":true},"target_branch":{"type":"string"},"patchset_number":{"type":"integer","nullable":true},"group":{"$ref":"#/components/schemas/VcsChangeGroupRef"},"stack":{"allOf":[{"$ref":"#/components/schemas/VcsStackSummary"}],"nullable":true},"labels":{"type":"array","items":{"$ref":"#/components/schemas/VcsLabel"}},"url":{"type":"string"}}},"VcsChangeIndexItem":{"allOf":[{"$ref":"#/components/schemas/VcsChangeSummary"},{"type":"object","additionalProperties":true,"properties":{"restack_state":{"type":"string","enum":["clean","restack_required"]},"checks_status":{"type":"string"},"checks":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeCheck"}},"group":{"$ref":"#/components/schemas/VcsChangeDetailGroup"}}}]},"VcsChangeTranscriptSummary":{"type":"object","required":["session_count","total_tokens","tokens_partial","estimated_cost","sessions"],"properties":{"session_count":{"type":"integer"},"total_tokens":{"type":"integer","nullable":true},"tokens_partial":{"type":"boolean"},"estimated_cost":{"allOf":[{"$ref":"#/components/schemas/AgentCostEstimate"}],"nullable":true},"sessions":{"type":"array","items":{"type":"object","required":["harness","model","title","total_tokens"],"properties":{"session_id":{"type":"string","nullable":true},"harness":{"type":"string","nullable":true},"model":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"total_tokens":{"type":"integer","nullable":true}}}}}},"VcsOrganizationChangeSummary":{"type":"object","required":["id","public_id","number","title","status","lifecycle","primary_status","review_status","checks_status","mergeability","target_branch","base","repository_slug","submitted_at","submitted_at_label","updated_at","updated_at_label","conversation_count","author","pending_reviewers","stack_position"],"properties":{"kind":{"type":"string","enum":["change"]},"github":{"allOf":[{"$ref":"#/components/schemas/GithubReviewSummary"}],"nullable":true},"id":{"type":"string"},"public_id":{"type":"string"},"number":{"type":"integer","minimum":1},"title":{"type":"string"},"status":{"type":"string","enum":["open","landed","abandoned","folded"]},"lifecycle":{"type":"string","enum":["open","waiting","needs_attention","landed","abandoned"],"description":"Index badge. Stored status stays open while a change is in an active landing request (waiting) or a current ejected request (needs_attention). Filters still use status.\n"},"primary_status":{"type":"string","enum":["needs_review","review_requested","changes_requested","approved","ready_to_land","waiting_to_land","landing","landed","abandoned","orphaned","needs_restack"]},"review_status":{"type":"string","enum":["no_review","review_requested","approved","changes_requested"]},"pending_reviewers":{"type":"array","items":{"$ref":"#/components/schemas/VcsUserSummary"}},"checks_status":{"type":"string","enum":["absent","passing","failing","pending"]},"mergeability":{"type":"string","enum":["mergeable","conflicts","unknown","not_applicable"]},"target_branch":{"type":"string"},"base":{"oneOf":[{"type":"object","required":["kind","target_branch"],"properties":{"kind":{"type":"string","enum":["target"]},"target_branch":{"type":"string"}}},{"type":"object","required":["kind","number","title"],"properties":{"kind":{"type":"string","enum":["change"]},"number":{"type":"integer","minimum":1},"title":{"type":"string"}}}]},"repository_slug":{"type":"string"},"submitted_at":{"type":"string","format":"date-time"},"submitted_at_label":{"type":"string","description":"Relative time since submission"},"updated_at":{"type":"string","format":"date-time"},"updated_at_label":{"type":"string","description":"Relative time since the last update"},"conversation_count":{"type":"integer","minimum":0},"repo":{"type":"object","nullable":true,"required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"}}},"author":{"allOf":[{"$ref":"#/components/schemas/VcsActorSummary"}],"nullable":true},"group":{"allOf":[{"$ref":"#/components/schemas/VcsChangeGroupRef"}],"nullable":true},"stack":{"allOf":[{"$ref":"#/components/schemas/VcsStackSummary"}],"nullable":true},"stack_position":{"type":"object","nullable":true,"required":["position","total"],"properties":{"position":{"type":"integer","minimum":1},"total":{"type":"integer","minimum":1}}},"labels":{"type":"array","items":{"$ref":"#/components/schemas/VcsLabel"}}}},"VcsPagination":{"type":"object","description":"Pagy's own page data. Navigate with `previous` and `next` rather than by adding to `page`, which the server may have resolved down to `last`.","additionalProperties":true,"required":["page","limit","count","count_label","last","series"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1},"count":{"type":"integer","minimum":0},"count_label":{"type":"string"},"last":{"type":"integer","minimum":1},"from":{"type":"integer","minimum":0,"description":"Position of this page's first row in the whole scope. `0` when the page holds no rows — an empty scope, or a `page` past `last` — so treat `0` as \"no range\" rather than as a row position."},"to":{"type":"integer","minimum":0,"description":"Position of this page's last row in the whole scope. `0` when the page holds no rows, for the same reason as `from`."},"previous":{"type":"integer","minimum":1,"nullable":true},"next":{"type":"integer","minimum":1,"nullable":true},"series":{"type":"array","items":{"oneOf":[{"type":"integer","minimum":1},{"type":"string"}]}}}},"VcsOrganizationChangeListResult":{"type":"object","description":"The flat change queue. `pagination` counts changes.","required":["kind","changes","pagination"],"properties":{"kind":{"type":"string","enum":["list"]},"changes":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/VcsOrganizationChangeSummary"},{"$ref":"#/components/schemas/GithubReviewSummary"}]}},"pagination":{"$ref":"#/components/schemas/VcsPagination"}}},"VcsOrganizationChangeGroupSubject":{"description":"What names one group. The `kind` matches the active grouping, except for the pinned `unstacked` remainder under stack grouping.","oneOf":[{"type":"object","required":["kind","stack"],"properties":{"kind":{"type":"string","enum":["stack"]},"stack":{"type":"object","required":["code","name","member_count"],"properties":{"code":{"type":"string","pattern":"^[A-Z0-9]{4}$"},"name":{"type":"string","nullable":true},"member_count":{"type":"integer","minimum":0,"description":"Every member of the stack, including those the active filters excluded."}}}}},{"type":"object","required":["kind"],"properties":{"kind":{"type":"string","enum":["unstacked"]}}},{"type":"object","required":["kind","user"],"properties":{"kind":{"type":"string","enum":["author"]},"user":{"$ref":"#/components/schemas/VcsActorSummary"}}},{"type":"object","required":["kind","period","started_at","ended_at"],"properties":{"kind":{"type":"string","enum":["created_time"]},"period":{"type":"string","enum":["past_hour","past_day","past_week","older"]},"started_at":{"type":"string","format":"date-time","nullable":true,"description":"Null for `older`, whose range has no lower bound."},"ended_at":{"type":"string","format":"date-time","nullable":true,"description":"Null for `past_hour`, whose range is open above so a future timestamp is still reported."}}}]},"VcsOrganizationChangeGroup":{"type":"object","required":["key","subject","changes","pagination"],"properties":{"key":{"type":"string","description":"Stable public key for this group — a stack code or `unstacked`, a user public id, or a period name. Echo it back in `group_pages` to move this group alone."},"subject":{"$ref":"#/components/schemas/VcsOrganizationChangeGroupSubject"},"changes":{"type":"array","description":"One page of the matching changes in this group. Stack groups keep graph order, from tip to root; every other grouping uses the requested change sort.","items":{"oneOf":[{"$ref":"#/components/schemas/VcsOrganizationChangeSummary"},{"$ref":"#/components/schemas/GithubReviewSummary"}]}},"pagination":{"$ref":"#/components/schemas/VcsPagination"}}},"VcsOrganizationChangeGroupedResult":{"type":"object","description":"The queue divided into groups. `pagination` counts group keys, not changes.","required":["kind","grouping","groups","pagination"],"properties":{"kind":{"type":"string","enum":["grouped"]},"grouping":{"type":"string","enum":["stack","author","created_time"]},"groups":{"type":"array","items":{"$ref":"#/components/schemas/VcsOrganizationChangeGroup"}},"pagination":{"allOf":[{"$ref":"#/components/schemas/VcsPagination"}],"nullable":true,"description":"Null for `created_time`, which returns all four of its periods."}}},"VcsChange":{"allOf":[{"$ref":"#/components/schemas/VcsChangeSummary"},{"type":"object","properties":{"commit_message":{"type":"string","nullable":true},"has_description":{"type":"boolean","description":"True when the change has Vex-owned review description content, distinct from the JJ commit message."},"parent_change_id":{"type":"string","nullable":true},"parent_change_number":{"type":"integer","nullable":true},"change_key":{"type":"string"},"stable_change_id":{"type":"string"},"draft":{"type":"boolean"},"orphaned":{"type":"boolean"},"folded_into_number":{"type":"integer","nullable":true},"orphaned_reason":{"type":"string"},"orphaned_at":{"type":"string","format":"date-time"},"orphaned_at_label":{"type":"string"},"restack_state":{"type":"string","enum":["clean","restack_required"]},"accepted":{"type":"boolean"},"requested_changes":{"type":"boolean"},"landable":{"type":"boolean"},"checks_status":{"type":"string"},"checks":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeCheck"}},"approval":{"$ref":"#/components/schemas/VcsChangeApproval"},"capabilities":{"$ref":"#/components/schemas/VcsChangeCapabilities"},"group":{"$ref":"#/components/schemas/VcsChangeDetailGroup"},"author":{"$ref":"#/components/schemas/VcsActorSummary"},"landed_by":{"$ref":"#/components/schemas/VcsUserSummary"},"github_projection_status":{"type":"string","nullable":true,"enum":["pending","synced","drifted","error","disabled"]},"github_pull_request":{"type":"object","required":["number","url"],"properties":{"number":{"type":"integer"},"url":{"type":"string"},"state":{"type":"string"}}},"github_pull_requests":{"type":"array","items":{"type":"object","required":["number","url"],"properties":{"internal_path":{"type":"string","nullable":true},"number":{"type":"integer"},"url":{"type":"string"},"state":{"type":"string"},"repository":{"type":"string"},"change_number":{"type":"integer"}}}},"assets":{"type":"array","description":"Proof assets referenced from the description as `vex-asset:<id>`.","items":{"type":"object","required":["id","reference","alias","filename","content_type","byte_size","url"],"properties":{"id":{"type":"string"},"reference":{"type":"string"},"alias":{"type":"string"},"filename":{"type":"string"},"content_type":{"type":"string"},"byte_size":{"type":"integer","minimum":0},"url":{"type":"string"}}}},"comments_count":{"type":"integer","minimum":0},"comments_count_label":{"type":"string"},"unresolved_comments_count_label":{"type":"string"},"relation_chain":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeRelationChainMember"}},"current_patchset":{"$ref":"#/components/schemas/VcsChangePatchset"},"patchsets":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangePatchset"}},"votes":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeVote"}},"reviewers":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeReviewer"}},"reviewer_candidates":{"type":"array","description":"Organization members available to the reviewer picker on this page.","items":{"$ref":"#/components/schemas/VcsChangeReviewerCandidate"}},"comments":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeComment"}}}}]},"VcsChangePage":{"allOf":[{"$ref":"#/components/schemas/VcsChange"},{"type":"object","required":["primary_status","draft","orphaned","has_description","checks","approval","capabilities","author","assets","comments_count","comments_count_label","unresolved_comments_count_label","relation_chain","current_patchset","patchsets","votes","reviewers","reviewer_candidates","comments","labels"],"properties":{"primary_status":{"$ref":"#/components/schemas/VcsChangePrimaryStatus"},"draft":{"type":"boolean"},"orphaned":{"type":"boolean"},"has_description":{"type":"boolean"},"checks":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeCheck"}},"approval":{"$ref":"#/components/schemas/VcsChangeApproval"},"capabilities":{"$ref":"#/components/schemas/VcsChangeCapabilities"},"author":{"$ref":"#/components/schemas/VcsActorSummary"},"assets":{"type":"array","items":{"type":"object","required":["id","reference","alias","filename","content_type","byte_size","url"],"properties":{"id":{"type":"string"},"reference":{"type":"string"},"alias":{"type":"string"},"filename":{"type":"string"},"content_type":{"type":"string"},"byte_size":{"type":"integer","minimum":0},"url":{"type":"string"}}}},"comments_count":{"type":"integer","minimum":0},"comments_count_label":{"type":"string"},"unresolved_comments_count_label":{"type":"string"},"relation_chain":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeRelationChainMember"}},"current_patchset":{"$ref":"#/components/schemas/VcsChangePatchset"},"patchsets":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangePatchset"}},"votes":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeVote"}},"reviewers":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeReviewer"}},"reviewer_candidates":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeReviewerCandidate"}},"comments":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeComment"}},"labels":{"type":"array","items":{"$ref":"#/components/schemas/VcsLabel"}}}}]},"VcsExpectedCiEstimate":{"type":"object","description":"Historical CI duration estimate for the pipelines expected to run for this submission, from recent terminal pipeline-run wall-clock times. Omitted entirely when no workflow matches, no terminal history exists, or the estimate could not be computed.","required":["p50_seconds","p95_seconds","sample_size","basis","pipelines"],"properties":{"p50_seconds":{"type":"integer","minimum":0},"p95_seconds":{"type":"integer","minimum":0},"sample_size":{"type":"integer","minimum":1},"basis":{"type":"string","enum":["pipeline_runs"]},"pipelines":{"type":"array","items":{"$ref":"#/components/schemas/VcsExpectedCiPipelineEstimate"}}}},"VcsExpectedCiPipelineEstimate":{"type":"object","required":["slug","p50_seconds","p95_seconds","sample_size"],"properties":{"slug":{"type":"string"},"p50_seconds":{"type":"integer","minimum":0},"p95_seconds":{"type":"integer","minimum":0},"sample_size":{"type":"integer","minimum":1}}},"VcsChangeSubmitOutcome":{"type":"object","required":["number","public_id","jj_change_id","outcome","url"],"properties":{"number":{"type":"integer","minimum":1},"public_id":{"type":"string"},"jj_change_id":{"type":"string"},"outcome":{"type":"string","enum":["created","updated","unchanged"]},"patchset_number":{"type":"integer","nullable":true},"group":{"$ref":"#/components/schemas/VcsChangeGroupRef"},"url":{"type":"string"}}},"VcsChangeAsset":{"type":"object","required":["id","alias","filename","content_type","byte_size","status"],"properties":{"id":{"type":"string"},"alias":{"type":"string"},"filename":{"type":"string"},"content_type":{"type":"string"},"byte_size":{"type":"integer","minimum":0},"status":{"type":"string"}}},"VcsChangeCommentCapabilities":{"type":"object","required":["can_reply","can_resolve","can_reopen"],"properties":{"can_reply":{"type":"boolean"},"can_resolve":{"type":"boolean"},"can_reopen":{"type":"boolean"}}},"VcsChangeComment":{"type":"object","additionalProperties":true,"required":["id","body","resolved","capabilities","patchset_id","patchset_number","outdated"],"properties":{"id":{"type":"string"},"body":{"type":"string"},"resolved":{"type":"boolean"},"capabilities":{"$ref":"#/components/schemas/VcsChangeCommentCapabilities"},"change_id":{"type":"string","nullable":true},"patchset_id":{"type":"string","nullable":true},"patchset_number":{"type":"integer","nullable":true},"outdated":{"type":"boolean"},"path":{"type":"string","nullable":true},"side":{"type":"string","enum":["additions","deletions"],"nullable":true},"line":{"type":"integer","nullable":true},"kind":{"type":"string","nullable":true},"user":{"$ref":"#/components/schemas/VcsUserSummary"},"resolved_by":{"$ref":"#/components/schemas/VcsUserSummary"},"resolved_at":{"type":"string","format":"date-time","nullable":true},"resolved_at_label":{"type":"string","nullable":true},"parent_comment_id":{"type":"string","nullable":true},"replies":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeComment"}},"created_at":{"type":"string","format":"date-time","nullable":true},"created_at_label":{"type":"string","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"VcsChangeLandingRequest":{"type":"object","required":["state","numbers","count","scope_version"],"properties":{"id":{"type":"string","nullable":true},"state":{"type":"string"},"priority":{"type":"string","enum":["normal","high"]},"position":{"type":"integer","minimum":1},"version":{"type":"integer","minimum":1},"head_change_id":{"type":"string"},"change_ids":{"type":"array","items":{"type":"string"}},"numbers":{"type":"array","items":{"type":"integer"}},"count":{"type":"integer","minimum":1},"scope_version":{"type":"string"}}},"VcsChangeGroupRef":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"number":{"type":"integer"},"name":{"type":"string"}}},"VcsChangeGroup":{"allOf":[{"$ref":"#/components/schemas/VcsChangeGroupRef"},{"type":"object","required":["status","title","changes"],"properties":{"status":{"type":"string"},"title":{"type":"string","nullable":true},"changes":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeSummary"}}}}]},"VcsChangeDetailGroup":{"allOf":[{"$ref":"#/components/schemas/VcsChangeGroupRef"},{"type":"object","properties":{"status":{"type":"string"},"title":{"type":"string","nullable":true},"members":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeLandingMember"}},"submitted_together":{"type":"array","items":{"$ref":"#/components/schemas/VcsChangeLandingMember"}},"landability_summary":{"type":"string","nullable":true}}}]},"ScenarioRunLesson":{"type":"object","required":["id","title","finding","workaround","created_at"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"finding":{"type":"string","description":"What went wrong, in the operator's words."},"workaround":{"type":"string","description":"What later runs should do instead."},"created_at":{"type":"string","format":"date-time"}}},"ScenarioRunLessonInput":{"type":"object","required":["finding","workaround"],"properties":{"title":{"type":"string","maxLength":160,"description":"Defaults to the Scenario's name."},"finding":{"type":"string","maxLength":1000},"workaround":{"type":"string","maxLength":1000}}},"ScenarioRunLearning":{"type":"object","required":["replayed_steps","offered_steps","healed_actions","model_from_step","offered_outcomes","replayed_outcomes","reported","steps","outcomes"],"properties":{"reported":{"type":"boolean","description":"Whether the runner posted a learning report; false when the run was done entirely by the model without one."},"replayed_steps":{"type":"integer","minimum":0,"description":"Learned steps replayed and checkpointed before the model took over."},"offered_steps":{"type":"integer","minimum":0,"description":"Learned steps Verify offered this run, every fresh step whose digest matches; the model completes any step without one."},"healed_actions":{"type":"integer","minimum":0,"description":"Replayed actions whose control had moved and was found again."},"model_from_step":{"type":["integer","null"],"minimum":0,"description":"The zero-based step the model started from; null when replay completed every authored step."},"offered_outcomes":{"type":"integer","minimum":0,"description":"Learned outcome checks Verify offered this run, every fresh outcome whose digest matches; they are checked once every step is complete."},"replayed_outcomes":{"type":"integer","minimum":0,"description":"Offered outcomes whose learned checks passed without the model."},"steps":{"type":"array","description":"How each journey step the run completed was done, in authored order. Steps the run never completed are left out.","items":{"type":"object","required":["index","mode","learned_from_run","actions","checks"],"properties":{"index":{"type":"integer","minimum":0,"description":"The zero-based authored step."},"mode":{"type":"string","enum":["learned","healed","ai"],"description":"learned when replayed with no model call; healed when replayed and Decisions found at least one moved control again; ai when the model did it because nothing was learned or replay failed."},"learned_from_run":{"type":["string","null"],"description":"The public id of the earlier passing run whose learned step this run replayed; null for ai steps, or when the dispatch did not record it."},"actions":{"type":"array","maxItems":40,"description":"The actions this run took for the step, as reported for learning; empty when the step could not be learned.","items":{"$ref":"#/components/schemas/ScenarioRunLearnedAction"}},"checks":{"type":"array","maxItems":10,"description":"The passing checkpoint checks that proved the step; empty when the step could not be learned.","items":{"$ref":"#/components/schemas/ScenarioRunLearnedCheck"}}}}},"outcomes":{"type":"array","description":"How each outcome the run checked, passed or failed, was done, in authored order. Unchecked outcomes are left out.","items":{"type":"object","required":["index","mode","learned_from_run","checks"],"properties":{"index":{"type":"integer","minimum":0,"description":"The zero-based authored outcome."},"mode":{"type":"string","enum":["learned","ai"],"description":"learned when its learned checks were replayed and then independently reviewed; ai when the model checked it."},"learned_from_run":{"type":["string","null"],"description":"The public id of the earlier passing run whose learned checks this run replayed; null for ai outcomes, or when the dispatch did not record it."},"checks":{"type":"array","maxItems":10,"description":"The live checks that proved the outcome; empty when it could not be learned.","items":{"$ref":"#/components/schemas/ScenarioRunLearnedCheck"}}}}}}},"ScenarioRunLearnedTarget":{"type":"object","description":"The signals that identify a control by its accessible role and name, not a CSS selector. Text is capped at 300 characters.","required":["role","label","context_text","tag"],"properties":{"role":{"type":["string","null"]},"label":{"type":["string","null"],"description":"The control's accessible name."},"context_text":{"type":["string","null"],"description":"Text around the control that tells it apart from similar ones."},"tag":{"type":["string","null"],"description":"The control's HTML tag."}}},"ScenarioRunLearnedAction":{"type":"object","description":"One action a run took for a step. A fill of a granted credential names only its kind (value_ref_kind), never its value; a mailed sign-in code or link is read live from mail, never stored. Text is capped at 300 characters.","required":["kind","target","value_ref_kind","value","option_label","key","repeat","path","direction","wait_ms","visual","files","directory"],"properties":{"kind":{"type":"string","enum":["click","double_click","right_click","fill","select","press","navigate","scroll","wait","reload","back","forward","upload","mail_code","mail_link"],"description":"upload chose files through a picker; mail_code filled the sign-in code mailed to the Persona; mail_link opened the mailed sign-in link."},"target":{"oneOf":[{"$ref":"#/components/schemas/ScenarioRunLearnedTarget"},{"type":"null"}]},"value_ref_kind":{"type":["string","null"],"enum":["username","password","totp",null]},"value":{"type":["string","null"],"description":"A literal fill value; synthetic test data."},"option_label":{"type":["string","null"]},"key":{"type":["string","null"]},"repeat":{"type":["integer","null"],"minimum":2,"description":"How many times in a row a page key press was pressed; null is once."},"path":{"type":["string","null"],"description":"Where a navigation went, relative to the target."},"direction":{"type":["string","null"],"enum":["up","down","left","right",null]},"wait_ms":{"type":["integer","null"],"minimum":0},"visual":{"oneOf":[{"$ref":"#/components/schemas/ScenarioRunLearnedVisualClick"},{"type":"null"}]},"files":{"type":["array","null"],"maxItems":16,"description":"The files an upload chose; null for other actions.","items":{"$ref":"#/components/schemas/ScenarioRunLearnedFile"}},"directory":{"type":["boolean","null"],"description":"Whether an upload chose a folder; null for other actions."}}},"ScenarioRunLearnedVisualClick":{"type":"object","description":"Where a click on no identifiable control landed.","required":["anchor","offset","point","viewport"],"properties":{"anchor":{"oneOf":[{"$ref":"#/components/schemas/ScenarioRunLearnedTarget"},{"type":"null"}],"description":"The nearest observed control, or null when there was none."},"offset":{"oneOf":[{"type":"object","required":["x","y"],"properties":{"x":{"type":"number"},"y":{"type":"number"}}},{"type":"null"}],"description":"The click in CSS px from the anchor's top-left corner."},"point":{"type":"object","required":["x_ratio","y_ratio"],"description":"The click as a fraction of the viewport.","properties":{"x_ratio":{"type":"number","minimum":0,"maximum":1},"y_ratio":{"type":"number","minimum":0,"maximum":1}}},"viewport":{"oneOf":[{"type":"object","required":["width","height"],"properties":{"width":{"type":"integer"},"height":{"type":"integer"}}},{"type":"null"}]}}},"ScenarioRunLearnedFile":{"type":"object","description":"One file an upload chose. A synthetic file's content is not shown.","required":["source","name"],"properties":{"source":{"type":"string","enum":["fixture","synthetic"],"description":"fixture for a file attached to the Scenario; synthetic for a small text file the model generated."},"name":{"type":"string","description":"The file's name, with {{run_tag}} for the run's own tag."}}},"ScenarioRunLearnedCheck":{"type":"object","description":"One check that proved a step or outcome. Text is capped at 300 characters.","required":["kind","expected","target","source_step_index"],"properties":{"kind":{"type":"string","enum":["text","absent_text","url","visible","accessible_name","pressed","enabled","disabled","focused","field_value","checked","height_above","absent_option","absent_console_error"]},"expected":{"type":["string","null"]},"target":{"oneOf":[{"$ref":"#/components/schemas/ScenarioRunLearnedTarget"},{"type":"null"}]},"source_step_index":{"type":["integer","null"],"minimum":0,"description":"For an outcome about state a later step removed, the earlier step whose passing check proves it."}}},"ScenarioRunBrowserError":{"type":"object","required":["kind","method","url","status","message","count","first_offset_ms"],"properties":{"kind":{"type":"string","enum":["console","network"]},"method":{"type":["string","null"]},"url":{"type":["string","null"],"description":"Without its query string."},"status":{"type":["integer","null"],"description":"HTTP status of a failed request; 0 when it never got a response."},"message":{"type":["string","null"]},"count":{"type":"integer","minimum":1},"first_offset_ms":{"type":["integer","null"],"description":"When it first happened, from the start of the recording."}}},"ScenarioRunFinding":{"type":"object","required":["id","title","severity","status","occurrence_count","first_seen_at","verification"],"properties":{"verification":{"$ref":"#/components/schemas/VerifyFindingVerification"},"id":{"type":"string"},"title":{"type":"string"},"severity":{"type":"string"},"status":{"type":"string","enum":["open","resolved","ignored"]},"occurrence_count":{"type":"integer","description":"How many scenario runs and reports have raised this finding."},"first_seen_at":{"type":"string","format":"date-time"}}},"ScenarioRunEvidenceFile":{"type":"object","required":["id","kind","content_type","captured_at","download_url","preview_url"],"properties":{"annotations":{"type":"array","description":"Numbered callouts on this exact screenshot for this outcome. Coordinates are fractions of the image, with the origin at its top left. Older runs may have none.","items":{"type":"object","required":["x","y","width","height","label"],"properties":{"x":{"type":"number"},"y":{"type":"number"},"width":{"type":"number"},"height":{"type":"number"},"label":{"type":"string"}}}},"id":{"type":"string"},"kind":{"type":"string"},"content_type":{"type":"string"},"captured_at":{"type":"string","format":"date-time"},"download_url":{"type":"string"},"preview_url":{"type":["string","null"],"description":"Set for media a browser can show in place, such as screenshots."}}},"ScenarioRunOutcome":{"type":"object","required":["expected","status","checks","evidence","findings"],"properties":{"evidence":{"type":"array","description":"Evidence the outcome's checks cited.","items":{"$ref":"#/components/schemas/ScenarioRunEvidenceFile"}},"findings":{"type":"array","description":"Findings this outcome raised. A scenario's findings come from its failed checks, so they are listed once, with its first failed outcome.","items":{"$ref":"#/components/schemas/ScenarioRunFinding"}},"expected":{"type":"string"},"actors":{"type":"array","maxItems":4,"items":{"type":"string"}},"status":{"type":"string","enum":["passed","failed","unknown","pending"]},"decision_screenshot_count":{"type":"integer","minimum":1,"description":"Number of distinct screenshots cited by the outcome decisions."},"decided_by":{"type":"array","description":"Present when a model judged the outcome's text visible, or absent, in its checkpoint screenshots because the text capture could not read it. One entry per decision.","minItems":1,"items":{"type":"object","required":["provider","model"],"properties":{"provider":{"type":"string"},"model":{"type":"string"}}}},"checks":{"type":"array","items":{"type":"object","required":["kind","target","expected","status","error"],"properties":{"kind":{"type":["string","null"]},"target":{"type":["string","null"]},"expected":{"type":["string","null"]},"status":{"type":"string","enum":["passed","failed","unknown","pending"]},"error":{"type":["string","null"]}}}}}},"ScenarioRunLive":{"type":"object","description":"Latest browser activity while the ScenarioRun is running.","required":["captured_at","url","completed_steps","frame_url","stream"],"properties":{"model_activity":{"description":"Public agent summary and recent tool calls. Absent on older workers.","oneOf":[{"$ref":"#/components/schemas/VerifyExplorationModelActivity"},{"type":"null"}]},"captured_at":{"type":["string","null"],"format":"date-time"},"url":{"type":["string","null"]},"completed_steps":{"type":["integer","null"],"minimum":0,"description":"Browser actions taken so far."},"frame_url":{"type":["string","null"]},"stream":{"oneOf":[{"$ref":"#/components/schemas/LiveBrowserStream"},{"type":"null"}]}}},"LiveBrowserStream":{"type":"object","description":"The live view of a running browser. The token authenticates the read-only video and event socket at url; devtools_url opens full Chrome DevTools and is null unless the viewer may run tests and the runner serves it.","required":["url","token","devtools_url"],"properties":{"url":{"type":"string","format":"uri"},"token":{"type":"string"},"devtools_url":{"type":["string","null"],"format":"uri"}}},"ScenarioRunSummary":{"type":"object","required":["text","blocker_step","evidence","cause","cause_label"],"properties":{"cause_label":{"description":"Who can fix the result, in words to show with the summary. Null when cause is null.","type":["string","null"]},"cause":{"description":"Who can fix the result. app means the app did not meet an expected step or outcome; access, the sign-in account was refused; prerequisite, data or state the Scenario needs was missing; obstacle, the browser could not get past the page as the steps describe it; runner, Composal's runner failed; timed_out, the run ran out of time. Null when the run passed or gave no reason.","type":["string","null"],"enum":["app","access","prerequisite","obstacle","runner","timed_out",null]},"text":{"type":["string","null"]},"blocker_step":{"oneOf":[{"type":"object","required":["number","text"],"properties":{"number":{"type":"integer","minimum":1},"text":{"type":"string"}}},{"type":"null"}]},"evidence":{"type":"array","items":{"$ref":"#/components/schemas/ScenarioRunEvidenceLink"}}}},"ScenarioRunEvidenceLink":{"type":"object","required":["id","kind","url"],"properties":{"id":{"type":"string"},"kind":{"type":"string"},"url":{"type":"string"}}},"ScenarioRecordingTimelineEntry":{"type":"object","required":["id","label","status","start_ms","duration_ms"],"properties":{"id":{"type":"string"},"label":{"type":"string"},"status":{"type":"string"},"start_ms":{"type":"number"},"duration_ms":{"type":"number"},"step_index":{"type":"integer","minimum":0,"description":"The authored step this entry checkpoints, by zero-based position; present only for a live journey's step entries."},"outcome_index":{"type":"integer","minimum":0,"description":"The authored outcome this entry checks, by zero-based position; present only for outcome entries."}}},"ScenarioRunRecording":{"type":"object","required":["video_groups","videos","frame_url","steps","step_summary","events","phases","activity","replay_start_ms","observations","findings"],"properties":{"webp_segments":{"$ref":"#/components/schemas/ScenarioRunRecording/properties/videos"},"multi_actor":{"type":"boolean","description":"Multiple named actors own independent browsers in this scenario."},"video_groups":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","continuous","videos"],"properties":{"id":{"type":"string"},"actor_id":{"type":["string","null"],"description":"The named actor whose browser this recording contains; null when unknown."},"continuous":{"type":"boolean"},"videos":{"$ref":"#/components/schemas/ScenarioRunRecording/properties/videos"}}}},"videos":{"type":"array","items":{"type":"object","required":["id","url","start_ms","duration_ms","timing_source","recording_id"],"properties":{"id":{"type":"string"},"url":{"type":"string"},"start_ms":{"type":["number","null"],"minimum":0},"duration_ms":{"type":["number","null"],"minimum":0,"description":"Recorded length of this segment of one continuous recording, when known."},"recording_id":{"type":["string","null"]},"timing_source":{"type":["string","null"],"enum":["recorded","estimated",null]}}}},"frame_url":{"type":["string","null"]},"steps":{"type":"array","items":{"type":"object","required":["id","status","duration_ms","start_ms","label"],"properties":{"id":{"type":"string"},"status":{"type":"string"},"duration_ms":{"type":"number"},"start_ms":{"type":"number"},"label":{"type":["string","null"]}}}},"events":{"type":"array","description":"Timestamped replay events with settled outcome verdicts; failed checks superseded by a passing review stay excluded. Computer-use recordings include native evidence reviews at their report capture times, with timed actions as a fallback.","items":{"$ref":"#/components/schemas/ScenarioRecordingTimelineEntry"}},"phases":{"type":"array","description":"Recorded step and outcome spans, followed by terminal application cleanup when recorded. Computer-use recordings retain native action spans without inferring authored-step completion. Cleanup includes retries and time spent finalizing.","items":{"$ref":"#/components/schemas/ScenarioRecordingTimelineEntry"}},"step_summary":{"type":"array","description":"The scenario's step list. Live journeys list every authored step, then each outcome the agent checked, in the order it checked them; a step the run never reached has status not_reached and no time, and an outcome row's status is that outcome's settled verdict, the same as its outcomes entry. Fixed replays list named plan actions.","items":{"type":"object","required":["kind","label","status","start_ms","duration_ms","step_ids","actions"],"properties":{"kind":{"type":"string","enum":["step","outcome"]},"outcome_index":{"type":"integer","minimum":0,"description":"The authored outcome's zero-based position, present only for outcome rows."},"step_index":{"type":"integer","minimum":0,"description":"The authored step's zero-based position, present only for a live journey's step rows."},"label":{"type":"string"},"status":{"type":"string"},"start_ms":{"type":["number","null"]},"duration_ms":{"type":["number","null"]},"step_ids":{"type":"array","description":"Recorded step ids this row covers, in order.","items":{"type":"string"}},"actions":{"type":"array","description":"What the narration adds to this step, in order. An action is something the agent did or saw that the step does not say; a check is a failed attempt to confirm the step, labelled with what was seen. A met outcome lists no checks.","items":{"type":"object","required":["id","kind","label","status","start_ms","duration_ms"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["action","check"]},"label":{"type":"string"},"status":{"type":"string"},"start_ms":{"type":"number"},"duration_ms":{"type":"number"}}}}}}},"activity":{"type":"array","description":"The run's activity in plain words, in order. What the agent did and each authored step or outcome it checked, with retries of one step folded into a row and unlabelled runner steps left out; then what the browser and agent reported. Raw steps and observations stay in their own fields.","items":{"type":"object","additionalProperties":false,"required":["id","kind","label","detail","status","start_ms","duration_ms","attempts"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["action","step","outcome","network","console","agent"]},"label":{"type":"string"},"detail":{"type":["string","null"],"description":"For a failed check, what the agent saw instead; for a report, its original text."},"status":{"type":["string","null"]},"start_ms":{"type":["number","null"]},"duration_ms":{"type":["number","null"]},"attempts":{"type":"integer","minimum":1,"description":"How many times the agent tried this row."}}}},"browser_events":{"description":"Left out when the run page is read with diagnostics=false.","$ref":"#/components/schemas/ScenarioRecordingDiagnostics/properties/browser_events"},"dropped_browser_events":{"description":"Left out when the run page is read with diagnostics=false.","type":"integer","minimum":0},"replay_start_ms":{"type":["number","null"],"minimum":0,"description":"Step-clock offset where replay opens, after the first step loads its page."},"observations":{"type":"array","items":{"type":"object","required":["kind","summary","evidence"],"properties":{"kind":{"type":"string"},"summary":{"type":"string"},"evidence":{"type":"array","items":{"$ref":"#/components/schemas/ScenarioRunEvidenceLink"}}}}},"findings":{"$ref":"#/components/schemas/ScenarioRecordingDiagnostics/properties/findings"}}},"VerifyNetworkBody":{"type":"object","additionalProperties":false,"required":["state"],"properties":{"state":{"type":"string","enum":["captured","truncated","omitted"]},"content_type":{"type":"string","maxLength":128},"text":{"type":"string","maxLength":4096,"description":"Bounded redacted request or response payload."},"reason":{"type":"string","enum":["unsupported_content_type","size_limit","unavailable","unparseable","sensitive_content","capture_limit"]}}},"ScenarioRecordingDiagnostics":{"type":"object","required":["id","started_at","duration_ms","timing","steps","browser_events","dropped_browser_events","observations","evidence","findings"],"properties":{"id":{"type":"string"},"started_at":{"type":"string","format":"date-time","nullable":true},"duration_ms":{"type":"integer","nullable":true},"timing":{"type":"object","properties":{"browser_ms":{"type":"integer"},"agent_think_ms":{"type":"integer"},"queue_ms":{"type":"integer"},"action_count":{"type":"integer"}}},"steps":{"type":"array","description":"The steps that ran, with their offset into the recording.","items":{"type":"object","required":["id","status","start_ms","duration_ms"],"properties":{"id":{"type":"string"},"status":{"type":"string"},"start_ms":{"type":"integer"},"duration_ms":{"type":"integer"}}}},"browser_events":{"type":"array","maxItems":200,"items":{"type":"object","required":["sequence","offset_ms","kind","message","url"],"properties":{"actor_id":{"type":"string","description":"Browser actor that produced this event, when known."},"sequence":{"type":"integer"},"offset_ms":{"type":"integer"},"kind":{"type":"string","enum":["console","network"]},"message":{"type":"string"},"url":{"type":"string"},"level":{"type":"string"},"method":{"type":"string"},"resource_type":{"type":"string"},"status":{"type":"integer"},"duration_ms":{"type":"integer"},"request_body":{"$ref":"#/components/schemas/VerifyNetworkBody"},"response_body":{"$ref":"#/components/schemas/VerifyNetworkBody"}}}},"dropped_browser_events":{"type":"integer","minimum":0,"description":"Earlier browser events left out of browser_events."},"observations":{"type":"array","items":{"type":"object","required":["kind","summary"],"properties":{"kind":{"type":"string"},"summary":{"type":"string"}}}},"evidence":{"type":"array","items":{"type":"object","required":["id","kind","content_type","byte_size","captured_at","preview_url","download_url"],"properties":{"id":{"type":"string"},"kind":{"type":"string"},"content_type":{"type":"string"},"byte_size":{"type":"integer"},"captured_at":{"type":"string","format":"date-time"},"preview_url":{"type":"string","nullable":true},"download_url":{"type":"string","nullable":true}}}},"findings":{"type":"array","items":{"type":"object","required":["id","title","severity"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"severity":{"type":"string"}}}}}},"VerificationIntegrations":{"type":"object","required":["slack","github","gitlab","permissions"],"properties":{"slack":{"$ref":"#/components/schemas/VerificationSlackIntegration"},"github":{"$ref":"#/components/schemas/VerificationRepositoryIntegration"},"gitlab":{"$ref":"#/components/schemas/VerificationRepositoryIntegration"},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"}}},"VerificationSlackIntegration":{"type":"object","required":["available","workspace_name","account_connected","connect_url"],"properties":{"available":{"type":"boolean","description":"Whether this deployment has a Slack app configured"},"workspace_name":{"type":"string","nullable":true,"description":"The connected Slack workspace, or null when none is installed"},"account_connected":{"type":"boolean","description":"Whether the current user has linked their own Slack account"},"connect_url":{"type":"string"}}},"VerificationRepositoryIntegration":{"type":"object","required":["repository_count"],"properties":{"repository_count":{"type":"integer","description":"Connected repositories Verify can test pull or merge requests for"}}},"RecorderSetup":{"type":"object","required":["organization"],"properties":{"organization":{"$ref":"#/components/schemas/CliLoginOrganization"}}},"RecorderProjectOptions":{"type":"object","required":["permissions","personas","environments"],"properties":{"permissions":{"type":"object","required":["manage"],"properties":{"manage":{"type":"boolean"}}},"personas":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}}},"environments":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}}}},"ManagedBinaryManifest":{"type":"object","additionalProperties":false,"required":["schema_version","installer_version","platform","arch","format","executable","launch_args","window_title","version_id","preparation_id","configuration_digest","package_sha256","package_size","strategy","image_reference","image_content_digest","base_image","readiness_timeout_seconds","max_expanded_bytes","max_entries"],"properties":{"schema_version":{"const":1},"installer_version":{"const":"1"},"platform":{"const":"linux"},"arch":{"const":"amd64"},"format":{"enum":["deb","tar.gz"]},"executable":{"type":"string","minLength":1,"maxLength":1000},"launch_args":{"type":"array","maxItems":64,"items":{"type":"string","maxLength":1000}},"window_title":{"type":"string","minLength":1,"maxLength":200},"version_id":{"type":"string","pattern":"^vbinaryversion_"},"preparation_id":{"type":"string","pattern":"^vbinaryprep_"},"configuration_digest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"package_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"package_size":{"type":"integer","minimum":1,"maximum":1073741824},"strategy":{"enum":["prepared_image","startup_extract"]},"image_reference":{"type":"string","pattern":"^sandbox/[a-zA-Z0-9_.-]+:(?!latest$)[a-zA-Z0-9_.-]+$"},"image_content_digest":{"type":["string","null"],"pattern":"^sha256:[0-9a-f]{64}$"},"base_image":{"type":"string"},"readiness_timeout_seconds":{"const":60},"max_expanded_bytes":{"const":4294967296},"max_entries":{"const":100000}}},"VerifyBinaryConfiguration":{"type":"object","required":["platform","arch","format","executable","launch_args","window_title"],"properties":{"platform":{"const":"linux"},"arch":{"const":"amd64"},"format":{"enum":["deb","tar.gz"]},"executable":{"type":"string","minLength":1,"maxLength":1000},"launch_args":{"type":"array","maxItems":64,"items":{"type":"string","maxLength":1000}},"window_title":{"type":"string","minLength":1,"maxLength":200}}},"VerifyBinaryPreparation":{"type":"object","required":["id","status","base_image","installer_version","image_reference","image_digest","failure_phase","safe_error","receipt","started_at","ready_at"],"properties":{"id":{"type":"string"},"status":{"type":"string","enum":["queued","acquiring","preparing","ready","failed","canceled"]},"base_image":{"type":"string"},"installer_version":{"type":"string"},"image_reference":{"type":["string","null"]},"image_digest":{"type":["string","null"]},"failure_phase":{"type":["string","null"]},"safe_error":{"type":["string","null"]},"receipt":{"type":["object","null"],"additionalProperties":true},"started_at":{"type":["string","null"]},"ready_at":{"type":["string","null"]}}},"VerifyBinaryVersion":{"type":"object","required":["id","status","package_sha256","package_size","configuration_digest","configuration","retryable","deletable","created_at","preparations","cancelable","environment_uses"],"properties":{"id":{"type":"string"},"status":{"type":"string","enum":["queued","acquiring","preparing","ready","failed","canceled"]},"package_sha256":{"type":["string","null"]},"package_size":{"type":["integer","null"]},"configuration_digest":{"type":"string"},"configuration":{"$ref":"#/components/schemas/VerifyBinaryConfiguration"},"retryable":{"type":"boolean"},"deletable":{"type":"boolean"},"created_at":{"type":"string"},"preparations":{"type":"array","items":{"$ref":"#/components/schemas/VerifyBinaryPreparation"}},"cancelable":{"type":"boolean"},"environment_uses":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}}}},"VerifyBinary":{"type":"object","required":["id","project_id","slug","name","archived_at","created_at","latest_version","accepts_versions"],"properties":{"id":{"type":"string"},"project_id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"archived_at":{"type":["string","null"]},"created_at":{"type":"string"},"latest_version":{"anyOf":[{"type":"object","required":["id","status"],"properties":{"id":{"type":"string"},"status":{"type":"string","enum":["queued","acquiring","preparing","ready","failed","canceled"]}}},{"type":"null"}]},"accepts_versions":{"type":"boolean"}}},"VerifyBinaryRegistration":{"type":"object","required":["binary","version","operation"],"properties":{"binary":{"$ref":"#/components/schemas/VerifyBinary"},"version":{"$ref":"#/components/schemas/VerifyBinaryVersion"},"operation":{"$ref":"#/components/schemas/VerifyBinaryPreparation"}}},"VerifyBinaryDirectory":{"type":"object","required":["project","binaries","pagination","permissions","needs_refresh"],"properties":{"project":{"$ref":"#/components/schemas/ProjectHeader"},"binaries":{"type":"array","items":{"$ref":"#/components/schemas/VerifyBinary"}},"pagination":{"$ref":"#/components/schemas/VerifyRunsPagination"},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"},"needs_refresh":{"type":"boolean"}}},"VerifyBinaryPage":{"type":"object","required":["binary","permissions","versions","pagination","needs_refresh"],"properties":{"version_defaults":{"anyOf":[{"$ref":"#/components/schemas/VerifyBinaryConfiguration"},{"type":"null"}]},"binary":{"$ref":"#/components/schemas/VerifyBinary"},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/VerifyBinaryVersion"}},"pagination":{"$ref":"#/components/schemas/VerifyRunsPagination"},"needs_refresh":{"type":"boolean"}}},"VerifyBinaryVersionPage":{"type":"object","required":["version","permissions"],"properties":{"version":{"$ref":"#/components/schemas/VerifyBinaryVersion"},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"}}},"VerifyBinaryVersionRegistration":{"type":"object","required":["version","operation"],"properties":{"version":{"$ref":"#/components/schemas/VerifyBinaryVersion"},"operation":{"$ref":"#/components/schemas/VerifyBinaryPreparation"}}},"VerifyBinaryVersionsPage":{"type":"object","required":["versions","pagination","permissions"],"properties":{"versions":{"type":"array","items":{"$ref":"#/components/schemas/VerifyBinaryVersion"}},"pagination":{"$ref":"#/components/schemas/VerifyRunsPagination"},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"}}},"VerifyBinaryLogs":{"type":"object","required":["version_id","operations"],"properties":{"version_id":{"type":"string"},"operations":{"type":"array","items":{"$ref":"#/components/schemas/VerifyBinaryPreparation"}}}},"VerifyBinaryCreate":{"type":"object","required":["slug","name","download_url","format","executable","window_title","idempotency_key"],"properties":{"slug":{"type":"string"},"name":{"type":"string"},"download_url":{"type":"string"},"download_secret":{"type":"string"},"sha256":{"type":"string"},"platform":{"const":"linux"},"arch":{"const":"amd64"},"format":{"enum":["deb","tar.gz"]},"executable":{"type":"string","minLength":1,"maxLength":1000},"launch_args":{"type":"array","maxItems":64,"items":{"type":"string","maxLength":1000}},"window_title":{"type":"string","minLength":1,"maxLength":200},"idempotency_key":{"type":"string"}}},"VerifyBinaryVersionCreate":{"type":"object","required":["download_url","idempotency_key"],"properties":{"download_url":{"type":"string"},"download_secret":{"type":"string"},"sha256":{"type":"string"},"platform":{"const":"linux"},"arch":{"const":"amd64"},"format":{"enum":["deb","tar.gz"]},"executable":{"type":"string","minLength":1,"maxLength":1000},"launch_args":{"type":"array","maxItems":64,"items":{"type":"string","maxLength":1000}},"window_title":{"type":"string","minLength":1,"maxLength":200},"idempotency_key":{"type":"string"}}},"VerifyBinaryChoice":{"type":"object","required":["selector","label"],"properties":{"selector":{"type":"string"},"label":{"type":"string"}}},"VerifyBinarySummaryPage":{"type":"object","required":["binary","permissions"],"properties":{"binary":{"$ref":"#/components/schemas/VerifyBinary"},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"}}},"ManagedDesktopOptions":{"type":"object","additionalProperties":false,"properties":{"description":{"type":"string","minLength":1,"maxLength":4000},"setup_command":{"type":"string","maxLength":4000},"artifact_paths":{"type":"array","maxItems":20,"items":{"type":"string","pattern":"^/home/cua/","maxLength":1000}}}},"VerifyBrowserSession":{"type":"object","required":["id","account_id","status","origin","expires_at","viewer_url"],"properties":{"id":{"type":"string"},"account_id":{"type":"string"},"status":{"type":"string","enum":["pending","starting","ready","saved","closed","failed"]},"origin":{"type":"string"},"expires_at":{"type":"string","format":"date-time"},"viewer_url":{"type":"string","nullable":true,"description":"Owner-only bearer link. Do not share; expires with the browser lease."}}},"VerifyCodeRepairSettings":{"type":"object","required":["available","enabled","enabled_at","operator_user_id","repository_slug","daily_limit"],"properties":{"available":{"type":"boolean"},"enabled":{"type":"boolean"},"enabled_at":{"type":"string","format":"date-time","nullable":true},"operator_user_id":{"type":"string","nullable":true},"repository_slug":{"type":"string","nullable":true},"daily_limit":{"type":"integer"}}},"VerifyCodeRepair":{"type":"object","required":["id","scenario_run_id","trigger_kind","launch_state","base_sha","roder_thread_id","roder_turn_id","failure_code","cancel_requested","task"],"properties":{"id":{"type":"string"},"scenario_run_id":{"type":"string"},"trigger_kind":{"type":"string","enum":["manual","automatic"]},"launch_state":{"type":"string","enum":["queued","starting","started","unknown","failed","cancelled"]},"base_sha":{"type":"string"},"roder_thread_id":{"type":"string","nullable":true},"roder_turn_id":{"type":"string","nullable":true},"failure_code":{"type":"string","nullable":true},"cancel_requested":{"type":"boolean"},"task":{"type":"object","nullable":true,"required":["turn_id","status","text"],"properties":{"turn_id":{"type":"string"},"status":{"type":"string"},"text":{"type":"string"}}}}},"VerifyDeepScanContext":{"type":"object","required":["id","mode","title","onboarding","goal","status","max_seconds","max_testers","concurrency","created_at","finished_at","deadline_at","observed_at","environment_name","project_id","report","reproduction_of","agents","running_agent_count","permissions"],"properties":{"id":{"type":"string"},"mode":{"type":"string","enum":["deep_scan"]},"title":{"type":"string","description":"The page's title; the workspace's included scan is named for the app it tested, as in `Free scan of acme.example.com`."},"startup_retryable":{"type":"boolean","description":"Whether the browser can retry startup within this run's remaining budget."},"onboarding":{"type":"boolean","description":"Whether this is the workspace's included Deep Scan."},"goal":{"type":"string"},"status":{"type":"string","enum":["discovering","testing","completed","partial","canceled"]},"max_seconds":{"type":"integer"},"max_testers":{"type":"integer"},"concurrency":{"type":"integer"},"created_at":{"type":"string"},"finished_at":{"type":"string","nullable":true},"deadline_at":{"type":"string"},"observed_at":{"type":"string"},"environment_name":{"type":"string"},"project_id":{"type":"string","nullable":true},"report":{"type":"object","required":["next_action"],"properties":{"next_action":{"type":"string","nullable":true,"enum":["view","view_progress","retry","create",null],"description":"Null while the report is locked behind a plan."}}},"reproduction_of":{"$ref":"#/components/schemas/VerifyExploration/properties/reproduction_of"},"running_agent_count":{"type":"integer","minimum":0},"agents":{"type":"array","items":{"type":"object","required":["id","ordinal","role","charter","title","status","task_group"],"properties":{"id":{"type":"string"},"ordinal":{"type":"integer"},"role":{"type":"string","enum":["orchestrator","breakdown","qa","ui"]},"charter":{"type":"string"},"title":{"type":"string"},"status":{"type":"string"},"task_group":{"type":"string","enum":["working","attention","queued","completed","stopped","setup"]}}}},"permissions":{"type":"object","required":["manage"],"properties":{"manage":{"type":"boolean"}}}}},"VerifyDeepScanFindings":{"type":"object","required":["id","title","mode","status","project_id","web_url","findings","findings_fix_prompt","finding_ids","reproduction_of","reproductions","permissions","finding_count","priority_counts","priority","unlock","free_findings_pending","reruns_available"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"mode":{"type":"string","enum":["deep_scan"]},"status":{"type":"string","enum":["discovering","testing","completed","partial","canceled"]},"project_id":{"type":"string","nullable":true},"web_url":{"type":"string"},"findings":{"type":"array","items":{"$ref":"#/components/schemas/VerifyExplorationFinding"}},"findings_fix_prompt":{"type":"string","nullable":true},"finding_count":{"type":"integer","description":"Findings at every priority; findings lists only the listed priority."},"priority_counts":{"type":"object","required":["high","medium","low"],"properties":{"high":{"type":"integer"},"medium":{"type":"integer"},"low":{"type":"integer"}}},"priority":{"type":"string","nullable":true,"enum":["high","medium","low",null],"description":"The priority findings are narrowed to, or null when they are not narrowed."},"finding_ids":{"type":"array","description":"Original team order used by legacy hash links and rerun indices.","items":{"type":"string"}},"reproduction_of":{"type":"object","nullable":true,"required":["id"],"properties":{"id":{"type":"string"}}},"reproductions":{"$ref":"#/components/schemas/VerifyExploration/properties/reproductions"},"unlock":{"type":"object","description":"Whether a paid plan would unlock some of this scan's findings, and whether this person may choose one.","required":["available","locked_count","can_manage","organization_id","url","package_options"],"properties":{"available":{"type":"boolean","description":"True while some findings stay locked and Checkout can start for the workspace; anyone but an owner is asked to find one."},"locked_count":{"type":"integer","minimum":0,"description":"Locked findings at every priority."},"can_manage":{"type":"boolean","description":"Whether this person may choose a plan; only workspace owners manage billing."},"organization_id":{"type":"string"},"url":{"type":"string","description":"The findings page to return to, and to share, for unlocking."},"plan_selection_available":{"type":"boolean"},"package_selection_customized":{"type":"boolean"},"custom_pricing_available":{"type":"boolean"},"package_options":{"type":"array","description":"Plans the owner can choose at Checkout; empty when the workspace's assigned plan is used, or nothing is locked.","items":{"$ref":"#/components/schemas/BillingPackage"}}}},"free_findings_pending":{"type":"boolean","description":"Whether a scan with locked findings has yet to choose which are free, so every row is locked for now. Keep checking while true; reviews don't affect it."},"reruns_available":{"type":"boolean","description":"Whether findings can be rerun; a scan with locked findings waits for a paid plan."},"permissions":{"type":"object","required":["manage"],"properties":{"manage":{"type":"boolean"}}}}},"VerifyDeepScanMappedFlows":{"type":"object","required":["environment_id","revision_id","account_id","flow_map"],"properties":{"environment_id":{"type":"string"},"revision_id":{"type":"string","nullable":true},"account_id":{"type":"string","nullable":true},"flow_map":{"type":"object","nullable":true,"required":["observed_at","truncated","flows"],"properties":{"observed_at":{"type":"string"},"truncated":{"type":"boolean"},"flows":{"type":"array","items":{"type":"object","required":["id","name","purpose","source"],"properties":{"id":{"type":"string","nullable":true},"name":{"type":"string"},"purpose":{"type":"string"},"source":{"type":"string","enum":["qualified_journey","discovery_report"]}}}}}}}},"VerifyDeepScanOptions":{"type":"object","required":["environments","permissions","discovery_defaults"],"properties":{"environment_query":{"type":"string","description":"The search the environments match. Older API releases omit this additive field."},"environments_has_more":{"type":"boolean","description":"More environments match than the 25 configured environments and 25 previews returned; false when environment_query was omitted. Older API releases omit this additive field."},"capacity":{"type":"object","description":"Shared capacity when supplied by the API release. Older API releases omit this additive field during independent web and API rollouts.","required":["concurrency_limit","active_runs","available_slots","daily_run_limit","daily_runs_used","daily_runs_remaining","observed_at"],"properties":{"concurrency_limit":{"type":["integer","null"],"description":"Operator browser limit; null means no organization concurrency cap."},"active_runs":{"type":"integer"},"available_slots":{"type":["integer","null"],"description":"Available operator-limited slots; null means no organization concurrency cap."},"daily_run_limit":{"type":"integer"},"daily_runs_used":{"type":"integer"},"daily_runs_remaining":{"type":"integer"},"observed_at":{"type":"string","format":"date-time"}}},"discovery_defaults":{"$ref":"#/components/schemas/VerifyDiscoveryDefaults"},"deep_scan_defaults":{"description":"A signed-out browser Deep Scan's team when launched without budgets, before an environment is chosen. Older API releases omit this additive field.","allOf":[{"$ref":"#/components/schemas/VerifyDiscoveryDefaults"}]},"permissions":{"type":"object","required":["manage"],"properties":{"manage":{"type":"boolean"}}},"environments":{"type":"array","items":{"type":"object","required":["id","name","target_url","accounts","flow_map"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"target_url":{"type":"string","nullable":true},"preview":{"type":"boolean","description":"A short-lived pull request or branch deployment, listed after configured environments. Older API releases omit this additive field during independent web and API rollouts."},"flow_map":{"type":"object","nullable":true,"description":"Flows from the newest discovery; null until discovery has recorded some.","required":["observed_at","flows"],"properties":{"observed_at":{"type":"string"},"flows":{"type":"array","items":{"type":"object","required":["name","purpose"],"properties":{"name":{"type":"string"},"purpose":{"type":"string"}}}}}},"personas":{"type":"array","items":{"type":"object","required":["id","name","role","account_id"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"role":{"type":"string"},"account_id":{"type":["string","null"]}}}},"deep_scan_defaults":{"description":"The team a signed-out Deep Scan of this environment gets without budgets. Older API releases omit this additive field.","allOf":[{"$ref":"#/components/schemas/VerifyDiscoveryDefaults"}]},"accounts":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"deep_scan_defaults":{"description":"The team a Deep Scan of this environment with this login gets without budgets. Older API releases omit this additive field.","allOf":[{"$ref":"#/components/schemas/VerifyDiscoveryDefaults"}]}}}}}}}}},"VerifyDreamsPage":{"type":"object","required":["permissions","schedule","waiting_runs","dreams","pagination"],"properties":{"permissions":{"type":"object","required":["manage"],"properties":{"manage":{"type":"boolean"}}},"schedule":{"$ref":"#/components/schemas/VerifyDreamSchedule"},"waiting_runs":{"type":"integer","minimum":0,"description":"Finished runs and blocked executions the next dream will review"},"dreams":{"type":"array","items":{"$ref":"#/components/schemas/VerifyDreamSummary"}},"pagination":{"$ref":"#/components/schemas/VerifyRunsPagination"}}},"VerifyDreamPage":{"type":"object","required":["permissions","dream","tab","counts","changes","runs","pagination"],"properties":{"permissions":{"type":"object","required":["manage"],"properties":{"manage":{"type":"boolean"}}},"dream":{"$ref":"#/components/schemas/VerifyDreamDetail"},"tab":{"type":"string","enum":["changes","runs"]},"counts":{"type":"object","required":["changes","runs"],"properties":{"changes":{"type":"integer","minimum":0,"description":"Changes the dream made"},"runs":{"type":"integer","minimum":0,"description":"Every run the dream covered, reviewed or skipped, so it can exceed the dream's reviewed count"}}},"changes":{"type":"array","description":"One page of changes when tab is changes; empty otherwise","items":{"$ref":"#/components/schemas/VerifyDreamChange"}},"runs":{"type":"array","description":"One page of covered runs, reviewed or skipped, when tab is runs; empty otherwise","items":{"$ref":"#/components/schemas/VerifyDreamRun"}},"pagination":{"$ref":"#/components/schemas/VerifyRunsPagination"}}},"VerifyDreamSchedule":{"type":"object","required":["timezone","start_hour","next_at"],"properties":{"timezone":{"type":"string","description":"Organization IANA timezone dreams are scheduled in"},"start_hour":{"type":"integer","minimum":0,"maximum":23,"description":"Local 24-hour clock hour a dream starts"},"next_at":{"type":"string","format":"date-time","description":"Next scheduled start"}}},"VerifyDreamSummary":{"type":"object","required":["id","reviewed_date","timezone","scope_name","phase","attention","reviewed","skipped","changes","completed_at","error_code","reason"],"properties":{"id":{"type":"string","description":"Public id used in the dream's URL"},"reviewed_date":{"type":"string","format":"date","description":"Local day whose finished runs it reviewed"},"timezone":{"type":"string","description":"Organization timezone the dream used"},"scope_name":{"type":"string","description":"Project or unassigned environment name"},"phase":{"type":"string","enum":["queued","running","stalled","paused","stopped","completed","stopped_early"],"description":"Where the dream is. queued: waiting for a worker. running: a worker holds it. stalled: marked running but no worker holds it. paused: it hit an error and the periodic sweep still resumes it. stopped: it hit an error and is no longer retried automatically; only an administrator can resume it. completed: finished normally. stopped_early: finished, but ended before reviewing everything because its project or environment became unavailable."},"attention":{"type":"boolean","description":"The dream skipped at least one run, which will not be retried"},"reviewed":{"type":"integer","minimum":0,"description":"Finished runs and blocked executions reviewed, not counting skipped ones"},"skipped":{"type":"integer","minimum":0,"description":"Runs skipped after repeated rejected review output"},"changes":{"type":"integer","minimum":0,"description":"Knowledge and memory entries created, updated or archived"},"completed_at":{"type":"string","format":"date-time","nullable":true},"error_code":{"type":"string","nullable":true,"description":"Diagnostic code from the last failure, or from a dream that stopped early; not display copy, show reason instead"},"reason":{"type":"string","nullable":true,"description":"Plain-language explanation of the phase: the cause and what happens next. Null for queued, running and completed dreams."}}},"VerifyDreamDetail":{"allOf":[{"$ref":"#/components/schemas/VerifyDreamSummary"},{"type":"object","required":["window_start","window_end","started_at","last_activity_at","batches","resumable"],"properties":{"window_start":{"type":"string","format":"date-time","description":"Start of the reviewed local day"},"window_end":{"type":"string","format":"date-time","description":"End of the reviewed local day"},"started_at":{"type":"string","format":"date-time"},"last_activity_at":{"type":"string","format":"date-time"},"batches":{"type":"integer","minimum":0,"description":"Review batches completed so far"},"resumable":{"type":"boolean","description":"The dream failed or was interrupted and no worker holds it, so an administrator can resume it now"}}}]},"VerifyDreamChange":{"type":"object","required":["id","operation","library","entry_id","title","reason","created_at","archived","previous","current","restore","can_add_back","runs","runs_total"],"properties":{"id":{"type":"string"},"operation":{"type":"string","enum":["create","update","archive"]},"library":{"type":"string","enum":["knowledge","memory"]},"entry_id":{"type":"string","description":"Public id of the knowledge document or memory"},"title":{"type":"string","description":"The entry's current title"},"reason":{"type":"string","description":"Why the dream made this change"},"created_at":{"type":"string","format":"date-time"},"archived":{"type":"boolean","description":"The entry is archived now"},"previous":{"description":"The entry before this change; null when the change created it","oneOf":[{"type":"object","required":["title","markdown","finding","response","workaround"],"properties":{"title":{"type":"string","nullable":true},"markdown":{"type":"string","nullable":true,"description":"Knowledge documents only"},"finding":{"type":"string","nullable":true,"description":"Memories only"},"response":{"type":"string","nullable":true,"description":"Memories only"},"workaround":{"type":"string","nullable":true,"description":"Memories only"}}},{"type":"null"}]},"current":{"description":"A memory as it is now, since memories have no page of their own; null for documents, which open their own page","oneOf":[{"type":"object","required":["title","finding","response","workaround"],"properties":{"title":{"type":"string"},"finding":{"type":"string"},"response":{"type":"string","nullable":true},"workaround":{"type":"string","nullable":true}}},{"type":"null"}]},"can_add_back":{"type":"boolean","description":"True only when the dream archived this knowledge document, it is still archived, its previous title and Markdown were kept, and no available document in the project already has that title (compared ignoring case). Then its previous content can be added back as a new document. Always false for memories and for any other operation"},"restore":{"description":"Present only when restoring this exact previous version is allowed","oneOf":[{"type":"object","required":["expected_digest"],"properties":{"expected_digest":{"type":"string","description":"Send as expected_digest when updating the document"}}},{"type":"null"}]},"runs":{"type":"array","maxItems":5,"description":"Runs this change cites, at most five","items":{"$ref":"#/components/schemas/VerifyDreamRunRef"}},"runs_total":{"type":"integer","minimum":0,"description":"All runs this change cites"}}},"VerifyDreamRunRef":{"type":"object","required":["id","kind","title","outcome","environment_name","observed_at","exploration_id","execution_id"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["discovery","deep_scan","scenario","triage","pull_request"]},"title":{"type":"string"},"outcome":{"type":"string","description":"The run's state as recorded, such as completed, partial, failed, passed or blocked"},"environment_name":{"type":"string","nullable":true},"observed_at":{"type":"string","format":"date-time","description":"When the run finished, a person triaged the finding, the pull request merged, or Verify first read an open pull request head"},"exploration_id":{"type":"string","nullable":true,"description":"Discovery or Deep Scan page id; open /explorations/{id} for kind discovery and /deepscan/{id} for kind deep_scan"},"execution_id":{"type":"string","nullable":true,"description":"Project run page id for a saved Scenario execution or a pull request's Verify run; open /runs/{id}"}}},"VerifyDreamRun":{"allOf":[{"$ref":"#/components/schemas/VerifyDreamRunRef"},{"type":"object","required":["coverage","reason"],"properties":{"coverage":{"type":"string","enum":["reviewed","skipped","ineligible","pending"]},"reason":{"type":"string","nullable":true,"description":"Plain-language sentence for why a skipped run was not reviewed, null for other runs"}}}]},"MessagingTargetSource":{"type":"object","required":["kind","resolved_at"],"properties":{"kind":{"type":"string","enum":["configured","comment","ci","deployment"]},"resolved_at":{"type":"string","format":"date-time"},"reference":{"type":"string"},"commit":{"type":"string"},"setting_id":{"type":"string"},"setting_version":{"type":"string"}}},"EnvironmentDetail":{"allOf":[{"$ref":"#/components/schemas/Environment"},{"type":"object","required":["messaging_tester_number","messaging_problem","messaging_conversation","conversation_only_messaging","messaging_source"],"properties":{"conversation_only_messaging":{"type":"boolean"},"messaging_tester_number":{"type":"string","nullable":true,"description":"One configured tester number. Copied to each preview; may be overridden locally before preparation."},"messaging_problem":{"type":"string","nullable":true},"messaging_conversation":{"allOf":[{"$ref":"#/components/schemas/VerifyMessagingSetup"}],"nullable":true},"messaging_source":{"allOf":[{"$ref":"#/components/schemas/MessagingTargetSource"}],"nullable":true}}}]},"VerifySignInBrowser":{"type":"object","required":["status","deadline_at","attempt"],"properties":{"status":{"type":"string","enum":["discovering","testing","completed","partial","canceled"]},"deadline_at":{"type":"string","format":"date-time"},"attempt":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/VerifyExplorationAgent"}]}}},"VerifyExplorationToolActivity":{"type":"object","additionalProperties":false,"required":["sequence","name","status"],"properties":{"sequence":{"type":"integer","minimum":1,"maximum":9007199254740991},"name":{"type":"string","maxLength":80,"pattern":"^verify_[a-z_]+$"},"action":{"type":"string","enum":["navigate","click","fill","type","press","scroll","hover","select","wait","back","forward","reload"]},"status":{"type":"string","enum":["running","completed","failed"]},"input":{"type":"string","maxLength":4096,"description":"Scrubbed tool arguments, truncated to 4096 UTF-8 bytes. Absent on older workers."},"output":{"type":"string","maxLength":4096,"description":"Scrubbed tool result, truncated to 4096 UTF-8 bytes. Absent while pending or on older workers."}}},"VerifyExplorationThreadEntry":{"oneOf":[{"type":"object","additionalProperties":false,"required":["kind","sequence","text"],"properties":{"kind":{"type":"string","enum":["reasoning"]},"sequence":{"type":"integer","minimum":1,"maximum":9007199254740991},"text":{"type":"string","maxLength":4096}}},{"type":"object","additionalProperties":false,"required":["kind","sequence","name","status"],"properties":{"kind":{"type":"string","enum":["tool"]},"sequence":{"type":"integer","minimum":1,"maximum":9007199254740991},"name":{"type":"string","maxLength":80,"pattern":"^verify_[a-z_]+$"},"action":{"type":"string","enum":["navigate","click","fill","type","press","scroll","hover","select","wait","back","forward","reload"]},"status":{"type":"string","enum":["running","completed","failed"]},"input":{"type":"string","maxLength":4096,"description":"Scrubbed tool arguments. Absent on older workers."},"output":{"type":"string","maxLength":4096,"description":"Scrubbed tool result. Absent while pending or on older workers."}}}]},"VerifyExplorationModelActivity":{"type":"object","additionalProperties":false,"required":["sequence","phase","summary","updated_at"],"properties":{"sequence":{"type":"integer"},"phase":{"type":"string","enum":["thinking","acting","working","retrying"]},"summary":{"type":"string"},"summary_sequence":{"type":"integer","description":"Stable sequence of the current public summary's first chunk; absent on older workers."},"updated_at":{"type":"string","format":"date-time"},"tools":{"description":"Up to twelve recent tool calls with scrubbed arguments and results when captured by the worker.","type":"array","maxItems":12,"items":{"$ref":"#/components/schemas/VerifyExplorationToolActivity"}}}},"VerifyExplorationList":{"type":"object","additionalProperties":false,"required":["active","explorations","pagination","permissions"],"properties":{"permissions":{"type":"object","additionalProperties":false,"required":["manage"],"properties":{"manage":{"type":"boolean"}}},"active":{"type":"array","items":{"$ref":"#/components/schemas/VerifyExplorationSummary"}},"explorations":{"type":"array","items":{"$ref":"#/components/schemas/VerifyExplorationSummary"}},"pagination":{"$ref":"#/components/schemas/VerifyRunsPagination"},"launch_options":{"description":"Present only when launch was requested by an admin","$ref":"#/components/schemas/VerifyDeepScanOptions"}}},"VerifyExplorationSummary":{"type":"object","additionalProperties":false,"required":["id","title","status","environment_name","check_count","finding_count","started_at","finished_at","duration_ms"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"status":{"type":"string","enum":["discovering","testing","completed","partial","canceled"]},"environment_name":{"type":"string"},"check_count":{"type":"integer","minimum":0},"finding_count":{"type":"integer","minimum":0},"started_at":{"type":"string","format":"date-time"},"finished_at":{"type":"string","format":"date-time","nullable":true},"duration_ms":{"type":"integer","minimum":0,"nullable":true},"deadline_at":{"type":"string","format":"date-time","description":"When the team's time limit ends. Older API releases omit this additive field during independent web and API rollouts."},"credential_name":{"type":"string","nullable":true,"description":"The credential the team signed in with, by its saved name if it was deleted; null for public access. Older API releases omit this additive field."},"scenario_count":{"type":"integer","minimum":0,"description":"Scenarios saved from this discovery. Older API releases omit this additive field."},"scenarios_pending":{"type":"boolean","description":"Scenarios are still being prepared, so scenario_count may still grow. Older API releases omit this additive field."}}},"VerifyExplorationProgress":{"type":"object","required":["id","goal","status","deadline_at","environment_id","environment_name","agents"],"properties":{"id":{"type":"string"},"goal":{"type":"string"},"status":{"type":"string","enum":["discovering","testing","completed","partial","canceled"]},"deadline_at":{"type":"string"},"environment_id":{"type":"string"},"environment_name":{"type":"string"},"project_id":{"type":"string","nullable":true},"agents":{"type":"array","items":{"type":"object","required":["id","role","charter","status","pages","checks","issue_checks","blocked_checks","findings"],"properties":{"id":{"type":"string"},"role":{"type":"string"},"charter":{"type":"string"},"status":{"type":"string"},"failure_code":{"type":"string","nullable":true},"pages":{"type":"integer"},"checks":{"type":"integer"},"issue_checks":{"type":"integer"},"blocked_checks":{"type":"integer"},"findings":{"type":"integer"}}}}}},"VerifyExplorationChatMessage":{"type":"object","required":["id","text","author_id","author_name","created_at","agent_id","after_sequence","mode"],"properties":{"id":{"type":"string"},"text":{"type":"string"},"author_id":{"type":"string"},"author_name":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"agent_id":{"type":"string"},"after_sequence":{"type":"integer","minimum":0},"delivered_at":{"type":"string","format":"date-time"},"mode":{"type":"string","enum":["steer","continue"]}}},"VerifyExploration":{"type":"object","properties":{"onboarding":{"type":"boolean","description":"Whether this is the workspace's free first discovery, started by setup."},"paywalled":{"type":"boolean","description":"Whether this is the workspace's included Deep Scan (verify_onboarding_deep_scan), or a rerun of it, while the workspace has not paid. Its chat and report are withheld and its findings list only free findings and finding stubs; its agents are listed as on any run."},"unlock":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/VerifyDeepScanFindings/properties/unlock"}],"description":"Once a paywalled scan ends, whether a paid plan would unlock its locked findings and whether this person may choose one, as on its findings page. Null while it runs and for other runs."},"finding_count":{"type":"integer","minimum":0,"description":"Findings at every priority, locked ones included."},"priority_counts":{"$ref":"#/components/schemas/VerifyDeepScanFindings/properties/priority_counts"},"covered_areas":{"type":"array","items":{"type":"string"},"description":"Titles of the testers that reported checks, in team order; areas assigned to testers that never ran are left out."},"time_limit_reached":{"type":"boolean","description":"Whether a partial run ended because it used its whole time budget, rather than stopping early."},"ended_early":{"type":"boolean","description":"Whether a partial run stopped before its team did its work: no tester completed or reported a check and no agent reported a finding, as when the lead stopped at sign-in, or inference failed. False for a team that ran its course with a tester short of completed."},"demo_project":{"type":"object","nullable":true,"description":"The workspace's copy of the demo project, linked from the free first discovery as an example; null for other runs or without one.","required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"}}},"startup_retryable":{"type":"boolean","description":"Failed browser startup can be retried without extending the original deadline or tester budget."},"can_continue":{"type":"boolean","description":"Whether a finished run can be resumed through the orchestrator."},"next_scan_improvements":{"type":"array","items":{"type":"string","enum":["test_access","repository","subscribe"]},"description":"The optional setup the first scan's page offers for a better next scan, in order: a test account for a run without one, a repository except for a Deep Scan, and a plan."},"sign_in_outcome":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/VerifySignInOutcome"}],"description":"A sign-in check's outcome; null for other runs."},"sign_in_question":{"type":"string","nullable":true,"description":"What a sign-in check's agent asked the person while it needs their answer; null otherwise and for other runs."},"sign_in_needs_answer":{"type":"boolean","description":"Whether a sign-in check needs the person's answer next: its agent waits in its browser with no reply on the way, or the check ended on an unanswered question and an answer starts the agent again. False for other runs."},"chat_messages":{"type":"array","items":{"$ref":"#/components/schemas/VerifyExplorationChatMessage"}},"agent_filters":{"type":"object","description":"Status counts and matching agent IDs for every filter in this live snapshot.","required":["all"],"properties":{"all":{"$ref":"#/components/schemas/VerifyExplorationAgentFilter"}},"additionalProperties":{"$ref":"#/components/schemas/VerifyExplorationAgentFilter"}},"scenario_generation":{"$ref":"#/components/schemas/VerifyExplorationScenarioGeneration"},"observed_at":{"type":"string","description":"Time this run snapshot was read; distinct from browser activity timestamps."},"report":{"$ref":"#/components/schemas/VerifyExplorationReport"},"related_explorations":{"type":"array","items":{"$ref":"#/components/schemas/VerifyReportRunOption"}},"id":{"type":"string"},"mode":{"type":"string","enum":["exploration","deep_scan","sign_in_check"]},"title":{"type":"string","description":"The page's title; the workspace's included Deep Scan is named for the app it tested, as in `Free scan of acme.example.com`."},"goal":{"type":"string"},"status":{"type":"string","enum":["discovering","testing","completed","partial","canceled"]},"max_seconds":{"type":"integer"},"max_testers":{"type":"integer"},"concurrency":{"type":"integer"},"created_at":{"type":"string"},"finished_at":{"type":"string","nullable":true},"deadline_at":{"type":"string"},"environment_id":{"type":"string"},"environment_name":{"type":"string"},"web_url":{"type":"string","description":"The run's page in the Composal web app"},"project_id":{"type":"string","nullable":true,"description":"Set when the exploration targets a project environment."},"reproduction_of":{"type":"object","nullable":true,"description":"The Deep Scan or Discovery and reported bug this scan reruns in a fresh browser.","required":["id","title","deep_scan","finding_index","finding_title"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"deep_scan":{"type":"boolean","description":"False when the rerun checks a bug a Discovery reported."},"finding_index":{"type":"integer"},"finding_title":{"type":"string","nullable":true}}},"explorer_activity":{"type":"object","description":"What the team is doing now. The coordinator is not counted as an area.","required":["phase","active_areas","areas"],"properties":{"phase":{"type":"string","enum":["mapping","coordinating","investigating","exploring","reviewing","finished"],"description":"Discovery maps the app; Deep Scan coordinates investigations from existing knowledge. Workers investigate their areas and the coordinator reviews their reports."},"active_areas":{"type":"integer","description":"Areas in progress or waiting to start."},"areas":{"type":"integer","description":"Areas the explorers were given."}}},"findings_fix_prompt":{"type":"string","nullable":true,"description":"One coding-agent prompt covering every finding, most severe first. Null when there are no findings."},"saves_scenarios":{"type":"boolean","description":"Whether this exploration has started saving scenarios. Deep scans never do."},"scannable_flows":{"type":"array","description":"Flows a finished exploration recorded that deep scans can start from.","items":{"type":"object","required":["name","purpose"],"properties":{"name":{"type":"string"},"purpose":{"type":"string"}}}},"huntable_flows":{"type":"array","deprecated":true,"description":"Deprecated alias of scannable_flows, kept for released CLIs.","items":{"type":"object","required":["name","purpose"],"properties":{"name":{"type":"string"},"purpose":{"type":"string"}}}},"reproductions":{"type":"array","description":"Fresh-browser reruns of this scan's reported bugs.","items":{"type":"object","required":["id","finding_index","outcome"],"properties":{"id":{"type":"string"},"finding_index":{"type":"integer"},"outcome":{"type":"string","enum":["running","reproduced","not_reproduced","inconclusive"]}}}},"agents":{"type":"array","items":{"$ref":"#/components/schemas/VerifyExplorationAgent"}},"findings":{"type":"array","description":"Every tester's findings, most severe first, with the checks each one cites.","items":{"$ref":"#/components/schemas/VerifyExplorationFinding"}},"permissions":{"type":"object","required":["manage"],"properties":{"manage":{"type":"boolean"},"knowledge_connections":{"type":"boolean"}}}},"required":["onboarding","paywalled","unlock","finding_count","priority_counts","time_limit_reached","ended_early","covered_areas","demo_project","report","related_explorations","sign_in_outcome","sign_in_needs_answer","next_scan_improvements","id","goal","status","max_seconds","max_testers","concurrency","created_at","deadline_at","environment_id","environment_name","web_url","reproduction_of","reproductions","scannable_flows","huntable_flows","explorer_activity","saves_scenarios","agents","agent_filters","findings","findings_fix_prompt","permissions"]},"VerifyExplorationAgentFilter":{"type":"object","required":["status","count","agent_ids"],"properties":{"status":{"type":"string"},"count":{"type":"integer","minimum":0},"agent_ids":{"type":"array","items":{"type":"string"}}}},"VerifyExplorationFinding":{"type":"object","required":["id","agent_id","agent_title","title","severity","confidence","expected","actual","reproduction_steps","url","evidence_timestamp_ms","checks","fix_prompt","tracked","locked"],"properties":{"id":{"type":"string"},"agent_id":{"type":"string"},"agent_title":{"type":"string"},"title":{"type":"string"},"severity":{"type":"string","enum":["high","medium","low"]},"confidence":{"type":"string","enum":["reproduced","suspected"]},"expected":{"type":"string"},"actual":{"type":"string"},"reproduction_steps":{"type":"array","items":{"type":"string"}},"url":{"type":"string"},"evidence_step_ids":{"type":"array","items":{"type":"string"}},"evidence_timestamp_ms":{"type":"integer","nullable":true},"checks":{"type":"array","description":"Checks in the same tester report that this finding cites.","items":{"type":"object","required":["index","charter"],"properties":{"index":{"type":"integer","minimum":0},"charter":{"type":"string"}}}},"fix_prompt":{"type":"string","description":"A coding-agent prompt for this finding alone","linked back to it.":null},"locked":{"type":"boolean","description":"True for a locked finding of the workspace's included scan before it pays. Its text fields are empty and its steps, checks and evidence are withheld."},"area":{"type":"string","nullable":true,"description":"On a locked finding, the first segment of the page it was seen on, such as Billing."},"has_recording":{"type":"boolean","description":"On a locked finding, whether the tester recorded evidence for it."},"confirmed":{"type":"boolean","description":"On a locked finding, whether the automatic review confirmed it."},"tracked":{"type":"object","nullable":true,"description":"The finding record to resolve or ignore; null until the tester finishes.","required":["id","status"],"properties":{"id":{"type":"string"},"status":{"type":"string","enum":["open","resolved","ignored","deferred"]}}}}},"VerifyExplorationAgent":{"type":"object","properties":{"orchestrator_id":{"type":"string","nullable":true,"description":"Root orchestrator for this task; null when its owner is unavailable."},"recording":{"$ref":"#/components/schemas/VerifyMediaRecording"},"title":{"type":"string","description":"Compact charter excerpt; the complete instructions remain in charter."},"task_group":{"type":"string","enum":["setup","working","queued","completed","attention","stopped"]},"started_at":{"type":"string","nullable":true},"finished_at":{"type":"string","nullable":true},"id":{"type":"string"},"ordinal":{"type":"integer"},"role":{"type":"string","enum":["orchestrator","breakdown","qa","ui"]},"charter":{"type":"string"},"status":{"type":"string"},"failure_code":{"type":"string","nullable":true},"model":{"type":"string","nullable":true},"model_selection":{"type":"object","nullable":true,"description":"Immutable model-blend draw recorded at admission; absent on single-model and historical runs.","required":["strategy","role","settings_version","candidates","selected_index"],"properties":{"strategy":{"type":"string","enum":["uniform"]},"role":{"type":"string","enum":["deep_scan","deep_scan_workers"]},"settings_version":{"type":"string"},"selected_index":{"type":"integer","minimum":0},"candidates":{"type":"array","items":{"type":"object","required":["model","model_provider","reasoning_effort","service_tier"],"properties":{"model":{"type":"string"},"model_provider":{"type":"string"},"reasoning_effort":{"type":"string","nullable":true},"service_tier":{"type":"string"}}}}}},"reasoning_effort":{"type":"string"},"report":{"$ref":"#/components/schemas/VerifyDiscoveryReport"},"check_count":{"type":"integer","minimum":0},"finding_count":{"type":"integer","minimum":0,"description":"Findings this agent reported itself; a review's restated findings count on the tester that observed them."},"review":{"type":"boolean","description":"Whether this orchestrator reviews the testers' reports rather than starting investigations or mapping the application."},"review_summary":{"description":"For a review, what it concluded without repeating its testers' passing checks; null for any other agent.","nullable":true,"type":"object","additionalProperties":false,"required":["outcome_counts","attention","own_passed_check_indices"],"properties":{"outcome_counts":{"type":"object","additionalProperties":false,"required":["observed","issue","blocked","inconclusive"],"properties":{"observed":{"type":"integer","minimum":0},"issue":{"type":"integer","minimum":0},"blocked":{"type":"integer","minimum":0},"inconclusive":{"type":"integer","minimum":0}}},"attention":{"type":"array","description":"The review's checks that did not pass, each with the tester that saw it, or null where the review saw it itself.","items":{"type":"object","additionalProperties":false,"required":["check_index","agent_id","agent_title"],"properties":{"check_index":{"type":"integer","minimum":0},"agent_id":{"type":"string","nullable":true},"agent_title":{"type":"string","nullable":true}}}},"own_passed_check_indices":{"type":"array","description":"Positions of the passing checks the review made in its own browser.","items":{"type":"integer","minimum":0}}}},"stream":{"description":"The live view while this tester's browser runs.","oneOf":[{"$ref":"#/components/schemas/LiveBrowserStream"},{"type":"null"}]},"model_activity":{"description":"Current public model summary while this task runs; null after it stops.","oneOf":[{"$ref":"#/components/schemas/VerifyExplorationModelActivity"},{"type":"null"}]},"narration":{"type":"array","description":"The tester's steps in order. While it works, one line each time its live narration changed; once finished, its written-up account when it has one.","items":{"type":"object","required":["text","step","status"],"properties":{"text":{"type":"string"},"step":{"type":"integer","minimum":0,"description":"How many browser actions were done when the line began."},"status":{"type":"string","enum":["passed","failed","running","unknown"],"description":"unknown when the line has no saved actions to judge."}}}},"activity":{"type":"object","additionalProperties":true,"properties":{"thread_sequence":{"type":"integer","description":"Monotonic checkpoint sequence for reconciling retained activity with live updates."},"thread_activity":{"type":"array","maxItems":200,"description":"Retained public reasoning, tool status and scrubbed payloads for orchestrator rounds. Bounded to 200 entries and 256 KiB. Arguments and results are absent on older workers.","items":{"$ref":"#/components/schemas/VerifyExplorationThreadEntry"}}}},"evidence":{"type":"array","items":{"$ref":"#/components/schemas/VerifyEvidenceItem"}},"error":{"type":"string","nullable":true}},"required":["orchestrator_id","model_activity","stream","title","task_group","started_at","finished_at","id","ordinal","role","charter","status","failure_code","model","reasoning_effort","report","check_count","finding_count","review","review_summary","narration","activity","evidence"]},"VerifySignInOutcome":{"type":"string","enum":["running","waiting","verified","settings_changed","blocked","firewall_blocked","browser_failed","stopped"],"description":"What a sign-in check established. waiting: the agent asked the person something and waits in its browser. verified: the agent signed in with the account as saved now. settings_changed: it signed in, but the account changed afterwards. blocked: it could not sign in. firewall_blocked: a firewall or bot challenge kept its browser from the app. browser_failed: its browser never ran. stopped: the person stopped it."},"VerifyDiscoveryDefaults":{"type":"object","required":["max_seconds","max_testers","concurrency"],"properties":{"max_seconds":{"type":"integer","description":"Default discovery duration in seconds."},"max_seconds_limit":{"type":"integer","description":"Maximum explicitly requested discovery duration in seconds."},"max_testers":{"type":"integer"},"concurrency":{"type":"integer"}}},"VerifyFirstRun":{"type":"object","required":["account_id","no_sign_in","starts_after_sign_in_check","discovery_id","included_scan","setup_finished","status","refusal"],"properties":{"account_id":{"type":"string","nullable":true},"no_sign_in":{"type":"boolean","description":"The person said the app has no sign-in; always false with an account."},"starts_after_sign_in_check":{"type":"boolean","description":"Whether finishing setup with the chosen account waits for its sign-in check to pass before the workspace's included Deep Scan starts (verify_onboarding_deep_scan). When false, finishing starts what it starts at once, so the wizard waits for the person to start it."},"status":{"type":"string","enum":["choosing","awaiting_sign_in","awaiting_billing","starting","ready","started","refused"],"description":"Rails' decision. `awaiting_sign_in` means the workspace's included Deep Scan starts once the chosen test account's sign-in check passes. `starting` means Rails is starting the discovery, so the wizard keeps checking for it; `ready` means the user starts it."},"discovery_id":{"type":"string","nullable":true,"description":"The started first discovery. Rails sets it; the wizard opens it."},"included_scan":{"type":"object","nullable":true,"description":"Where the workspace's included scan stands once test access is chosen, and the one action the test account step offers. Null before access is chosen.","required":["state","action","discovery_id","reason","firewall"],"properties":{"state":{"type":"string","enum":["ready","checking","sign_in_needed","firewall_blocked","creating_test_user","sign_up_stopped","starting","started","run_started","plan_needed","refused"],"description":"`checking` and `sign_in_needed` wait for the account's sign-in check: `checking` while its agent works, `sign_in_needed` once it needs the person (waiting for an answer, or failed). `firewall_blocked` means the app's firewall or bot challenge stopped the check's browser before the app. `creating_test_user` and `sign_up_stopped` are the same for a test user Verify's agent made: it is signing up, or it stopped and setup asks for an account instead, saying why in `reason`; `run_started` means Rails started a discovery instead (an account the Deep Scan can't use) while the first run waits for a plan; `plan_needed` means the included scan is no longer on offer and nothing runs."},"action":{"type":"string","nullable":true,"enum":["start","open_scan","choose_plan",null],"description":"Start (or retry) the scan, open `discovery_id`, or open the plan step. Null while Rails works."},"discovery_id":{"type":"string","nullable":true,"description":"The run `open_scan` opens."},"path":{"type":"string","nullable":true,"description":"Canonical web path for the run, Deep Scan or Discovery. Null before it starts."},"reason":{"type":"string","nullable":true,"description":"In one sentence: for `sign_up_stopped`, why the agent couldn't create a test user; for `firewall_blocked`, what stopped the browser. Null otherwise."},"firewall":{"type":"string","nullable":true,"enum":["vercel","cloudflare","other",null],"description":"For `firewall_blocked`, whose firewall stopped the browser; `other` when unknown. Null otherwise."}}},"setup_finished":{"type":"boolean"},"refusal":{"type":"object","nullable":true,"description":"Why the last start was refused. Finishing setup again retries.","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"VerifyOnboardingDiscovery":{"type":"object","required":["id","status","max_seconds","concurrency","signed_in"],"properties":{"id":{"type":"string"},"status":{"type":"string","enum":["discovering","testing","completed","partial","canceled"]},"max_seconds":{"type":"integer"},"concurrency":{"type":"integer"},"signed_in":{"type":"boolean","description":"Signs in with the test account chosen in setup; false explores public pages only."}}},"VerifyReportRunOption":{"type":"object","required":["id","goal","status","created_at"],"properties":{"id":{"type":"string"},"goal":{"type":"string"},"status":{"type":"string"},"created_at":{"type":"string"}}},"VerifyExplorationReport":{"type":"object","required":["status","can_retry","next_action","model","error","generated_at","source_ids","content","sources"],"properties":{"can_retry":{"type":"boolean"},"next_action":{"type":"string","nullable":true,"enum":["view","view_progress","retry","create",null],"description":"What a viewer can do next with the combined summary. Null while the report is locked behind a plan."},"status":{"type":"string","enum":["not_started","queued","writing","ready","failed"]},"model":{"type":"string","nullable":true},"error":{"type":"string","nullable":true},"generated_at":{"type":"string","nullable":true},"source_ids":{"type":"array","items":{"type":"string"}},"content":{"type":"object","nullable":true,"allOf":[{"$ref":"#/components/schemas/VerifyExplorationReportContent"}]},"sources":{"type":"array","items":{"type":"object","required":["id","goal","status","web_url","agents"],"properties":{"id":{"type":"string"},"goal":{"type":"string"},"status":{"type":"string"},"web_url":{"type":"string"},"agents":{"type":"array","items":{"type":"object","required":["id","role","ordinal","charter","replay_steps","evidence"],"properties":{"id":{"type":"string"},"role":{"type":"string"},"ordinal":{"type":"integer"},"charter":{"type":"string"},"replay_steps":{"type":"array","items":{"type":"object","additionalProperties":true}},"recording":{"$ref":"#/components/schemas/VerifyMediaRecording"},"evidence":{"type":"array","items":{"$ref":"#/components/schemas/VerifyEvidenceItem"}}}}}}}}}},"VerifyExplorationScenarioGeneration":{"type":"object","required":["status","model","reasoning_effort","error","generated_at","scenario_ids","scenarios","gaps","can_retry","writer"],"properties":{"status":{"type":"string","enum":["not_started","queued","writing","checking","ready","failed"]},"model":{"type":"string","nullable":true},"reasoning_effort":{"type":"string","nullable":true},"error":{"type":"string","nullable":true},"generated_at":{"type":"string","nullable":true},"scenario_ids":{"type":"array","items":{"type":"string"}},"scenarios":{"type":"array","items":{"type":"object","required":["id","name","starting_conditions","steps","outcomes"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"starting_conditions":{"type":"string","nullable":true},"steps":{"$ref":"#/components/schemas/Scenario/properties/steps"},"outcomes":{"$ref":"#/components/schemas/Scenario/properties/outcomes"}}}},"gaps":{"type":"array","items":{"type":"string"}},"can_retry":{"type":"boolean"},"writer":{"description":"The scenario writer checking this discovery's scenarios; null on the single-call path.","allOf":[{"$ref":"#/components/schemas/VerifyScenarioWriterProgress"}],"nullable":true}}},"VerifyScenarioWriterProgress":{"type":"object","required":["id","status","candidates","not_published","can_retry","found_bugs","budget_stopped","live_browsers","progress"],"properties":{"id":{"type":"string"},"progress":{"description":"Of the drafts saved for trial, how many are published and how many are on a revision.","type":"object","required":["ready","total","fixing"],"properties":{"ready":{"type":"integer","minimum":0},"total":{"type":"integer","minimum":0},"fixing":{"type":"integer","minimum":0}}},"found_bugs":{"description":"Scenarios published as failing, each with the confirmed finding it found.","type":"array","items":{"type":"object","required":["name","scenario_id","finding_id"],"properties":{"name":{"type":"string"},"scenario_id":{"type":"string"},"finding_id":{"type":"string"}}}},"budget_stopped":{"description":"The organization's daily browser budget stopped checking; Retry resumes it.","type":"boolean"},"live_browsers":{"description":"Trial browsers running now, at most four.","type":"array","maxItems":4,"items":{"$ref":"#/components/schemas/ProjectDiscoveryLiveBrowser"}},"status":{"type":"string","enum":["queued","drafting","redrafting","checking","waiting","finished","failed","redraft_failed","canceled"]},"candidates":{"type":"object","required":["drafted","trying","revising","published","dropped","held"],"properties":{"drafted":{"type":"integer","minimum":0},"trying":{"type":"integer","minimum":0},"revising":{"type":"integer","minimum":0},"published":{"type":"integer","minimum":0},"dropped":{"type":"integer","minimum":0},"held":{"type":"integer","minimum":0}}},"not_published":{"type":"array","items":{"type":"object","required":["name","state","reason_code","reason","scenario_id"],"properties":{"name":{"type":"string"},"state":{"type":"string","enum":["dropped","held"]},"reason_code":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"scenario_id":{"type":"string","nullable":true,"description":"A held candidate's saved, unpublished draft."}}}},"can_retry":{"type":"boolean"}}},"VerifyExplorationReportPage":{"type":"object","description":"Report page data, excluding tester activity and full replay archives. Sources contain only cited files.","required":["id","mode","goal","status","environment_name","project_id","saves_scenarios","scenario_generation","related_explorations","report","permissions"],"properties":{"id":{"$ref":"#/components/schemas/VerifyExploration/properties/id"},"mode":{"type":"string","enum":["exploration","deep_scan"]},"goal":{"$ref":"#/components/schemas/VerifyExploration/properties/goal"},"status":{"$ref":"#/components/schemas/VerifyExploration/properties/status"},"environment_name":{"$ref":"#/components/schemas/VerifyExploration/properties/environment_name"},"project_id":{"type":"string","nullable":true},"saves_scenarios":{"type":"boolean"},"scenario_generation":{"$ref":"#/components/schemas/VerifyExplorationReportScenarios"},"related_explorations":{"$ref":"#/components/schemas/VerifyExploration/properties/related_explorations"},"report":{"$ref":"#/components/schemas/VerifyExploration/properties/report"},"permissions":{"$ref":"#/components/schemas/VerifyExploration/properties/permissions"}}},"VerifyDeepScanDocumentPage":{"allOf":[{"type":"object","required":["id","goal","status","testing_finished","environment_name","project_id","report","permissions"],"properties":{"id":{"type":"string"},"goal":{"type":"string"},"testing_finished":{"type":"boolean"},"status":{"$ref":"#/components/schemas/VerifyExploration/properties/status"},"environment_name":{"type":"string"},"project_id":{"type":"string","nullable":true},"report":{"$ref":"#/components/schemas/VerifyExploration/properties/report"},"permissions":{"type":"object","required":["manage"],"properties":{"manage":{"type":"boolean"}}}}},{"type":"object","required":["document"],"properties":{"document":{"type":"object","nullable":true,"required":["narrative","check_count","tester_count","evidence_count","check_counts","tester_counts","agents","evidence_groups"],"properties":{"narrative":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/VerifyDeepScanNarrative"}]},"check_count":{"type":"integer"},"tester_count":{"type":"integer"},"evidence_count":{"type":"integer"},"evidence_groups":{"type":"array","items":{"type":"object","required":["agent_id","ordinal","items"],"properties":{"agent_id":{"type":"string"},"ordinal":{"type":"integer"},"items":{"type":"array","items":{"$ref":"#/components/schemas/VerifyEvidenceItem"}}}}},"check_counts":{"type":"object","additionalProperties":{"type":"integer"}},"tester_counts":{"type":"object","additionalProperties":{"type":"integer"}},"agents":{"type":"array","items":{"type":"object","required":["id","run_id","ordinal","role","charter","status","failure_code","check_count","checks","findings","notes"],"properties":{"id":{"type":"string"},"run_id":{"type":"string"},"ordinal":{"type":"integer"},"role":{"type":"string"},"charter":{"type":"string"},"status":{"type":"string"},"failure_code":{"type":"string","nullable":true},"notes":{"type":"array","items":{"type":"string"}},"check_count":{"type":"integer"},"findings":{"type":"array","items":{"type":"object","required":["index","title","severity","confidence","expected","actual","steps","clip"],"properties":{"index":{"type":"integer"},"title":{"type":"string"},"severity":{"type":"string","nullable":true},"confidence":{"type":"string","nullable":true},"expected":{"type":"string","nullable":true},"actual":{"type":"string","nullable":true},"steps":{"type":"array","items":{"type":"string"}},"clip":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/VerifyDeepScanClip"}]}}}},"checks":{"type":"array","items":{"type":"object","required":["index","title","outcome","expected","actual","steps","clip"],"properties":{"index":{"type":"integer"},"title":{"type":"string"},"outcome":{"type":"string"},"expected":{"type":"string","nullable":true},"actual":{"type":"string","nullable":true},"steps":{"type":"array","items":{"type":"string"}},"clip":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/VerifyDeepScanClip"}]}}}}}}}}}}}]},"VerifyDeepScanClip":{"type":"object","required":["evidence_id","start_ms","end_ms","file_start_ms","evidence"],"properties":{"evidence_id":{"type":"string"},"start_ms":{"type":"number"},"end_ms":{"type":"number"},"file_start_ms":{"type":"number"},"evidence":{"$ref":"#/components/schemas/VerifyEvidenceItem"}}},"VerifyDeepScanChapterSource":{"allOf":[{"$ref":"#/components/schemas/VerifyExplorationReportSource"},{"type":"object","required":["ordinal","clip"],"properties":{"ordinal":{"type":"integer"},"clip":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/VerifyDeepScanClip"}]}}}]},"VerifyExplorationReportSource":{"type":"object","required":["agent_id","finding_index","check_index"],"properties":{"agent_id":{"type":"string"},"finding_index":{"type":"integer","nullable":true},"check_index":{"type":"integer","nullable":true}}},"VerifyDeepScanNarrative":{"type":"object","required":["introduction","methodology","chapters","next_steps"],"properties":{"introduction":{"type":"array","items":{"type":"string"}},"methodology":{"type":"array","items":{"type":"string"}},"next_steps":{"type":"array","items":{"type":"string"}},"chapters":{"type":"array","items":{"type":"object","required":["title","paragraphs","sources"],"properties":{"title":{"type":"string"},"paragraphs":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"$ref":"#/components/schemas/VerifyDeepScanChapterSource"}}}}}}},"VerifyExplorationReportScenarios":{"type":"object","required":["status","model","reasoning_effort","error","generated_at","scenario_ids","scenarios","gaps","can_retry","writer"],"properties":{"status":{"$ref":"#/components/schemas/VerifyExplorationScenarioGeneration/properties/status"},"model":{"$ref":"#/components/schemas/VerifyExplorationScenarioGeneration/properties/model"},"reasoning_effort":{"$ref":"#/components/schemas/VerifyExplorationScenarioGeneration/properties/reasoning_effort"},"error":{"$ref":"#/components/schemas/VerifyExplorationScenarioGeneration/properties/error"},"generated_at":{"$ref":"#/components/schemas/VerifyExplorationScenarioGeneration/properties/generated_at"},"scenario_ids":{"$ref":"#/components/schemas/VerifyExplorationScenarioGeneration/properties/scenario_ids"},"gaps":{"$ref":"#/components/schemas/VerifyExplorationScenarioGeneration/properties/gaps"},"can_retry":{"$ref":"#/components/schemas/VerifyExplorationScenarioGeneration/properties/can_retry"},"writer":{"$ref":"#/components/schemas/VerifyExplorationScenarioGeneration/properties/writer"},"scenarios":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}}}},"VerifyExplorationReportReplay":{"type":"object","required":["agent_id","generated_at","replay_steps","recording"],"properties":{"agent_id":{"type":"string"},"generated_at":{"type":"string"},"replay_steps":{"type":"array","items":{"type":"object","additionalProperties":true}},"recording":{"$ref":"#/components/schemas/VerifyMediaRecording"}}},"VerifyExplorationReportContent":{"type":"object","additionalProperties":false,"required":["title","summary","findings","questions","what_worked","coverage_notes","cleanup"],"properties":{"title":{"type":"string","minLength":1,"maxLength":200},"summary":{"type":"string","minLength":1,"maxLength":600},"findings":{"type":"array","maxItems":200,"items":{"type":"object","additionalProperties":false,"required":["title","severity","confidence","explanation","impact","expected","steps","notes","sources","evidence"],"properties":{"title":{"type":"string","minLength":1,"maxLength":160},"severity":{"type":"string","enum":["high","medium","low"]},"confidence":{"type":"string","enum":["reproduced","suspected"]},"explanation":{"type":"string","minLength":1,"maxLength":4000},"impact":{"type":"string","minLength":1,"maxLength":240},"expected":{"type":"string","minLength":1,"maxLength":4000},"steps":{"type":"array","maxItems":24,"items":{"type":"string","minLength":1,"maxLength":2000},"minItems":0},"notes":{"type":"array","maxItems":4,"items":{"type":"string","minLength":1,"maxLength":320}},"sources":{"type":"array","maxItems":60,"items":{"type":"object","additionalProperties":false,"required":["agent_id","finding_index","check_index"],"properties":{"agent_id":{"type":"string","minLength":1,"maxLength":100},"finding_index":{"type":["integer","null"],"minimum":0},"check_index":{"type":["integer","null"],"minimum":0}}},"minItems":1},"evidence":{"type":"array","maxItems":16,"items":{"type":"object","additionalProperties":false,"required":["agent_id","evidence_id","offset_ms"],"properties":{"agent_id":{"type":"string","minLength":1,"maxLength":100},"evidence_id":{"type":"string","minLength":1,"maxLength":100},"offset_ms":{"type":["integer","null"],"minimum":0}}}}}}},"questions":{"type":"array","maxItems":2000,"items":{"type":"string","minLength":1,"maxLength":2000}},"what_worked":{"type":"array","maxItems":10,"items":{"type":"string","minLength":1,"maxLength":320}},"coverage_notes":{"type":"array","maxItems":2000,"items":{"type":"string","minLength":1,"maxLength":2000}},"cleanup":{"type":"array","maxItems":2000,"items":{"type":"string","minLength":1,"maxLength":2000}}}},"VerifyLibraryFixture":{"type":"object","required":["sha256","byte_size","name","content_type","lock_version","persona_ids","credential_ids","environment_ids","assignments"],"properties":{"sha256":{"type":"string"},"byte_size":{"type":"integer"},"name":{"type":"string"},"content_type":{"type":"string"},"lock_version":{"type":"integer"},"persona_ids":{"type":"array","items":{"type":"string"}},"credential_ids":{"type":"array","items":{"type":"string"}},"environment_ids":{"type":"array","items":{"type":"string"}},"assignments":{"type":"array","description":"Every assignment with its target's name, including targets archived or disabled since.","items":{"$ref":"#/components/schemas/VerifyFixtureAssignment"}}}},"VerifyFixtureUpdate":{"type":"object","required":["version"],"description":"Each assignment list that is sent replaces that kind of assignment; omitted lists are kept.","properties":{"version":{"type":"integer"},"name":{"type":"string","maxLength":255},"persona_ids":{"type":"array","items":{"type":"string"}},"credential_ids":{"type":"array","items":{"type":"string"}},"environment_ids":{"type":"array","items":{"type":"string"}}}},"VerifyFixtureAssignmentChoice":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}},"VerifyInheritedFixture":{"type":"object","required":["name","sha256","content_type","byte_size","sources"],"properties":{"name":{"type":"string"},"sha256":{"type":"string"},"content_type":{"type":"string"},"byte_size":{"type":"integer"},"sources":{"type":"array","items":{"$ref":"#/components/schemas/VerifyFixtureAssignment"}}}},"VerifyFixtureAssignment":{"type":"object","required":["kind","id","name"],"properties":{"kind":{"type":"string","enum":["persona","credential","environment"]},"id":{"type":"string"},"name":{"type":"string"}}},"ProjectFixturesPage":{"type":"object","required":["project","permissions","fixtures","personas","credentials","environments","pagination"],"properties":{"project":{"$ref":"#/components/schemas/ProjectHeader"},"permissions":{"$ref":"#/components/schemas/ProjectPermissions"},"fixtures":{"type":"array","items":{"$ref":"#/components/schemas/VerifyLibraryFixture"}},"personas":{"type":"array","items":{"$ref":"#/components/schemas/VerifyFixtureAssignmentChoice"}},"credentials":{"type":"array","items":{"$ref":"#/components/schemas/VerifyFixtureAssignmentChoice"}},"environments":{"type":"array","items":{"$ref":"#/components/schemas/VerifyFixtureAssignmentChoice"}},"pagination":{"$ref":"#/components/schemas/VerifyRunsPagination"}}},"VerifyFixture":{"type":"object","required":["sha256","byte_size"],"properties":{"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"byte_size":{"type":"integer"}}},"VerifyFixtureDownload":{"type":"object","required":["sha256","byte_size","url"],"properties":{"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"byte_size":{"type":"integer"},"url":{"type":"string","format":"uri"}}},"VerifyGithubConnectionOptions":{"type":"object","required":["installations","accounts"],"properties":{"installations":{"$ref":"#/components/schemas/GithubOnboardingState/properties/installations"},"accounts":{"$ref":"#/components/schemas/GithubOnboardingState/properties/accounts"}}},"VerifyGithubConnectionInput":{"type":"object","required":["github_app_installation_id","repositories"],"properties":{"github_app_installation_id":{"type":"string"},"repositories":{"type":"array","items":{"type":"object","required":["owner","name"],"properties":{"owner":{"type":"string"},"name":{"type":"string"}}}},"project_id":{"type":"string","description":"Project slug or public ID the repositories are added to."},"replace":{"type":"boolean","description":"Make these the project's only repositories. Refused when another of its repositories has PR testing set up."}}},"VerifyGithubConnection":{"type":"object","required":["repositories"],"properties":{"repositories":{"type":"array","items":{"type":"object","required":["repository_id","source_repository"],"properties":{"repository_id":{"type":"string"},"source_repository":{"type":"string"}}}}}},"VerifyKnowledgeDocumentPage":{"type":"object","required":["organization","permissions","document","history"],"properties":{"organization":{"type":"object","required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"}}},"permissions":{"type":"object","required":["manage"],"properties":{"manage":{"type":"boolean"}}},"document":{"$ref":"#/components/schemas/VerifyKnowledgeDocument"},"history":{"type":"array","items":{"$ref":"#/components/schemas/VerifyLearningHistory"}}}},"VerifyLearningHistory":{"type":"object","required":["id","operation","reason","created_at","origin","dream_id","before","after","sources","relations"],"properties":{"id":{"type":"string"},"operation":{"type":"string","enum":["create","update","archive"]},"reason":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"origin":{"type":"string","enum":["operator","review","dreaming"],"description":"Operator edit, automatic review of one run, or nightly dreaming"},"dream_id":{"type":"string","nullable":true,"description":"Public id of the nightly dream that made this change; null unless origin is dreaming"},"before":{"type":"object","additionalProperties":true},"after":{"type":"object","additionalProperties":true},"sources":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"run_id":{"type":"string","nullable":true},"environment_id":{"type":"string","nullable":true},"environment_name":{"type":"string","nullable":true}}}},"relations":{"type":"array","items":{"type":"object","required":["id","kind"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["related_to","supersedes","contradicts"]}}}}}},"VerifyKnowledgePage":{"type":"object","required":["organization","permissions","projects","selected_project_id","total","documents","dreaming"],"properties":{"organization":{"type":"object","required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"}}},"permissions":{"type":"object","required":["manage"],"properties":{"manage":{"type":"boolean"}}},"selected_project_id":{"type":"string","nullable":true},"total":{"type":"integer"},"projects":{"type":"array","items":{"type":"object","required":["id","name","purpose"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"purpose":{"type":"string","nullable":true}}}},"documents":{"type":"array","items":{"$ref":"#/components/schemas/VerifyKnowledgeSummary"}},"dreaming":{"type":"object","required":["schedule","latest"],"properties":{"schedule":{"$ref":"#/components/schemas/VerifyDreamSchedule"},"latest":{"description":"The most recent dream for the selected project, or null before the first one","oneOf":[{"$ref":"#/components/schemas/VerifyDreamSummary"},{"type":"null"}]}}}}},"VerifyKnowledgeSummary":{"type":"object","required":["id","title","kind","observed_at","project_id","project_name","source"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"kind":{"type":"string","enum":["discovery","operator","learning"]},"observed_at":{"type":"string","format":"date-time"},"project_id":{"type":"string"},"project_name":{"type":"string"},"source":{"type":"object","required":["edited_at"],"properties":{"edited_at":{"type":"string","nullable":true}}}}},"VerifyKnowledgeDocument":{"type":"object","required":["id","title","kind","content_json","markdown","content_digest","observed_at","project_id","project_name","source"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"kind":{"type":"string","enum":["discovery","operator","learning"]},"markdown":{"type":"string"},"content_digest":{"type":"string"},"observed_at":{"type":"string","format":"date-time"},"project_id":{"type":"string"},"project_name":{"type":"string"},"source":{"type":"object","required":["run_id","exploration_id","environment_name","account_id","status","creator_name"],"properties":{"run_id":{"type":"string","nullable":true},"exploration_id":{"type":"string","nullable":true},"environment_name":{"type":"string","nullable":true},"account_id":{"type":"string","nullable":true},"status":{"type":"string","nullable":true},"editor_name":{"type":"string","nullable":true},"edited_at":{"type":"string","nullable":true},"creator_name":{"type":"string","nullable":true}}},"content_json":{"type":"object","properties":{"body":{"type":"string"},"product":{"type":"object","required":["summary","users","concepts"],"properties":{"summary":{"type":"string"},"users":{"type":"array","items":{"type":"string"}},"concepts":{"type":"array","items":{"type":"string"}}}},"flows":{"type":"array","items":{"type":"object","required":["name","purpose","entry_url","prerequisites","steps","expected_behavior","observed_behavior","expectation_source","coverage","gaps"],"properties":{"name":{"type":"string"},"purpose":{"type":"string"},"entry_url":{"type":"string"},"prerequisites":{"type":"array","items":{"type":"string"}},"steps":{"type":"array","items":{"type":"string"}},"expected_behavior":{"type":"string"},"observed_behavior":{"type":"string"},"expectation_source":{"type":"string","enum":["explicit","inferred"]},"coverage":{"type":"string","enum":["observed","partial","blocked"]},"gaps":{"type":"array","items":{"type":"string"}}}}},"pages":{"type":"array","items":{"type":"object","required":["url","title","description","controls"],"properties":{"url":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"controls":{"type":"array","items":{"type":"object","required":["label","attempted","destination"],"properties":{"label":{"type":"string"},"attempted":{"type":"boolean"},"destination":{"type":"string","nullable":true}}}}}}},"unvisited":{"type":"array","items":{"type":"string"}},"cleanup":{"type":"array","items":{"type":"string"}},"stopping_reason":{"type":"string"}}}}},"VerifyLoginAccountInput":{"type":"object","properties":{"name":{"type":"string"},"username":{"type":"string"},"login_method":{"type":"string","enum":["email_password","email_link","google","github","custom","passkey","session","oidc_identity"]},"login_url":{"type":"string","description":"Optional sign-in path or URL. Runs use the selected environment origin and retain the path, query and fragment. Not required for oidc_identity. Imported session cookies still require their app URL."},"email_link_auth_origins":{"type":"array","maxItems":20,"uniqueItems":true,"description":"Explicit auth-service origins for protected email-link login and signup links. Only email_link accounts support a nonempty list. Keep login_url on the public app entry; origins must be canonical HTTP(S) origins without credentials, paths, queries or fragments.","items":{"type":"string","format":"uri","maxLength":2000}},"description":{"type":"string","description":"When to choose this account: role, plan, tenant and intended journeys"},"instructions":{"type":"string","description":"Non-secret login instructions and the expected signed-in state; required for custom login"},"composal_inbox":{"type":"boolean","description":"email_password only: true signs in with a Composal-provisioned email address (reused if already provisioned) whose mail people and agents can read, ignoring username; the password may be saved later, after signing up with that address, and the account is not configured until then. false returns to the sent username. Omitted keeps the current choice. email_link accounts always use one; true is rejected for other login methods."},"composal_managed_google":{"type":"boolean","description":"Select the Composal-managed Google test account when available."},"composal_inbox_user":{"type":"string","maxLength":64,"pattern":"^[a-z0-9]+([-_][a-z0-9]+)*$","description":"The user part of a new Composal address, which becomes <user>@<organization slug>.mailposal.com. Omit it to have one suggested from the name. Only names a new address: an existing address cannot be renamed."},"password":{"type":"string","writeOnly":true,"description":"Required for email_password and other password methods, except an email_password account that uses a Composal address"},"totp_secret":{"type":"string","writeOnly":true,"description":"Base32 setup key or otpauth URI, not a current one-time code"},"remove_totp":{"type":"boolean"},"passkey":{"type":"string","writeOnly":true,"description":"JSON enrollment artifact for a cloud-managed software passkey; never returned. Provider acceptance must be tested."},"cookies":{"type":"string","writeOnly":true,"description":"Pasted cookies as name=value (Cookie header supported) or name:\"value\", separated by newlines or semicolons. Requires login_url for the app scope; stored as an encrypted browser session with a 24-hour import expiry. Values are preserved without URL decoding. Maximum 100 cookies and 1 MiB. Mutually exclusive with passkey and browser_session."},"browser_session":{"type":"string","writeOnly":true,"description":"JSON artifact containing scoped app cookies, localStorage and IndexedDB; Google provider cookies and other origins are rejected. Maximum 1 MiB."},"remove_browser_authentication":{"type":"boolean"},"oidc":{"type":"object","description":"Composal sign-in settings for oidc_identity, which only project credentials accept. Send the persona's user part, such as billing-admin, as username; Composal signs in as <user>.<organization slug>@cred.composal.ai. Blank values use the defaults.","properties":{"provider_id":{"type":"string","description":"The provider ID configured in the app. Defaults to composal."},"auth_url":{"type":"string","description":"Better Auth path or HTTPS base URL. Defaults to /api/auth on the selected run target. A separately hosted auth server keeps its explicit URL."},"client_id":{"type":"string","description":"The client ID configured in the app; Composal uses it as the token audience. Defaults to composal without an app URL, or the app origin for legacy URL-based setup. Existing client IDs are retained on edits."}}}}},"VerifyLoginAccount":{"type":"object","required":["id","name","username","login_method","login_url","email_link_auth_origins","description","instructions","status","mfa_enabled","credential_keys","provider_guidance","configured","managed","sign_in_verified","sign_in_verified_at","has_inbox","composal_address","identity_provider","updated_at"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"login_method":{"type":"string","enum":["email_password","email_link","google","github","custom","passkey","session","oidc_identity"]},"login_url":{"type":"string"},"email_link_auth_origins":{"type":"array","maxItems":20,"uniqueItems":true,"items":{"type":"string","format":"uri","maxLength":2000}},"description":{"type":"string","nullable":true},"instructions":{"type":"string","nullable":true},"status":{"type":"string"},"mfa_enabled":{"type":"boolean"},"configured":{"type":"boolean"},"managed":{"type":"boolean"},"sign_in_verified":{"type":"boolean","description":"A sign-in check confirmed this account signs in with its current settings"},"sign_in_verified_at":{"type":"string","format":"date-time","nullable":true},"has_inbox":{"type":"boolean","description":"Whether Composal provisioned this address and can show the mail it receives"},"composal_address":{"type":["string","null"],"description":"The Composal address provisioned for this account, kept while it signs in with another username so turning the address back on reuses it. Null until one is provisioned."},"provider_guidance":{"type":"string"},"browser_authentication":{"type":"object","nullable":true,"properties":{"kind":{"type":"string","enum":["webauthn","browser_session","oidc_identity"]},"origin":{"type":"string"},"rp_id":{"type":"string"},"expires_at":{"type":"string","format":"date-time"},"auth_url":{"type":"string"},"provider_id":{"type":"string"},"client_id":{"type":"string"},"issuer_origin":{"type":"string","description":"Server-assigned OIDC origin, retained when the credential is edited. Older credentials omit it and retain the legacy issuer."}}},"identity_provider":{"type":"object","nullable":true,"description":"For oidc_identity accounts, the Composal issuer the app trusts and the persona settings it must match","required":["issuer","discovery_url","email_suffix","persona_user","provider_id","client_id"],"properties":{"issuer":{"type":"string"},"discovery_url":{"type":"string"},"email_suffix":{"type":"string","description":"Every persona signs in as <user> followed by this suffix, for example .acme@cred.composal.ai"},"persona_user":{"type":"string","description":"The user part of this persona's address"},"provider_id":{"type":"string"},"client_id":{"type":"string"}}},"credential_keys":{"type":"object","required":["username"],"properties":{"username":{"type":"string"},"password":{"type":"string"},"totp":{"type":"string"},"browser":{"type":"string"}}},"updated_at":{"type":"string","format":"date-time"}}},"VerifyMemoryNoteInput":{"type":"object","required":["title","finding"],"additionalProperties":false,"oneOf":[{"required":["environment_id"],"not":{"required":["project_id"]}},{"required":["project_id"],"not":{"required":["environment_id"]}}],"properties":{"environment_id":{"type":"string"},"project_id":{"type":"string"},"title":{"type":"string","minLength":1,"maxLength":160},"finding":{"type":"string","minLength":1,"maxLength":1000},"response":{"type":"string","maxLength":1000},"workaround":{"type":"string","maxLength":1000},"tags":{"type":"array","maxItems":8,"items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,39}$"}}}},"VerifyMemoryPage":{"type":"object","required":["organization","permissions","memories","search_available","counts"],"properties":{"organization":{"type":"object","required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"}}},"permissions":{"type":"object","required":["manage"],"properties":{"manage":{"type":"boolean"}}},"memories":{"type":"array","items":{"$ref":"#/components/schemas/VerifyMemory"}},"search_available":{"type":"boolean"},"counts":{"type":"object","required":["ready","pending","failed","unindexed"],"properties":{"ready":{"type":"integer"},"pending":{"type":"integer"},"failed":{"type":"integer"},"unindexed":{"type":"integer"}}}}},"VerifyMemory":{"type":"object","required":["id","title","finding","response","workaround","tags","confidence","created_at","indexed_at","scope","source"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"finding":{"type":"string"},"response":{"type":"string"},"workaround":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"confidence":{"type":"string","enum":["low","medium","high"]},"created_at":{"type":"string","format":"date-time"},"indexed_at":{"type":"string","format":"date-time","nullable":true},"scope":{"type":"object","required":["environment_id","environment_name","project_id","project_name"],"properties":{"environment_id":{"type":"string","nullable":true},"environment_name":{"type":"string","nullable":true},"project_id":{"type":"string","nullable":true},"project_name":{"type":"string","nullable":true}}},"source":{"type":"object","required":["kind","creator_user_id","sweep_id","attempt_id","repository_id","repository_name","scenario","persona","outcome","observed_at"],"properties":{"kind":{"type":"string","enum":["scenario_attempt","operator","run","triage"]},"creator_user_id":{"type":"string","nullable":true},"sweep_id":{"type":"string","nullable":true},"attempt_id":{"type":"string","nullable":true},"repository_id":{"type":"string","nullable":true},"repository_name":{"type":"string","nullable":true},"scenario":{"type":"string","nullable":true},"persona":{"type":"string","nullable":true},"outcome":{"type":"string","nullable":true},"observed_at":{"type":"string","format":"date-time","nullable":true},"run_id":{"type":"string","nullable":true},"purpose":{"type":"string","nullable":true},"triage_id":{"type":"string","nullable":true,"description":"The finding triage a dream learned this lesson from"},"finding_id":{"type":"string","nullable":true},"verification_run_id":{"type":"string","nullable":true,"description":"The run whose failed or blocked Scenario an operator taught this note on"},"scenario_run_id":{"type":"string","nullable":true}}}}},"VerifyMessagingError":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}},"field_errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}},"VerifyMessagingPage":{"type":"object","required":["scenario_run_id","assistant_name","assistant_number","messages","operations","typing","send_blocked_reason","retry_blocked_reason","sends_remaining","expires_at","csrf_token","attachment_limit","attachment_max_bytes"],"properties":{"scenario_run_id":{"type":"string"},"assistant_name":{"type":"string"},"assistant_number":{"type":"string"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/VerifyMessagingPageMessage"}},"operations":{"type":"array","items":{"type":"object","required":["client_operation_id","status","disposition","error"],"properties":{"client_operation_id":{"type":"string"},"status":{"type":"string","enum":["pending","dispatch_committed","accepted","delivered","failed","unknown","cancelled"]},"disposition":{"type":"string","enum":["retry","sent","not_sent"],"description":"retry resubmits this same operation; not_sent needs a new one; sent must not be sent again."},"error":{"type":["string","null"]}}}},"typing":{"type":"boolean"},"send_blocked_reason":{"type":["string","null"],"description":"Why the run cannot send now; null when it can."},"retry_blocked_reason":{"type":["string","null"],"description":"Why an admitted pending operation cannot retry now; null when it can."},"sends_remaining":{"type":"integer"},"expires_at":{"type":"string","format":"date-time"},"attachment_limit":{"type":"integer"},"attachment_max_bytes":{"type":"integer"},"csrf_token":{"type":"string","description":"Sent back as X-Messages-CSRF-Token; useless without the session cookie."}}},"VerifyMessagingPageMessage":{"type":"object","required":["id","direction","content","display_content","link","links","service","receipt_status","date_sent","attachments","unsupported_attachment","reply_to","reactions","can_react","can_reply","send_style","read_at"],"properties":{"id":{"type":"string"},"direction":{"type":"string","enum":["incoming","outgoing"]},"content":{"type":"string","description":"Plain text with any account link removed"},"display_content":{"type":"string","description":"Message text with card links removed"},"link":{"type":["string","null"],"description":"A link into the app under test; other links stay in content as text."},"links":{"type":"array","items":{"type":"object","required":["url","account_link","preview"],"properties":{"url":{"type":"string"},"account_link":{"type":"boolean"},"preview":{"oneOf":[{"$ref":"#/components/schemas/VerifyMessagingLinkPreview"},{"type":"null"}]}}}},"service":{"type":["string","null"]},"receipt_status":{"type":["string","null"],"enum":["sending","sent","delivered","read","failed","unknown","not_sent",null]},"date_sent":{"type":"string","format":"date-time"},"attachments":{"type":"array","items":{"$ref":"#/components/schemas/VerifyMessagingAttachment"}},"unsupported_attachment":{"type":"boolean"},"reply_to":{"type":["string","null"],"description":"Public ID of the visible quoted parent"},"reactions":{"type":"array","items":{"type":"object","required":["reaction","count","reacted"],"properties":{"reaction":{"type":"string"},"count":{"type":"integer"},"reacted":{"type":"boolean"}}}},"can_react":{"type":"boolean"},"can_reply":{"type":"boolean"},"send_style":{"type":["string","null"],"enum":["celebration","shooting_star","fireworks","lasers","love","confetti","balloons","spotlight","echo","invisible","gentle","loud","slam",null]},"read_at":{"type":["string","null"],"format":"date-time"}}},"VerifyMessagingMediaInput":{"type":"object","required":["name","content_type","data"],"properties":{"name":{"type":"string"},"content_type":{"type":"string"},"data":{"type":"string","description":"Base64 encoded file, maximum 10 MB decoded"}}},"VerifyMessagingUpload":{"type":"object","required":["upload_id","attachment"],"properties":{"upload_id":{"type":"string"},"attachment":{"$ref":"#/components/schemas/VerifyMessagingAttachment"}}},"VerifyMessagingAttachment":{"type":"object","required":["id","name","content_type","byte_size","url","kind"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"content_type":{"type":"string"},"byte_size":{"type":"integer"},"url":{"type":"string"},"download_url":{"type":"string","description":"Original file; url may be a JPEG preview for HEIC"},"kind":{"type":"string","enum":["image","video","audio","file"]}}},"VerifyMessagingLinkPreview":{"type":"object","required":["title","description","image"],"properties":{"title":{"type":"string"},"description":{"type":"string"},"image":{"oneOf":[{"type":"object","required":["id","name","content_type","byte_size","url","kind"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"content_type":{"type":"string"},"byte_size":{"type":"integer"},"url":{"type":"string"},"kind":{"type":"string","enum":["image"]}}},{"type":"null"}]}}},"VerifyMessagingSessionGrant":{"type":"object","required":["url","cookie","expires_at"],"properties":{"url":{"type":"string","format":"uri"},"expires_at":{"type":"string","format":"date-time"},"cookie":{"type":"object","required":["name","value","url","expires","httpOnly","secure","sameSite"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"url":{"type":"string"},"expires":{"type":"integer"},"httpOnly":{"type":"boolean"},"secure":{"type":"boolean"},"sameSite":{"type":"string","enum":["Strict"]}}}}},"VerifyMessagingNumbers":{"type":"object","required":["tester_number","assistant_number"],"properties":{"tester_number":{"type":"string"},"assistant_number":{"type":"string"}}},"VerifyMessagingNumbersCreate":{"allOf":[{"$ref":"#/components/schemas/VerifyMessagingNumbers"},{"type":"object","required":["verify_environment_id"],"properties":{"verify_environment_id":{"type":"string"}}}]},"VerifyMessagingSetup":{"type":"object","required":["id","verify_environment_id","environment_name","tester_number","assistant_number","reconciled_at","seeded","leased","unknown_send","retirable","send_blocked_reason"],"properties":{"id":{"type":"string"},"verify_environment_id":{"type":"string"},"environment_name":{"type":"string"},"tester_number":{"type":"string"},"assistant_number":{"type":"string"},"reconciled_at":{"type":["string","null"],"format":"date-time"},"seeded":{"type":"boolean"},"leased":{"type":"boolean"},"unknown_send":{"type":"boolean"},"retirable":{"type":"boolean"},"send_blocked_reason":{"type":["string","null"]}}},"VerifyMessagingManual":{"type":"object","required":["messages","send_blocked_reason","attachment_limit","attachment_max_bytes"],"properties":{"attachment_limit":{"type":"integer"},"attachment_max_bytes":{"type":"integer"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/VerifyMessagingPageMessage"}},"send_blocked_reason":{"type":["string","null"]},"send_disposition":{"type":"string","enum":["retry","not_sent","sent"]},"send_error":{"type":["string","null"]}}},"VerifyNetworkConnectionInput":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string"},"provider":{"type":"string","enum":["tailscale","aws_client_vpn"]},"oauth_client_id":{"type":"string"},"oauth_client_secret":{"type":"string","writeOnly":true},"aws_client_vpn_profile":{"type":"string","writeOnly":true,"maxLength":65536},"device_tag":{"type":"string"},"status":{"type":"string","enum":["active","disabled"]}}},"VerifyNetworkConnection":{"type":"object","required":["id","name","provider","oauth_client_id","device_tag","status","created_at","updated_at"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"provider":{"type":"string","enum":["tailscale","aws_client_vpn"]},"oauth_client_id":{"type":"string","nullable":true},"device_tag":{"type":"string","nullable":true},"status":{"type":"string","enum":["active","disabled"]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"VerifyPullRequest":{"type":"object","required":["id","repository_id","number","title","state","draft","head_sha","base_sha","github_repository","github_url","web_path","comment_url","updated_at","provider","source_repository","source_url","request_label","project_id","project_slug","source_branch"],"properties":{"id":{"type":"string"},"repository_id":{"type":"string"},"number":{"type":"integer"},"title":{"type":"string"},"state":{"type":"string"},"draft":{"type":"boolean"},"head_sha":{"type":"string"},"base_sha":{"type":"string"},"github_repository":{"type":"string","description":"GitHub owner/repository associated with this pull request.","nullable":true},"github_url":{"type":"string","nullable":true},"web_path":{"type":"string"},"comment_url":{"type":"string","nullable":true},"updated_at":{"type":"string","format":"date-time"},"source_repository":{"type":"string","nullable":true},"source_url":{"type":"string","nullable":true},"request_label":{"type":"string"},"provider":{"type":"string","enum":["github","gitlab"]},"project_id":{"type":"string","nullable":true},"project_slug":{"type":"string","nullable":true},"source_branch":{"type":"string","nullable":true}}},"VerifyPullRequestSummary":{"allOf":[{"$ref":"#/components/schemas/VerifyPullRequest"},{"type":"object","required":["latest_state","latest_reason","latest_run_id","latest_created_at","latest_head_sha","latest_current","can_verify"],"properties":{"latest_state":{"type":"string","nullable":true},"latest_reason":{"type":"string","nullable":true},"latest_run_id":{"type":"string","nullable":true},"latest_created_at":{"type":"string","format":"date-time","nullable":true},"latest_head_sha":{"type":"string","nullable":true},"latest_current":{"type":"boolean"},"can_verify":{"type":"boolean"}}}]},"VerifyPullRequestSettingInput":{"type":"object","required":["repository_id","verify_environment_id","target_mode","project_id"],"properties":{"repository_id":{"type":"string"},"verify_environment_id":{"type":"string"},"target_mode":{"type":"string","enum":["preview","managed","ci","comments"]},"deployment_environment":{"type":"string"},"preview_access":{"type":"string","enum":["org_members","public"]},"non_product_paths":{"type":"array","items":{"type":"string"}},"concurrency":{"type":"integer","description":"Up to 50 parallel browsers per run, lowered only by an explicit administrator override. Submitted values are ignored; packages do not cap browser parallelism."},"max_seconds":{"type":"integer"},"enabled":{"type":"boolean"},"app_preview_profile_id":{"type":"string","nullable":true},"app_service_id":{"type":"string","nullable":true},"provider":{"type":"string","enum":["github","gitlab"],"default":"github"},"project_id":{"type":"string","description":"Composal project owning this PR Testing configuration."},"trigger_on_push":{"type":"boolean","default":true},"trigger_on_ready":{"type":"boolean","default":true},"trigger_on_label":{"type":"boolean","default":false},"trigger_on_comment":{"type":"boolean","default":false},"trigger_label":{"type":"string","maxLength":255,"default":"qa","description":"Label whose addition triggers verification when trigger_on_label is enabled."},"github_check_enabled":{"type":"boolean","default":true,"description":"Report the Composal Verify check on GitHub pull requests. When false, new commits get no check and open checks are closed as neutral."},"demo_videos_enabled":{"type":"boolean","default":false,"description":"Record a short walkthrough of the change and add it to the PR comment. Off by default."},"preview_comment_authors":{"type":"array","items":{"type":"string"},"maxItems":10},"preview_comment_pattern":{"type":"string","maxLength":512},"preview_comment_wildcard":{"type":"string","nullable":true,"description":"A preview address with * for the part that changes, such as https://*.vercel.app. Replaces preview_comment_pattern when present; responses carry it when the pattern was written this way."},"imessage_number":{"type":"string","nullable":true,"description":"International destination number; blank or null clears it on an added environment."},"messaging_tester_number":{"type":"string","nullable":true,"description":"One configured tester number. Copied to each preview; may be overridden locally before preparation."},"imessage_number_source":{"type":"string","enum":["configured","deployment"]},"imessage_comment_prefix":{"type":"string","nullable":true,"maxLength":128},"write_scenarios":{"type":"boolean","default":false,"description":"Draft and validate focused scenarios for each change on its preview. Off by default."}},"description":"The stored-setting shape released CLIs send. Prefer VerifyPullRequestSetupInput."},"VerifyPullRequestSetting":{"allOf":[{"$ref":"#/components/schemas/VerifyPullRequestSettingInput"},{"type":"object","required":["id","provider","source_repository","preview_comment_wildcard"],"properties":{"id":{"type":"string"},"source_repository":{"type":"string"},"provider":{"type":"string","enum":["github","gitlab"]}}}],"properties":{"imessage_number":{"type":"string","nullable":true,"description":"International destination number; blank or null clears it on an added environment."},"messaging_tester_number":{"type":"string","nullable":true,"description":"One configured tester number. Copied to each preview; may be overridden locally before preparation."},"imessage_number_source":{"type":"string","enum":["configured","deployment"]},"imessage_comment_prefix":{"type":"string","nullable":true,"maxLength":128}},"required":["imessage_number","messaging_tester_number","imessage_number_source","imessage_comment_prefix","write_scenarios"]},"VerifyPullRequestOptions":{"type":"object","required":["permissions","settings","repositories","environments","preview_profiles","configured_repository","hosting_presets","setup_defaults","ci_preview","setup","messaging_enabled","tester_numbers","project_repositories","selected_repository"],"properties":{"permissions":{"type":"object","required":["manage"],"properties":{"manage":{"type":"boolean"}}},"settings":{"type":"array","items":{"$ref":"#/components/schemas/VerifyPullRequestSetting"}},"repositories":{"type":"array","items":{"$ref":"#/components/schemas/VerifyPullRequestRepositoryOption"}},"environments":{"type":"array","items":{"type":"object","required":["id","name","repository_id","external","test_accounts","previews"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"repository_id":{"type":"string","nullable":true},"external":{"type":"boolean"},"test_accounts":{"type":"array","description":"Names of the test accounts this environment signs in with","items":{"type":"string"}},"previews":{"type":"array","description":"The previews answers this environment can sign in to","items":{"type":"string","enum":["hosting","ci","composal"]}}}}},"preview_profiles":{"type":"array","items":{"type":"object","required":["id","name","repository_id","services"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"repository_id":{"type":"string","nullable":true},"services":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}}}}},"configured_repository":{"allOf":[{"$ref":"#/components/schemas/VerifyPullRequestRepositoryOption"}],"nullable":true},"hosting_presets":{"type":"array","description":"Hosting services that build PR previews and the setup answers each needs","items":{"type":"object","required":["name","answers"],"properties":{"name":{"type":"string"},"answers":{"type":"object","properties":{"deployment":{"type":"string"},"bots":{"type":"array","items":{"type":"string"}},"links":{"type":"string"},"link_pattern":{"type":"string"}}}}}},"ci_preview":{"type":"object","nullable":true,"description":"The latest preview the project's CI handed over, while the saved setting uses CI","required":["request_number","received_at"],"properties":{"request_number":{"type":"integer"},"received_at":{"type":"string","format":"date-time"}}},"setup":{"allOf":[{"$ref":"#/components/schemas/VerifyPullRequestSetup"}],"nullable":true,"description":"The project's saved setup as answers, when it has one."},"setup_defaults":{"type":"object","description":"The answers a new setup starts from","required":["deployment","triggers","pr_check","demo_videos","limits","trigger_label","write_scenarios"],"properties":{"deployment":{"type":"string"},"triggers":{"type":"object","additionalProperties":false,"properties":{"push":{"type":"boolean","description":"Run on every push to an open PR."},"ready":{"type":"boolean","description":"Run when a draft PR is marked ready."},"label":{"type":"string","nullable":true,"maxLength":255,"description":"Run when this label is added; null turns label runs off."},"comment":{"type":"boolean","description":"Run on /verify comments."}},"description":"When runs start. GitHub only; GitLab runs on every MR update out of draft.","required":["push","ready","label","comment"]},"pr_check":{"type":"boolean"},"demo_videos":{"type":"boolean"},"limits":{"type":"object","additionalProperties":false,"properties":{"max_minutes":{"type":"number","minimum":0.5,"maximum":120,"description":"Longest a run may take."},"skip_paths":{"type":"array","maxItems":50,"items":{"type":"string"},"description":"Relative file globs; a change touching only these is not tested."}},"required":["max_minutes","skip_paths"]},"trigger_label":{"type":"string","description":"The label a label trigger starts with"},"write_scenarios":{"type":"boolean","default":false,"description":"Draft and validate focused scenarios for each change on its preview. Off by default."}}},"messaging_enabled":{"type":"boolean"},"tester_numbers":{"type":"array","items":{"type":"string"}},"project_repositories":{"type":"array","items":{"$ref":"#/components/schemas/VerifyProjectPrRepository"}},"selected_repository":{"allOf":[{"$ref":"#/components/schemas/VerifyPullRequestRepositoryOption"}],"nullable":true}}},"VerifyPullRequestRun":{"type":"object","required":["id","verify_environment_revision_id","app_preview_id","head_sha","base_sha","state","display_state","reason","target_url","created_at","run_id","execution_path","selection_json","scenario_writing_summary"],"properties":{"id":{"type":"string"},"verify_environment_revision_id":{"type":"string","nullable":true},"app_preview_id":{"type":"string","nullable":true},"head_sha":{"type":"string"},"base_sha":{"type":"string"},"state":{"type":"string"},"display_state":{"type":"string"},"reason":{"type":"string","nullable":true},"target_url":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"run_id":{"type":"string","nullable":true},"execution_path":{"type":"string","nullable":true},"selection_json":{"type":"object","nullable":true,"required":["source","confidence","fallback","selected","excluded"],"properties":{"source":{"type":"string"},"confidence":{"type":"string"},"fallback":{"type":"boolean"},"selected":{"type":"array","items":{"type":"object","required":["id","name","reason","version"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"reason":{"type":"string"},"version":{"type":"integer"},"confidence":{"type":"number"}}}},"excluded":{"type":"array","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"type":"integer"},"reason":{"type":"string"}}}},"context_mode":{"type":"string","enum":["patches","filenames"]},"comparison":{"type":"object","required":["mode","base_sha","head_sha"],"properties":{"mode":{"type":"string","enum":["incremental","full_pr"]},"base_sha":{"type":"string"},"head_sha":{"type":"string"}}},"reused":{"type":"array","items":{"type":"object","required":["id","name","reason","version","run_id","execution_path"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"reason":{"type":"string"},"version":{"type":"integer"},"run_id":{"type":"string"},"execution_path":{"type":"string"}}}},"confidence_threshold":{"type":"number"},"target_scope":{"type":"string","enum":["test_environment"]},"change_impact":{"type":"object","required":["kind","reason"],"properties":{"kind":{"type":"string","enum":["browser","backend_only","uncertain"]},"reason":{"type":"string"}}}}},"run_progress":{"type":"object","nullable":true,"required":["total","planned","planning","running","finished"],"properties":{"total":{"type":"integer"},"planned":{"type":"integer"},"planning":{"type":"integer"},"running":{"type":"integer"},"finished":{"type":"integer"}}},"imessage_number":{"type":"string","nullable":true},"environment_path":{"type":"string","nullable":true},"messaging_source":{"allOf":[{"$ref":"#/components/schemas/MessagingTargetSource"}],"nullable":true},"scenario_writing_summary":{"type":"object","nullable":true,"required":["status","ready","progress","candidates","message"],"properties":{"status":{"type":"string"},"ready":{"type":"boolean"},"progress":{"type":"object","required":["ready","total","fixing"],"properties":{"ready":{"type":"integer"},"total":{"type":"integer"},"fixing":{"type":"integer"}}},"candidates":{"type":"array","items":{"type":"object","required":["name","state","reason","revision_count","result_path","applied_at","application_error"],"properties":{"name":{"type":"string"},"state":{"type":"string"},"reason":{"type":"string","nullable":true},"revision_count":{"type":"integer"},"result_path":{"type":"string","nullable":true},"applied_at":{"type":"string","nullable":true,"format":"date-time"},"application_error":{"type":"string","nullable":true}}}},"message":{"type":"string"}}}}},"VerifyPullRequestPage":{"type":"object","required":["permissions","pull_request","runs","pagination","findings","available_tests","preview_cleanup_ready"],"properties":{"preview_cleanup_ready":{"type":"boolean","description":"The source is closed or merged and unfinished Scenario execution and Discovery have stopped. Worker and application cleanup do not hold its web runtime."},"preview_url":{"description":"Most recently supplied preview URL for the current head commit, retained across verification attempts.","type":["string","null"]},"permissions":{"type":"object","required":["manage"],"properties":{"manage":{"type":"boolean"}}},"pull_request":{"$ref":"#/components/schemas/VerifyPullRequest"},"current_run":{"description":"Latest verification request if it matches the current head and base, independent of history pagination.","oneOf":[{"$ref":"#/components/schemas/VerifyPullRequestRun"},{"type":"null"}]},"runs":{"type":"array","items":{"$ref":"#/components/schemas/VerifyPullRequestRun"}},"pagination":{"$ref":"#/components/schemas/VerifyRunsPagination"},"findings":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/VerifyFindingRecord"},{"type":"object","required":["run_id","scenario_run_id","web_path"],"properties":{"run_id":{"type":"string"},"scenario_run_id":{"type":"string"},"web_path":{"type":"string"}}}]}},"project":{"oneOf":[{"$ref":"#/components/schemas/Project"},{"type":"null"}]},"available_tests":{"type":"array","description":"All active saved scenarios in the configured project, including scenarios outside the automatic selection.","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}}}},"VerifyPullRequestLaunchOption":{"type":"object","required":["repository_id","repository_name","github_repository","environment_name","scenario_source","target_mode","preview_access","concurrency","max_seconds","available","provider","source_repository"],"properties":{"repository_id":{"type":"string"},"repository_name":{"type":"string"},"github_repository":{"type":"string","nullable":true},"environment_name":{"type":"string"},"target_mode":{"type":"string"},"preview_access":{"type":"string"},"concurrency":{"type":"integer"},"max_seconds":{"type":"integer"},"available":{"type":"boolean"},"provider":{"type":"string","enum":["github","gitlab"]},"source_repository":{"type":"string","nullable":true},"scenario_source":{"type":"string"}}},"VerifyBranchPreview":{"type":"object","required":["id","number","head_sha","requested_run_id","status","environment_id","web_path","project_id","project_slug","source_branch"],"properties":{"id":{"type":"string","nullable":true},"number":{"type":"integer","nullable":true},"head_sha":{"type":"string"},"requested_run_id":{"type":"string","nullable":true},"status":{"type":"string","enum":["preview_registered"]},"environment_id":{"type":"string"},"web_path":{"type":"string"},"project_id":{"type":"string","nullable":true},"project_slug":{"type":"string","nullable":true},"source_branch":{"type":"string","nullable":true}}},"VerifyPullRequestRepositoryOption":{"type":"object","required":["id","name","provider","source_repository","automatic_testing_enabled","associated"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"provider":{"type":"string","enum":["github","gitlab"]},"source_repository":{"type":"string"},"automatic_testing_enabled":{"type":"boolean"},"source_host":{"type":"string"},"associated":{"type":"boolean"}}},"VerifyPreviewDetection":{"type":"object","required":["kind"],"properties":{"kind":{"type":"string","enum":["deployment","comment","none"]},"provider":{"type":"string","description":"Who builds the previews, such as Vercel or GitLab"},"request_number":{"type":"integer"},"example_url":{"type":"string"},"deployment":{"type":"string","description":"The deployment answer"},"bots":{"type":"array","items":{"type":"string"},"description":"The bots answer"},"link_pattern":{"type":"string","description":"The link_pattern answer"},"imessage_number":{"type":"string","nullable":true,"description":"International destination number; blank or null clears it on an added environment."},"imessage_comment_prefix":{"type":"string"}}},"VerifyPullRequestSetupInput":{"type":"object","required":["project_id"],"additionalProperties":false,"description":"PR testing setup answers. Give deployment, or bots with links or link_pattern, for hosting; preview_profile and service for composal.","properties":{"enabled":{"type":"boolean","description":"Test PRs automatically. New setups stay off until this is true."},"previews":{"type":"string","enum":["hosting","ci","composal"],"description":"Who builds each PR's preview: a hosting service such as Vercel or Netlify, your CI workflow, or Composal hosting."},"deployment":{"type":["string","null"],"description":"hosting: the deployment environment name the host reports on each PR, such as Preview."},"bots":{"type":"array","maxItems":10,"items":{"type":"string"},"description":"hosting: bot accounts that comment the preview link, such as netlify[bot]. GitHub only."},"links":{"type":["string","null"],"description":"hosting: the preview address with * for the part that changes, such as https://deploy-preview-*--shop.netlify.app."},"link_pattern":{"type":["string","null"],"maxLength":512,"description":"hosting: a regular expression for the preview link, as preview detection returns it. Use links when a * address fits."},"preview_profile":{"type":["string","null"],"description":"composal: the preview profile that builds each PR. Name, slug or ID."},"service":{"type":["string","null"],"description":"composal: the public service the browsers open. Name, slug or ID."},"environment":{"type":"string","description":"The environment whose test accounts sign in to the previews. Hosting and Composal previews need an external environment. Name, slug or ID; defaults to the saved or only fitting one."},"triggers":{"type":"object","additionalProperties":false,"properties":{"push":{"type":"boolean","description":"Run on every push to an open PR."},"ready":{"type":"boolean","description":"Run when a draft PR is marked ready."},"label":{"type":["string","null"],"maxLength":255,"description":"Run when this label is added; null turns label runs off."},"comment":{"type":"boolean","description":"Run on /verify comments."}},"description":"When runs start. GitHub only; GitLab runs on every MR update out of draft."},"pr_check":{"type":"boolean","description":"Report a Composal Verify check on GitHub PRs."},"demo_videos":{"type":"boolean","description":"Record a short walkthrough of the change and add it to the PR comment. Off by default."},"limits":{"type":"object","additionalProperties":false,"properties":{"max_minutes":{"type":"number","minimum":0.5,"maximum":120,"description":"Longest a run may take."},"skip_paths":{"type":"array","maxItems":50,"items":{"type":"string"},"description":"Relative file globs; a change touching only these is not tested."}}},"project_id":{"type":"string","description":"Project slug or ID."},"repository":{"type":"string","description":"Repository slug, ID or owner/name. Defaults to the saved or only repository. repository_id is accepted too."},"provider":{"type":"string","enum":["github","gitlab"],"description":"Only needed when the repository is connected to both."},"imessage_number":{"type":"string","nullable":true,"description":"International destination number; blank or null clears it on an added environment."},"messaging_tester_number":{"type":"string","nullable":true,"description":"One configured tester number. Copied to each preview; may be overridden locally before preparation."},"imessage_number_source":{"type":"string","enum":["configured","deployment"]},"imessage_comment_prefix":{"type":"string","nullable":true,"maxLength":128},"write_scenarios":{"type":"boolean","default":false,"description":"Draft and validate focused scenarios for each change on its preview. Off by default."},"repository_kind":{"type":"string","enum":["auto","mfe","api"],"description":"Auto assesses each diff; MFE supports browser previews; API analyzes changes and offers manual runs against the configured test environment."}}},"VerifyPullRequestSetup":{"type":"object","description":"A project's PR testing setup as the setup answers.","required":["id","project_id","repository","provider","source_repository","enabled","previews","deployment","bots","links","link_pattern","preview_profile","service","environment","triggers","pr_check","demo_videos","limits","trigger_label","imessage_number","messaging_tester_number","imessage_number_source","imessage_comment_prefix","write_scenarios","repository_kind","browser_options_available"],"properties":{"enabled":{"type":"boolean","description":"Test PRs automatically. New setups stay off until this is true."},"previews":{"type":"string","enum":["hosting","ci","composal"],"description":"Who builds each PR's preview: a hosting service such as Vercel or Netlify, your CI workflow, or Composal hosting."},"deployment":{"type":"string","nullable":true,"description":"hosting: the deployment environment name the host reports on each PR, such as Preview."},"bots":{"type":"array","maxItems":10,"items":{"type":"string"},"description":"hosting: bot accounts that comment the preview link, such as netlify[bot]. GitHub only."},"links":{"type":"string","nullable":true,"description":"hosting: the preview address with * for the part that changes, such as https://deploy-preview-*--shop.netlify.app."},"link_pattern":{"type":"string","nullable":true,"maxLength":512,"description":"hosting: a regular expression for the preview link, as preview detection returns it. Use links when a * address fits."},"preview_profile":{"type":"string","nullable":true,"description":"composal: the preview profile that builds each PR. Its ID."},"service":{"type":"string","nullable":true,"description":"composal: the public service the browsers open. Its ID."},"environment":{"type":"string","description":"The environment whose test accounts sign in to the previews. Hosting and Composal previews need an external environment. Its ID."},"triggers":{"type":"object","additionalProperties":false,"properties":{"push":{"type":"boolean","description":"Run on every push to an open PR."},"ready":{"type":"boolean","description":"Run when a draft PR is marked ready."},"label":{"type":"string","nullable":true,"maxLength":255,"description":"Run when this label is added; null turns label runs off."},"comment":{"type":"boolean","description":"Run on /verify comments."}},"description":"When runs start. GitHub only; GitLab runs on every MR update out of draft.","required":["push","ready","label","comment"]},"pr_check":{"type":"boolean","description":"Report a Composal Verify check on GitHub PRs."},"demo_videos":{"type":"boolean","description":"Record a short walkthrough of the change and add it to the PR comment. Off by default."},"limits":{"type":"object","additionalProperties":false,"properties":{"max_minutes":{"type":"number","minimum":0.5,"maximum":120,"description":"Longest a run may take."},"skip_paths":{"type":"array","maxItems":50,"items":{"type":"string"},"description":"Relative file globs; a change touching only these is not tested."}},"required":["max_minutes","skip_paths"]},"id":{"type":"string"},"project_id":{"type":"string"},"repository":{"type":"string","description":"Repository ID; see repositories for its name."},"provider":{"type":"string","enum":["github","gitlab"]},"source_repository":{"type":"string"},"trigger_label":{"type":"string","description":"The label name, kept while label runs are off; triggers.label is it when they are on."},"imessage_number":{"type":"string","nullable":true,"description":"International destination number; blank or null clears it on an added environment."},"messaging_tester_number":{"type":"string","nullable":true,"description":"One configured tester number. Copied to each preview; may be overridden locally before preparation."},"imessage_number_source":{"type":"string","enum":["configured","deployment"]},"imessage_comment_prefix":{"type":"string","nullable":true,"maxLength":128},"write_scenarios":{"type":"boolean","default":false,"description":"Draft and validate focused scenarios for each change on its preview. Off by default."},"repository_kind":{"type":"string","enum":["auto","mfe","api"],"description":"Auto assesses each diff; MFE supports browser previews; API analyzes changes and offers manual runs against the configured test environment."},"browser_options_available":{"type":"boolean","description":"Whether browser demo and scenario-writing options apply to this saved repository setup."}}},"VerifyProjectPrRepository":{"type":"object","required":["id","name","source_repository","provider","configured","automatic_testing_enabled","can_configure","preview_source","source_importing"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"source_repository":{"type":"string"},"provider":{"type":"string","nullable":true,"enum":["github","gitlab"]},"configured":{"type":"boolean"},"automatic_testing_enabled":{"type":"boolean"},"can_configure":{"type":"boolean"},"preview_source":{"type":"string","nullable":true},"source_importing":{"type":"boolean","description":"The source is still importing (GitLab): linked, but PR testing can't be configured until it finishes."}}},"VerifyDemoShare":{"type":"object","description":"A signed-out PR demo: the walkthrough's sentence, the commit it recorded and its video, served only through the share link.","additionalProperties":false,"required":["summary","head_sha","recording"],"properties":{"summary":{"type":"string","description":"What the recorded browser confirmed."},"head_sha":{"type":"string"},"recording":{"$ref":"#/components/schemas/VerifyMediaRecording"}}},"GitReviewIdentity":{"type":"object","required":["git_commit_id","change_id","change_number","patchset_number"],"properties":{"git_commit_id":{"type":"string","minLength":40,"maxLength":40,"pattern":"^[0-9a-f]{40}$"},"change_id":{"type":"string","minLength":32,"maxLength":32,"pattern":"^[0-9a-f]{32}$"},"change_number":{"type":"integer","minimum":1},"patchset_number":{"type":"integer","minimum":1}}},"GitPublicationSubmitRequest":{"type":"object","required":["git_publication_id"],"description":"Uses the receipt's verified graph and target. Explicit revisions and target fields are rejected. Review message, reviewers, labels, draft, and assets retain normal submit semantics.","properties":{"git_publication_id":{"type":"string"},"message":{"type":"string","nullable":true,"description":"Initial durable rich-text description for newly created changes."},"reviewers":{"type":"array","items":{"type":"string"},"description":"Organization member names or emails to add as reviewers."},"remove_reviewers":{"type":"array","items":{"type":"string"},"description":"Organization member names or emails to remove as reviewers."},"labels":{"type":"array","items":{"type":"string"}},"draft":{"type":"boolean","nullable":true,"description":"On submit, omitted or null means ready; on sync, omitted or null preserves the current draft status."},"assets":{"type":"array","items":{"type":"object","required":["id","alias"],"properties":{"id":{"type":"string"},"alias":{"type":"string"}}}}},"not":{"anyOf":[{"required":["revisions"]},{"required":["target"]},{"required":["target_branch"]},{"required":["expected_target_commit_id"]},{"required":["expected_target_version"]}]}},"GitPublicationReceipt":{"type":"object","required":["publication_id","request_digest","status"],"properties":{"transfer_refs":{"type":"array","description":"Immutable receipt-owned refs returned by preparation; transfer each exact Git target before polling readiness.","items":{"type":"object","required":["name","old","new"],"properties":{"name":{"type":"string"},"old":{"type":"string","pattern":"^[0-9a-f]{40}$"},"new":{"type":"string","pattern":"^[0-9a-f]{40}$"}}}},"publication_id":{"type":"string"},"request_digest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"status":{"type":"string","enum":["awaiting_objects","objects_ready"]}}},"GitPublicationRequest":{"type":"object","additionalProperties":false,"required":["target_branch","expected_target_git_id","revisions"],"properties":{"target_branch":{"type":"string"},"expected_target_git_id":{"type":"string","pattern":"^[0-9a-f]{40}$"},"revisions":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["change_id","git_commit_id","git_parent_ids"],"dependentRequired":{"expected_head_commit_id":["expected_patchset_number"],"expected_patchset_number":["expected_head_commit_id"]},"properties":{"change_id":{"type":"string","pattern":"^[0-9a-f]{32}$"},"git_commit_id":{"type":"string","pattern":"^[0-9a-f]{40}$"},"expected_head_commit_id":{"type":"string","pattern":"^[0-9a-f]{40}$","description":"Observed original Git head of the existing review. Required together with expected_patchset_number when amending."},"expected_patchset_number":{"type":"integer","minimum":1},"git_parent_ids":{"type":"array","maxItems":128,"uniqueItems":true,"items":{"type":"string","pattern":"^[0-9a-f]{40}$"}}}}}}},"WorkspaceActivityLiveItem":{"oneOf":[{"$ref":"#/components/schemas/WorkspaceActivityLandingLiveItem"},{"$ref":"#/components/schemas/WorkspaceActivityDeploymentLiveItem"},{"$ref":"#/components/schemas/WorkspaceActivityDeploymentGroupLiveItem"},{"$ref":"#/components/schemas/WorkspaceActivityGithubImportLiveItem"}]},"WorkspaceActivityRepositorySummary":{"type":"object","required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"}}},"WorkspaceActivityChangeSummary":{"type":"object","required":["id","number","title"],"properties":{"id":{"type":"string"},"number":{"type":"integer"},"title":{"type":"string"}}},"WorkspaceActivityActorSummary":{"type":"object","required":["id","name","picture_url"],"properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true},"picture_url":{"type":"string","nullable":true}}},"WorkspaceActivityLandingLiveItem":{"type":"object","required":["id","kind","occurred_at","state","change_count","repository","change","changes","actor"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["landing"]},"occurred_at":{"type":"string","format":"date-time"},"state":{"type":"string","enum":["queued","validating","ready","merging"]},"change_count":{"type":"integer"},"repository":{"$ref":"#/components/schemas/WorkspaceActivityRepositorySummary"},"change":{"$ref":"#/components/schemas/WorkspaceActivityChangeSummary"},"changes":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceActivityChangeSummary"}},"actor":{"allOf":[{"$ref":"#/components/schemas/WorkspaceActivityActorSummary"}],"nullable":true}}},"WorkspaceActivityDeploymentLiveItem":{"type":"object","required":["id","kind","occurred_at","status","service_name","environment_name","deployment_id","live_region_count","region_count","actor"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["deployment"]},"occurred_at":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["queued","building","deploying"]},"service_name":{"type":"string"},"environment_name":{"type":"string"},"deployment_id":{"type":"string"},"live_region_count":{"type":"integer"},"region_count":{"type":"integer"},"actor":{"allOf":[{"$ref":"#/components/schemas/WorkspaceActivityActorSummary"}],"nullable":true}}},"WorkspaceActivityDeploymentGroupLiveItem":{"type":"object","required":["id","kind","occurred_at","title","service_names","actor"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["deployment_group"]},"occurred_at":{"type":"string","format":"date-time"},"title":{"type":"string"},"service_names":{"type":"array","items":{"type":"string"}},"actor":{"allOf":[{"$ref":"#/components/schemas/WorkspaceActivityActorSummary"}],"nullable":true}}},"WorkspaceActivityGithubImportLiveItem":{"type":"object","required":["id","kind","occurred_at","completed_count","total_count","actor"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["github_import"]},"occurred_at":{"type":"string","format":"date-time"},"completed_count":{"type":"integer"},"total_count":{"type":"integer"},"actor":{"allOf":[{"$ref":"#/components/schemas/WorkspaceActivityActorSummary"}],"nullable":true}}},"WorkspaceActivityRecentItem":{"oneOf":[{"$ref":"#/components/schemas/WorkspaceActivityReviewRequestedItem"},{"$ref":"#/components/schemas/WorkspaceActivityChangesRequestedItem"},{"$ref":"#/components/schemas/WorkspaceActivityGithubAccessItem"},{"$ref":"#/components/schemas/WorkspaceActivityLandingItem"},{"$ref":"#/components/schemas/WorkspaceActivityDeploymentItem"},{"$ref":"#/components/schemas/WorkspaceActivityGithubImportItem"}]},"WorkspaceActivityReviewRequestedItem":{"type":"object","required":["id","kind","occurred_at","repository","change","actor"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["review_requested"]},"occurred_at":{"type":"string","format":"date-time"},"repository":{"$ref":"#/components/schemas/WorkspaceActivityRepositorySummary"},"change":{"$ref":"#/components/schemas/WorkspaceActivityChangeSummary"},"actor":{"$ref":"#/components/schemas/WorkspaceActivityActorSummary"}}},"WorkspaceActivityChangesRequestedItem":{"type":"object","required":["id","kind","occurred_at","repository","change","actors"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["changes_requested"]},"occurred_at":{"type":"string","format":"date-time"},"repository":{"$ref":"#/components/schemas/WorkspaceActivityRepositorySummary"},"change":{"$ref":"#/components/schemas/WorkspaceActivityChangeSummary"},"actors":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceActivityActorSummary"}}}},"WorkspaceActivityLandingItem":{"type":"object","required":["id","kind","occurred_at","outcome","change_count","repository","change","changes","actor"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["landing"]},"occurred_at":{"type":"string","format":"date-time"},"outcome":{"type":"string","enum":["merged","ejected","cancelled","needs_attention"]},"change_count":{"type":"integer"},"repository":{"$ref":"#/components/schemas/WorkspaceActivityRepositorySummary"},"change":{"$ref":"#/components/schemas/WorkspaceActivityChangeSummary"},"changes":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceActivityChangeSummary"}},"actor":{"allOf":[{"$ref":"#/components/schemas/WorkspaceActivityActorSummary"}],"nullable":true}}},"WorkspaceActivityDeploymentItem":{"type":"object","required":["id","kind","occurred_at","outcome","service_name","environment_name","deployment_id","live_region_count","region_count","actor"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["deployment"]},"occurred_at":{"type":"string","format":"date-time"},"outcome":{"type":"string","enum":["active","failed","canceled","rolled_back"]},"service_name":{"type":"string"},"environment_name":{"type":"string"},"deployment_id":{"type":"string"},"live_region_count":{"type":"integer"},"region_count":{"type":"integer"},"actor":{"allOf":[{"$ref":"#/components/schemas/WorkspaceActivityActorSummary"}],"nullable":true}}},"WorkspaceActivityGithubImportItem":{"type":"object","required":["id","kind","occurred_at","outcome","imported_count","total_count","actor"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["github_import"]},"occurred_at":{"type":"string","format":"date-time"},"outcome":{"type":"string","enum":["success","attention"]},"imported_count":{"type":"integer"},"total_count":{"type":"integer"},"actor":{"allOf":[{"$ref":"#/components/schemas/WorkspaceActivityActorSummary"}],"nullable":true}}},"WorkspaceActivityPage":{"type":"object","required":["live_activity","recent_items","unresolved_notification_count"],"properties":{"live_activity":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceActivityLiveItem"}},"recent_items":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceActivityRecentItem"}},"unresolved_notification_count":{"type":"integer"}}},"WorkspaceActivityGithubAccessItem":{"type":"object","required":["id","kind","occurred_at","installation_id","account_login","message"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["github_connection_health"]},"occurred_at":{"type":"string","format":"date-time"},"installation_id":{"type":"string"},"account_login":{"type":"string"},"message":{"type":"string"}}},"OrganizationSummary":{"type":"object","required":["id","slug","name","timezone","sandbox_region","logo_url","role","personal","member_count","pending_invitation_count","repository_count","activated_products","can_activate_products","github_prs_authored_by_change_author","verify_pr_scenario_writing_enabled","created_at","updated_at","created_at_label","updated_at_label"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string","description":"Default IANA timezone for organization-local schedules such as nightly dreaming."},"logo_url":{"type":"string","nullable":true},"role":{"type":"string","nullable":true},"personal":{"type":"boolean"},"member_count":{"type":"integer","minimum":0},"pending_invitation_count":{"type":"integer","minimum":0},"repository_count":{"type":"integer","minimum":0},"source_ui_enabled":{"type":"boolean","description":"Organization-scoped Source workspace rollout; missing values mean disabled."},"source_control_providers":{"type":"array","description":"Connected source control providers for this organization. Missing values mean no providers are known.","uniqueItems":true,"items":{"type":"string","enum":["github","gitlab"]}},"activated_products":{"type":"array","description":"Products this organization has activated (PRD 144). Activation is what makes a product's surfaces visible; it is neither permission nor entitlement.","items":{"type":"string","enum":["transcripts","vcs"]}},"can_activate_products":{"type":"boolean","description":"Whether the current user may activate a product for this organization: the organization-admin rule the activation endpoint enforces."},"sandbox_region":{"type":"string","enum":["us-was-1","us-pdx-1","eu-lon-1","eu-fra-1","auto"]},"github_prs_authored_by_change_author":{"type":"boolean"},"verify_pr_scenario_writing_enabled":{"type":"boolean"},"shared_agent_personal_accounts_enabled":{"type":"boolean","description":"Whether a shared agent may use one person's account for everyone who chats with it. Present only where agent integrations are on."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_at_label":{"type":"string","nullable":true},"updated_at_label":{"type":"string","nullable":true}}},"WorkspaceSpace":{"type":"object","required":["id","organization_id","repository_id","repository_slug","slug","name","description","icon_name","status","import_status","hidden","position","created_at","updated_at"],"properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"repository_id":{"type":"string"},"repository_slug":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"icon_name":{"type":"string","enum":["book-open","boxes","briefcase-business","code-xml","file-text","folder","folder-code","globe-2","lightbulb","panel-top","rocket","server","shield-check","sparkles","terminal"]},"status":{"type":"string","enum":["active","archived"]},"import_status":{"type":"string","nullable":true,"enum":["queued","running","succeeded","failed","canceled"]},"hidden":{"type":"boolean"},"position":{"type":"integer","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"PasswordRegistrationOptions":{"type":"object","additionalProperties":false,"required":["email_password_signup_enabled","turnstile_site_key","waitlist_enabled"],"properties":{"waitlist_enabled":{"type":"boolean","description":"New public signups require waitlist approval when enabled."},"openai_sign_in_enabled":{"type":"boolean","description":"Whether ChatGPT identity sign-in is configured and enabled for rollout."},"email_password_signup_enabled":{"type":"boolean"},"turnstile_site_key":{"type":"string","nullable":true}}}},"/api/v1/ci/nodes/{id}/leases/{lease_id}/reconciliations/{reconciliation_id}/output":{"post":{"summary":"Accept a lease-scoped generated-file reconciliation delta","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["outputs"],"properties":{"outputs":{"type":"array","maxItems":100,"items":{"oneOf":[{"type":"object","additionalProperties":false,"required":["path","operation","content_base64","sha256","executable"],"properties":{"path":{"type":"string","maxLength":4096},"operation":{"type":"string","enum":["write"]},"content_base64":{"type":"string"},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"executable":{"type":"boolean"}}},{"type":"object","additionalProperties":false,"required":["path","operation"],"properties":{"path":{"type":"string","maxLength":4096},"operation":{"type":"string","enum":["delete"]}}}]}}}}}}},"responses":{"200":{"description":"Immutable output receipt accepted; candidate publication is separate","content":{"application/json":{"schema":{"type":"object","required":["receipt_id","digest","status"],"properties":{"receipt_id":{"type":"string"},"digest":{"type":"string"},"status":{"type":"string","enum":["accepted"]}}}}}},"401":{"description":"Node certificate authentication failed"},"404":{"description":"Lease or reconciliation not available to this node"},"409":{"description":"Stale lease or conflicting output receipt"},"422":{"description":"Invalid or disallowed output delta"}}}},"/api/v1/ci/nodes/{id}/leases/{lease_id}/claim":{"post":{"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"batch_deadline_supported":{"type":"boolean","default":false,"description":"Runner enforces the batch execution deadline in lease metadata locally. Required to claim an adjacent batch job; ordinary jobs remain compatible without it."}}}}}}}},"/api/v1/ci/runner_pools/{runner_pool_id}/runners/{runner_id}/leases/{id}/claim":{"post":{"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"batch_deadline_supported":{"type":"boolean","default":false,"description":"Runner enforces the batch execution deadline in lease metadata locally. Required to claim an adjacent batch job; ordinary jobs remain compatible without it."}}}}}}}},"parameters":{"TranscriptReadSource":{"in":"query","name":"source_ref","description":"Opaque source reference returned by discovery, required on the source route unless continuing with a cursor.","schema":{"type":"string"}},"TranscriptReadCursor":{"in":"query","name":"cursor","schema":{"type":"string"}},"TranscriptReadLimit":{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},"TranscriptReadBytes":{"in":"query","name":"max_bytes","schema":{"type":"integer","minimum":8192,"maximum":131072,"default":32768}},"TranscriptReadTools":{"in":"query","name":"include_tools","schema":{"type":"boolean","default":false}},"TranscriptReadAround":{"in":"query","name":"around_event","schema":{"type":"integer","minimum":0},"description":"Cited event index, paired with event_digest and without cursor."},"TranscriptReadDigest":{"in":"query","name":"event_digest","schema":{"type":"string","pattern":"^[0-9a-f]{64}$"}}}},"tags":[{"name":"admin"},{"name":"agent"},{"name":"agent_integration_callback"},{"name":"agent_marketplace"},{"name":"agent_sessions"},{"name":"agent_web_previews"},{"name":"app_access"},{"name":"artifacts"},{"name":"auth"},{"name":"bazel"},{"name":"billing"},{"name":"cdn_spaces"},{"name":"check"},{"name":"ci"},{"name":"clawder"},{"name":"cli_events"},{"name":"cli_releases"},{"name":"com_site_access"},{"name":"contact_submissions"},{"name":"device_runtime"},{"name":"edge"},{"name":"email_verifications"},{"name":"execution"},{"name":"git_imports"},{"name":"github"},{"name":"github_app"},{"name":"github_runner_admission"},{"name":"github_runner_cache"},{"name":"github_runner_checkout"},{"name":"github_runner_scale_sets"},{"name":"github_runner_supply_admission"},{"name":"gitlab"},{"name":"hosting"},{"name":"identity"},{"name":"marketing_settings"},{"name":"mcp"},{"name":"me"},{"name":"merge_resolutions"},{"name":"metronome"},{"name":"model_subscription_accounts"},{"name":"networking"},{"name":"observability"},{"name":"openapi"},{"name":"org_invitations"},{"name":"organizations"},{"name":"otel_ingest"},{"name":"personal_access_tokens"},{"name":"proactive_agent_waitlist_entries"},{"name":"registry"},{"name":"relay"},{"name":"repositories"},{"name":"repository_access"},{"name":"repository_events"},{"name":"repository_import_sessions"},{"name":"signals"},{"name":"source_connections"},{"name":"spark"},{"name":"static_sites"},{"name":"stripe"},{"name":"submit_telemetry"},{"name":"thread_preview_access"},{"name":"transcripts"},{"name":"verify"},{"name":"verify_messages"},{"name":"waitlist_applications"},{"name":"webhooks"}],"security":[{"bearerAuth":[]}]}