{"openapi":"3.1.0","info":{"title":"Manufact Cloud API","description":"Backend API for Manufact Cloud","version":"1.0.0"},"servers":[{"url":"https://cloud.manufact.com","description":"Manufact Cloud API"}],"paths":{"/api/v1/github/webhook":{"post":{"operationId":"postApiV1GithubWebhook","tags":["GitHub"],"description":"GitHub App webhook: verifies `X-Hub-Signature-256` (HMAC-SHA256 of the raw body), then processes installation lifecycle events and `push`, `pull_request`, and `check_run` events for auto-deploy. Not session-authenticated.","parameters":[{"name":"X-GitHub-Event","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-Hub-Signature-256","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"description":"GitHub event-specific JSON payload (object).","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Webhook accepted (may be a no-op for unhandled event types)","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Invalid JSON body","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}}}},"/api/v1/github/installations/callback-by-state":{"post":{"operationId":"postApiV1GithubInstallationsCallbackByState","tags":["GitHub"],"description":"Save a new GitHub App installation using a signed connect `state` (no session). Used by the in-chat connect_github flow.","responses":{"200":{"description":"Installation saved","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"installationId":{"type":"string"},"appId":{"type":"string"},"organizationId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"isActive":{"type":"boolean"},"disconnectReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"disconnectedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"account":{"anyOf":[{"type":"object","properties":{"login":{"type":"string"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"type":"string"}},"required":["login","avatar_url","type"]},{"type":"null"}]},"repositoryHealth":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"healthy":{"type":"integer","minimum":0,"maximum":9007199254740991},"accessLost":{"type":"integer","minimum":0,"maximum":9007199254740991},"degraded":{"type":"integer","minimum":0,"maximum":9007199254740991},"unknown":{"type":"integer","minimum":0,"maximum":9007199254740991},"affectedServers":{"type":"integer","minimum":0,"maximum":9007199254740991},"linkedRepositories":{"type":"array","items":{"type":"object","properties":{"serverId":{"type":"string"},"serverName":{"type":"string"},"repoFullName":{"type":"string"},"accessStatus":{"type":"string"}},"required":["serverId","serverName","repoFullName","accessStatus"]}},"lastCheckedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]}},"required":["total","healthy","accessLost","degraded","unknown","affectedServers","linkedRepositories","lastCheckedAt"]}},"required":["id","installationId","appId","organizationId","createdAt","isActive","disconnectReason","disconnectedAt","account","repositoryHealth"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"installation_id":{"type":"string"},"setup_action":{"type":"string"},"code":{"type":"string"},"state":{"type":"string"}},"required":["installation_id","state"]}}}}}},"/api/v1/github/installations":{"get":{"operationId":"getApiV1GithubInstallations","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"installations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"installationId":{"type":"string"},"appId":{"type":"string"},"organizationId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"isActive":{"type":"boolean"},"disconnectReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"disconnectedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"account":{"anyOf":[{"type":"object","properties":{"login":{"type":"string"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"type":"string"}},"required":["login","avatar_url","type"]},{"type":"null"}]},"repositoryHealth":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"healthy":{"type":"integer","minimum":0,"maximum":9007199254740991},"accessLost":{"type":"integer","minimum":0,"maximum":9007199254740991},"degraded":{"type":"integer","minimum":0,"maximum":9007199254740991},"unknown":{"type":"integer","minimum":0,"maximum":9007199254740991},"affectedServers":{"type":"integer","minimum":0,"maximum":9007199254740991},"linkedRepositories":{"type":"array","items":{"type":"object","properties":{"serverId":{"type":"string"},"serverName":{"type":"string"},"repoFullName":{"type":"string"},"accessStatus":{"type":"string"}},"required":["serverId","serverName","repoFullName","accessStatus"]}},"lastCheckedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]}},"required":["total","healthy","accessLost","degraded","unknown","affectedServers","linkedRepositories","lastCheckedAt"]}},"required":["id","installationId","appId","organizationId","createdAt","isActive","disconnectReason","disconnectedAt","account","repositoryHealth"]}}},"required":["installations"]}}}},"400":{"description":"Missing organizationId","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["GitHub"],"description":"List GitHub App installations for a given organization. Requires organizationId query parameter. Scoped to the backend's configured GITHUB_APP_ID — installations from other apps (e.g. dev vs prod) are excluded, since this backend can only read their repos.","parameters":[{"in":"query","name":"organizationId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"in":"query","name":"includeInactive","schema":{"anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false"]}]}}]}},"/api/v1/github/installations/{installationId}/recheck-access":{"post":{"operationId":"postApiV1GithubInstallationsByInstallationIdRecheckAccess","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"checked":{"type":"integer","minimum":0,"maximum":9007199254740991},"healthy":{"type":"integer","minimum":0,"maximum":9007199254740991},"accessLost":{"type":"integer","minimum":0,"maximum":9007199254740991},"checkFailed":{"type":"integer","minimum":0,"maximum":9007199254740991},"repositoryHealth":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"healthy":{"type":"integer","minimum":0,"maximum":9007199254740991},"accessLost":{"type":"integer","minimum":0,"maximum":9007199254740991},"degraded":{"type":"integer","minimum":0,"maximum":9007199254740991},"unknown":{"type":"integer","minimum":0,"maximum":9007199254740991},"affectedServers":{"type":"integer","minimum":0,"maximum":9007199254740991},"linkedRepositories":{"type":"array","items":{"type":"object","properties":{"serverId":{"type":"string"},"serverName":{"type":"string"},"repoFullName":{"type":"string"},"accessStatus":{"type":"string"}},"required":["serverId","serverName","repoFullName","accessStatus"]}},"lastCheckedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]}},"required":["total","healthy","accessLost","degraded","unknown","affectedServers","linkedRepositories","lastCheckedAt"]}},"required":["checked","healthy","accessLost","checkFailed","repositoryHealth"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["GitHub"],"description":"Recheck every active repository linked to a GitHub App installation and persist its current access health.","parameters":[{"in":"path","name":"installationId","schema":{"type":"string","minLength":1,"maxLength":64},"required":true}]}},"/api/v1/github/connect-url":{"get":{"operationId":"getApiV1GithubConnectUrl","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"expiresInSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["url","expiresInSeconds"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["GitHub"],"description":"Mint a GitHub App install URL carrying a short-lived signed `state` that binds the install to the current user + organization. Used by the in-chat connect_github flow so the install can complete in a fresh browser tab (no session) and link back via /installations/callback-by-state.","parameters":[{"in":"query","name":"organizationId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/github/installations/callback":{"post":{"operationId":"postApiV1GithubInstallationsCallback","responses":{"200":{"description":"Installation saved","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"installationId":{"type":"string"},"appId":{"type":"string"},"organizationId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"isActive":{"type":"boolean"},"disconnectReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"disconnectedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"account":{"anyOf":[{"type":"object","properties":{"login":{"type":"string"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"type":"string"}},"required":["login","avatar_url","type"]},{"type":"null"}]},"repositoryHealth":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"healthy":{"type":"integer","minimum":0,"maximum":9007199254740991},"accessLost":{"type":"integer","minimum":0,"maximum":9007199254740991},"degraded":{"type":"integer","minimum":0,"maximum":9007199254740991},"unknown":{"type":"integer","minimum":0,"maximum":9007199254740991},"affectedServers":{"type":"integer","minimum":0,"maximum":9007199254740991},"linkedRepositories":{"type":"array","items":{"type":"object","properties":{"serverId":{"type":"string"},"serverName":{"type":"string"},"repoFullName":{"type":"string"},"accessStatus":{"type":"string"}},"required":["serverId","serverName","repoFullName","accessStatus"]}},"lastCheckedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]}},"required":["total","healthy","accessLost","degraded","unknown","affectedServers","linkedRepositories","lastCheckedAt"]}},"required":["id","installationId","appId","organizationId","createdAt","isActive","disconnectReason","disconnectedAt","account","repositoryHealth"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["GitHub"],"description":"Save a new GitHub App installation after the user completes the install flow. The installation is linked to the specified organization (organizationId required).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"installation_id":{"type":"string"},"setup_action":{"type":"string"},"code":{"type":"string"},"organizationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["installation_id","organizationId"]}}}}}},"/api/v1/github/installations/{id}":{"delete":{"operationId":"deleteApiV1GithubInstallationsById","responses":{"200":{"description":"Disconnected","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["GitHub"],"description":"Disconnect a GitHub App installation from the organization without deleting linked repositories or servers.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/github/installations/{installationId}/repos":{"get":{"operationId":"getApiV1GithubInstallationsByInstallationIdRepos","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"repos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"fullName":{"type":"string"},"private":{"type":"boolean"},"htmlUrl":{"type":"string"},"defaultBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"pushedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"ownerAvatarUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","fullName","private","htmlUrl","defaultBranch","pushedAt","ownerAvatarUrl"]}},"page":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"perPage":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"totalCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hasMore":{"type":"boolean"},"mode":{"type":"string","enum":["browse","search"]}},"required":["repos","page","perPage","totalCount","hasMore","mode"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["GitHub"],"description":"List repositories accessible to a GitHub App installation.","parameters":[{"in":"path","name":"installationId","schema":{"type":"string","minLength":1,"maxLength":64},"required":true},{"in":"query","name":"page","schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"in":"query","name":"perPage","schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"q","schema":{"type":"string","minLength":2,"maxLength":200}}]},"post":{"operationId":"postApiV1GithubInstallationsByInstallationIdRepos","responses":{"201":{"description":"Repository created","content":{"application/json":{"schema":{"type":"object","properties":{"fullName":{"type":"string"},"cloneUrl":{"type":"string"},"htmlUrl":{"type":"string"}},"required":["fullName","cloneUrl","htmlUrl"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["GitHub"],"description":"Create a new GitHub repository via the installation's Octokit client. Repos created by the app are automatically accessible to the installation.","parameters":[{"in":"path","name":"installationId","schema":{"type":"string","minLength":1,"maxLength":64},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"private":{"default":true,"type":"boolean"},"org":{"type":"string"}},"required":["name"]}}}}}},"/api/v1/github/installations/{installationId}/repos/{owner}/{repo}/access":{"get":{"operationId":"getApiV1GithubInstallationsByInstallationIdReposByOwnerByRepoAccess","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"hasAccess":{"type":"boolean"}},"required":["hasAccess"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["GitHub"],"description":"Authoritative check for whether a GitHub App installation can access a specific repository. Uses a single `repos.get` call with the installation token (no pagination, no search-index lag), so it is reliable even for very large orgs and freshly created repositories.","parameters":[{"in":"path","name":"installationId","schema":{"type":"string","minLength":1,"maxLength":64},"required":true},{"in":"path","name":"owner","schema":{"type":"string","minLength":1,"maxLength":200},"required":true},{"in":"path","name":"repo","schema":{"type":"string","minLength":1,"maxLength":200},"required":true}]}},"/api/v1/github/installations/{installationId}/repos/{owner}/{repo}/branches":{"get":{"operationId":"getApiV1GithubInstallationsByInstallationIdReposByOwnerByRepoBranches","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"branches":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"commitSha":{"type":"string"},"protected":{"type":"boolean"}},"required":["name","commitSha","protected"]}}},"required":["branches"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["GitHub"],"description":"List branches for a repository via a GitHub App installation.","parameters":[{"in":"path","name":"installationId","schema":{"type":"string","minLength":1,"maxLength":64},"required":true},{"in":"path","name":"owner","schema":{"type":"string","minLength":1,"maxLength":200},"required":true},{"in":"path","name":"repo","schema":{"type":"string","minLength":1,"maxLength":200},"required":true}]}},"/api/v1/github/installations/{installationId}/repos/{owner}/{repo}/tree-paths":{"get":{"operationId":"getApiV1GithubInstallationsByInstallationIdReposByOwnerByRepoTreePaths","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"paths":{"type":"array","items":{"type":"string"}},"truncated":{"type":"boolean"}},"required":["paths","truncated"]}}}},"400":{"description":"Missing ref"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["GitHub"],"description":"List unique directory paths and Dockerfile-like file paths under the repository tree for a branch (autocomplete rootDir, watch globs, Dockerfile path).","parameters":[{"in":"path","name":"installationId","schema":{"type":"string","minLength":1,"maxLength":64},"required":true},{"in":"path","name":"owner","schema":{"type":"string","minLength":1,"maxLength":200},"required":true},{"in":"path","name":"repo","schema":{"type":"string","minLength":1,"maxLength":200},"required":true},{"in":"query","name":"ref","schema":{"type":"string","minLength":1,"maxLength":512},"required":true}]}},"/api/v1/github/installations/{installationId}/repos/detect-frameworks":{"post":{"operationId":"postApiV1GithubInstallationsByInstallationIdReposDetectFrameworks","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"fullName":{"type":"string"},"ref":{"type":"string"},"cacheKey":{"type":"string"},"framework":{"type":"string","enum":["mcp-use","mcp-python","mcp-typescript","fastmcp","tmcp","xmcp","skybridge","other"]},"signals":{"type":"object","properties":{"runtime":{"type":"string","enum":["node","python","unknown"]},"hasDockerfile":{"type":"boolean"},"npmScripts":{"type":"object","properties":{"build":{"type":"string"},"start":{"type":"string"}}},"mainEntry":{"type":"string"},"pythonPm":{"type":"string","enum":["uv","poetry","pipenv","pip"]},"suggested":{"type":"object","properties":{"start":{"type":"string"},"build":{"type":"string"},"port":{"type":"string"}}}},"required":["runtime","hasDockerfile"]}},"required":["fullName","ref","cacheKey","framework","signals"]}}},"required":["results"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["GitHub"],"description":"Batch detect framework stacks for many repositories (cached per repo).","parameters":[{"in":"path","name":"installationId","schema":{"type":"string","minLength":1,"maxLength":64},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"repos":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"owner":{"type":"string","minLength":1,"maxLength":200},"repo":{"type":"string","minLength":1,"maxLength":200},"ref":{"type":"string","minLength":1,"maxLength":512},"pushedAt":{"type":"string"}},"required":["owner","repo"]}}},"required":["repos"]}}}}}},"/api/v1/github/installations/{installationId}/verify":{"get":{"operationId":"getApiV1GithubInstallationsByInstallationIdVerify","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"installationId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"accountLogin":{"anyOf":[{"type":"string"},{"type":"null"}]},"accountType":{"anyOf":[{"type":"string"},{"type":"null"}]},"repositorySelection":{"anyOf":[{"type":"string"},{"type":"null"}]},"suspendedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["ok","installationId","accountLogin","accountType","repositorySelection","suspendedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["GitHub"],"description":"Verify a GitHub App installation is still valid.","parameters":[{"in":"path","name":"installationId","schema":{"type":"string","minLength":1,"maxLength":64},"required":true}]}},"/api/v1/github/oauth/authorize":{"get":{"operationId":"getApiV1GithubOauthAuthorize","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"state":{"type":"string"}},"required":["url","state"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["GitHub"],"description":"Returns the GitHub OAuth authorization URL. The frontend should open this URL (popup or redirect) so the user can grant repo-creation permission."}},"/api/v1/github/oauth/token":{"post":{"operationId":"postApiV1GithubOauthToken","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"installationsUpdated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["success","installationsUpdated"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["GitHub"],"description":"Exchange a GitHub OAuth code for a user access token and store it on the user's GitHub App installation(s).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1},"state":{"type":"string"}},"required":["code"]}}}}}},"/api/v1/agents":{"get":{"operationId":"getApiV1Agents","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"llmModel":{"type":"string"},"systemPrompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"maxSteps":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"codeMode":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"serverPoolId":{"anyOf":[{"type":"string"},{"type":"null"}]},"organizationId":{"type":"string"},"creatorId":{"type":"string"},"isPublic":{"type":"boolean"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","name","description","llmModel","systemPrompt","maxSteps","codeMode","serverPoolId","organizationId","creatorId","isPublic","displayPreferences","createdAt","updatedAt"]}},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"skip":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","total","limit","skip"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Agents"],"description":"List agents visible to the current user. Optional filter: organizationId. Supports offset list params: limit (default 50, max 100), skip, sort=field:asc|desc (fields: createdAt, updatedAt, name).","parameters":[{"in":"query","name":"organizationId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"in":"query","name":"serverId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"take","schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"skip","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},{"in":"query","name":"sort","schema":{"type":"string"}}]},"post":{"operationId":"postApiV1Agents","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"llmModel":{"type":"string"},"systemPrompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"maxSteps":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"codeMode":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"serverPoolId":{"anyOf":[{"type":"string"},{"type":"null"}]},"organizationId":{"type":"string"},"creatorId":{"type":"string"},"isPublic":{"type":"boolean"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","name","description","llmModel","systemPrompt","maxSteps","codeMode","serverPoolId","organizationId","creatorId","isPublic","displayPreferences","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Agents"],"description":"Create a new agent","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","minLength":1,"maxLength":1000},"llmModel":{"type":"string","minLength":1,"maxLength":255},"systemPrompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"maxSteps":{"type":"integer","exclusiveMinimum":1,"exclusiveMaximum":100},"codeMode":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"serverPoolId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"organizationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"isPublic":{"type":"boolean"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}}},"required":["name","llmModel","organizationId"]}}}}}},"/api/v1/agents/{id}":{"get":{"operationId":"getApiV1AgentsById","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"llmModel":{"type":"string"},"systemPrompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"maxSteps":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"codeMode":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"serverPoolId":{"anyOf":[{"type":"string"},{"type":"null"}]},"organizationId":{"type":"string"},"creatorId":{"type":"string"},"isPublic":{"type":"boolean"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","name","description","llmModel","systemPrompt","maxSteps","codeMode","serverPoolId","organizationId","creatorId","isPublic","displayPreferences","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Agents"],"description":"Get a single agent by ID","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]},"patch":{"operationId":"patchApiV1AgentsById","responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"llmModel":{"type":"string"},"systemPrompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"maxSteps":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"codeMode":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"serverPoolId":{"anyOf":[{"type":"string"},{"type":"null"}]},"organizationId":{"type":"string"},"creatorId":{"type":"string"},"isPublic":{"type":"boolean"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","name","description","llmModel","systemPrompt","maxSteps","codeMode","serverPoolId","organizationId","creatorId","isPublic","displayPreferences","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Agents"],"description":"Update an agent","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"llmModel":{"type":"string","minLength":1,"maxLength":255},"systemPrompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"maxSteps":{"type":"integer","exclusiveMinimum":1,"exclusiveMaximum":100},"codeMode":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"isPublic":{"type":"boolean"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"serverPoolId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"description":{"anyOf":[{"type":"string","minLength":1,"maxLength":1000},{"type":"null"}]}}}}}}},"delete":{"operationId":"deleteApiV1AgentsById","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Agents"],"description":"Delete an agent","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/agents/generate-system-prompt":{"post":{"operationId":"postApiV1AgentsGenerateSystemPrompt","responses":{"200":{"description":"Generated prompt","content":{"application/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string"}},"required":["prompt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"500":{"description":"LLM generation error"}},"tags":["Agents"],"description":"Generate an optimized system prompt from partial agent info","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"llmModel":{"type":"string"},"serverPoolId":{"anyOf":[{"type":"string"},{"type":"null"}]},"systemPrompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcpServers":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"required":["name"]}}}}}},"/api/v1/agents/generate-description":{"post":{"operationId":"postApiV1AgentsGenerateDescription","responses":{"200":{"description":"Generated description","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string"}},"required":["description"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"500":{"description":"LLM generation error"}},"tags":["Agents"],"description":"Generate a description for an agent using AI","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"systemPrompt":{"type":"string"}},"required":["name"]}}}}}},"/api/v1/agents/{id}/start-chat":{"post":{"operationId":"postApiV1AgentsByIdStartChat","responses":{"200":{"description":"Chat session started","content":{"application/json":{"schema":{"type":"object","properties":{"chatId":{"type":"string"},"agentId":{"type":"string"},"llmModel":{"type":"string"},"systemPrompt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["chatId","agentId","llmModel","systemPrompt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Agents"],"description":"Start a server chat session. The :id is the **server ID** — the endpoint finds or creates a default agent for the server, creates a fresh chat, and returns the IDs the frontend needs.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/servers":{"get":{"operationId":"getApiV1Servers","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}},"config":{},"dashboardConnectionUrls":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"slugRoutingDisabledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"status":{"type":"string"},"activeDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"previousDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedRepositoryId":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"publicRoutingMode":{"type":"string","enum":["direct","gateway"]},"region":{"type":"string","enum":["AUTO","US","EU","APAC"]},"organizationId":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedRepository":{"type":"object","properties":{"id":{"type":"string"},"repoFullName":{"anyOf":[{"type":"string"},{"type":"null"}]},"githubRepoId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"productionBranch":{"type":"string"},"watchPaths":{"type":"array","items":{"type":"string"}},"deployBranchPatterns":{"type":"array","items":{"type":"string"}},"waitForCi":{"type":"boolean"},"pendingWebhookCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingWebhookBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingWebhookPrNumber":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pendingWebhookCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"isActive":{"type":"boolean"},"accessStatus":{"type":"string"},"accessCheckedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"accessReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"isManaged":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"userId":{"type":"string"},"githubInstallationId":{"type":"string"}},"required":["id","repoFullName","githubRepoId","productionBranch","watchPaths","deployBranchPatterns","waitForCi","pendingWebhookCommitSha","pendingWebhookBranch","pendingWebhookPrNumber","pendingWebhookCommitMessage","isActive","accessStatus","accessCheckedAt","accessReason","isManaged","createdAt","updatedAt","userId","githubInstallationId"]},"latestDeploymentStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"domains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"verified":{"type":"boolean"},"type":{"type":"string"},"pendingRemovalAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["domain","verified"]}},"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"status":{"type":"string"},"buildStartedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"buildCompletedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"gitCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"serverId":{"type":"string"},"isProductionDeployment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"deploymentVersion":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"deploymentTrigger":{"anyOf":[{"type":"string"},{"type":"null"}]},"archivedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","name","createdAt","updatedAt","status","buildStartedAt","buildCompletedAt","gitCommitSha","gitBranch","gitCommitMessage","serverId","isProductionDeployment","deploymentVersion","deploymentTrigger","archivedAt"]}},"_count":{"type":"object","properties":{"deployments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"mcpUrl":{"type":"string"},"dashboardUrl":{"type":"string"},"chatUrl":{"type":"string"},"gatewayDomain":{"type":"string"},"customDomainCnameTarget":{"type":"string"},"isExternal":{"type":"boolean"},"environments":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["production","branch"]},"label":{"type":"string"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"activeDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcpUrl":{"type":"string"},"dashboardUrl":{"type":"string"},"chatUrl":{"type":"string"},"slugGatewayHostname":{"type":"string"},"customDomains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"verified":{"type":"boolean"}},"required":["domain","verified"]}}},"required":["kind","label","branch","activeDeploymentId","mcpUrl","dashboardUrl","chatUrl","slugGatewayHostname","customDomains"]}}},"required":["id","slug","pendingSlug","name","description","tags","config","dashboardConnectionUrls","createdAt","updatedAt","slugRoutingDisabledAt","displayPreferences","status","activeDeploymentId","previousDeploymentId","connectedRepositoryId","externalUrl","publicRoutingMode","region","organizationId","userId","mcpUrl","dashboardUrl","chatUrl","gatewayDomain","customDomainCnameTarget","isExternal","environments"]}},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"skip":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","total","limit","skip"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"List servers visible to the current user. Optional filter: organizationId. Supports offset list params: limit (default 50, max 100), skip, sort=field:asc|desc (fields: createdAt, updatedAt, name).","parameters":[{"in":"query","name":"organizationId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"take","schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"skip","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},{"in":"query","name":"sort","schema":{"type":"string"}}]},"post":{"operationId":"postApiV1Servers","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"server":{"type":"object","properties":{"id":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}},"config":{},"dashboardConnectionUrls":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"slugRoutingDisabledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"status":{"type":"string"},"activeDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"previousDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedRepositoryId":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"publicRoutingMode":{"type":"string","enum":["direct","gateway"]},"region":{"type":"string","enum":["AUTO","US","EU","APAC"]},"organizationId":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedRepository":{"type":"object","properties":{"id":{"type":"string"},"repoFullName":{"anyOf":[{"type":"string"},{"type":"null"}]},"githubRepoId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"productionBranch":{"type":"string"},"watchPaths":{"type":"array","items":{"type":"string"}},"deployBranchPatterns":{"type":"array","items":{"type":"string"}},"waitForCi":{"type":"boolean"},"pendingWebhookCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingWebhookBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingWebhookPrNumber":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pendingWebhookCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"isActive":{"type":"boolean"},"accessStatus":{"type":"string"},"accessCheckedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"accessReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"isManaged":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"userId":{"type":"string"},"githubInstallationId":{"type":"string"}},"required":["id","repoFullName","githubRepoId","productionBranch","watchPaths","deployBranchPatterns","waitForCi","pendingWebhookCommitSha","pendingWebhookBranch","pendingWebhookPrNumber","pendingWebhookCommitMessage","isActive","accessStatus","accessCheckedAt","accessReason","isManaged","createdAt","updatedAt","userId","githubInstallationId"]},"latestDeploymentStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"domains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"verified":{"type":"boolean"},"type":{"type":"string"},"pendingRemovalAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["domain","verified"]}},"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"status":{"type":"string"},"buildStartedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"buildCompletedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"gitCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"serverId":{"type":"string"},"isProductionDeployment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"deploymentVersion":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"deploymentTrigger":{"anyOf":[{"type":"string"},{"type":"null"}]},"archivedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","name","createdAt","updatedAt","status","buildStartedAt","buildCompletedAt","gitCommitSha","gitBranch","gitCommitMessage","serverId","isProductionDeployment","deploymentVersion","deploymentTrigger","archivedAt"]}},"_count":{"type":"object","properties":{"deployments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"mcpUrl":{"type":"string"},"dashboardUrl":{"type":"string"},"chatUrl":{"type":"string"},"gatewayDomain":{"type":"string"},"customDomainCnameTarget":{"type":"string"},"isExternal":{"type":"boolean"},"environments":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["production","branch"]},"label":{"type":"string"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"activeDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcpUrl":{"type":"string"},"dashboardUrl":{"type":"string"},"chatUrl":{"type":"string"},"slugGatewayHostname":{"type":"string"},"customDomains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"verified":{"type":"boolean"}},"required":["domain","verified"]}}},"required":["kind","label","branch","activeDeploymentId","mcpUrl","dashboardUrl","chatUrl","slugGatewayHostname","customDomains"]}}},"required":["id","slug","pendingSlug","name","description","tags","config","dashboardConnectionUrls","createdAt","updatedAt","slugRoutingDisabledAt","displayPreferences","status","activeDeploymentId","previousDeploymentId","connectedRepositoryId","externalUrl","publicRoutingMode","region","organizationId","userId","mcpUrl","dashboardUrl","chatUrl","gatewayDomain","customDomainCnameTarget","isExternal","environments"]},"deploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["server","deploymentId"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Plan limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"feature":{"type":"string","enum":["projects","teamMembers","region","previewDeploys","coldStart","requestsPerMonth","logRetention","githubOrg","customDomain"]},"currentTier":{"type":"string","enum":["free","hobby","startup","enterprise"]},"requiredTier":{"type":"string","enum":["free","hobby","startup","enterprise"]},"current":{"type":"number"},"limit":{"anyOf":[{"type":"number"},{"type":"string","const":"unlimited"}]}},"required":["error","code","feature","currentTier","requiredTier"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Create a server. JSON supports type=\"github\" and type=\"external\" for a direct customer-hosted URL. Multipart (Mango/Vibe/CLI) accepts a `sourceFile` tarball and GitHub deployment fields.","requestBody":{"required":false,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"type":"object","properties":{"type":{"type":"string","const":"github"},"organizationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"installationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"managed":{"type":"boolean"},"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":1024},"repoFullName":{"type":"string","pattern":"^[^/]+\\/[^/]+$"},"branch":{"type":"string"},"rootDir":{"type":"string"},"port":{"type":"integer","minimum":1,"maximum":65535},"tags":{"type":"array","items":{"type":"string"}},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"],"additionalProperties":false},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}},"additionalProperties":false}},"additionalProperties":false},"scaffoldTemplateId":{"type":"string","enum":["mcp-server","mcp-apps","blank"]},"templateRepo":{"type":"string","pattern":"^[^/]+\\/[^/]+$"},"repoOwner":{"type":"string"},"repoPrivate":{"type":"boolean"},"buildCommand":{"type":"string","maxLength":8192},"startCommand":{"type":"string","maxLength":8192},"dockerfilePath":{"type":"string","maxLength":512},"env":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"buildSecrets":{"type":"array","items":{"type":"string"}},"region":{"type":"string","enum":["AUTO","US","EU","APAC"]},"watchPaths":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":512}},"waitForCi":{"type":"boolean"}},"required":["type","organizationId","name"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"external"},"organizationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":1024},"url":{"type":"string","maxLength":2048,"format":"uri"},"auth":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","const":"bearer"},"token":{"type":"string","minLength":1,"maxLength":8192}},"required":["type","token"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"headers"},"headers":{"type":"object","propertyNames":{"type":"string","maxLength":255},"additionalProperties":{"type":"string","maxLength":8192}}},"required":["type","headers"],"additionalProperties":false}]},"headers":{"type":"object","propertyNames":{"type":"string","maxLength":255},"additionalProperties":{"type":"string","maxLength":8192}},"pendingCredentialAttemptId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"tags":{"type":"array","items":{"type":"string"}},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"],"additionalProperties":false},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}},"additionalProperties":false}},"additionalProperties":false}},"required":["type","organizationId","url"],"additionalProperties":false}]}}}}}},"/api/v1/servers/{id}/env-variables":{"get":{"operationId":"getApiV1ServersByIdEnvVariables","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"key":{"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"null"}]},"environments":{"type":"array","items":{"type":"string"}},"phase":{"type":"string"},"sensitive":{"type":"boolean"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","key","value","environments","phase","sensitive","branch","createdAt","updatedAt"]}}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"List environment variables for a server (sensitive values masked). Optional `?branch=NAME` filters to that branch's rows; omit for production scope (branch IS NULL).","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"branch","schema":{"type":"string","maxLength":255}}]},"post":{"operationId":"postApiV1ServersByIdEnvVariables","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"key":{"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"null"}]},"environments":{"type":"array","items":{"type":"string"}},"phase":{"type":"string"},"sensitive":{"type":"boolean"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","key","value","environments","phase","sensitive","branch","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Create an environment variable for a server","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","minLength":1},"value":{"type":"string"},"environments":{"default":["production"],"type":"array","items":{"type":"string","enum":["production","preview","development"]}},"phase":{"default":"both","type":"string","enum":["runtime","build","both"]},"sensitive":{"default":false,"type":"boolean"},"branch":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]}},"required":["key","value"]}}}}},"put":{"operationId":"putApiV1ServersByIdEnvVariables","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"key":{"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"null"}]},"environments":{"type":"array","items":{"type":"string"}},"phase":{"type":"string"},"sensitive":{"type":"boolean"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","key","value","environments","phase","sensitive","branch","createdAt","updatedAt"]}}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Bulk-sync environment variables for a server. Replaces all existing variables for the targeted branch scope with the provided list. Optional `?branch=NAME` scopes the sync to that branch (default: production / branch IS NULL).","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"branch","schema":{"type":"string","maxLength":255}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1},"value":{"anyOf":[{"type":"string"},{"type":"null"}]},"environments":{"default":["production"],"type":"array","items":{"type":"string","enum":["production","preview","development"]}},"phase":{"default":"both","type":"string","enum":["runtime","build","both"]},"sensitive":{"default":false,"type":"boolean"},"branch":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]}},"required":["key","value"]}}}}}}},"/api/v1/servers/{id}/env-variables/managed":{"get":{"operationId":"getApiV1ServersByIdEnvVariablesManaged","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"List the platform-managed runtime env defaults (e.g. MCP_URL, CSP_URLS) the deploy pipeline injects for this environment, before any user override. Optional `?branch=NAME` scopes to that branch's preview; omit for production.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"branch","schema":{"type":"string","maxLength":255}}]}},"/api/v1/servers/{id}/env-variables/{varId}":{"patch":{"operationId":"patchApiV1ServersByIdEnvVariablesByVarId","responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"key":{"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"null"}]},"environments":{"type":"array","items":{"type":"string"}},"phase":{"type":"string"},"sensitive":{"type":"boolean"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","key","value","environments","phase","sensitive","branch","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Update an environment variable","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"varId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"anyOf":[{"type":"string"},{"type":"null"}]},"environments":{"type":"array","items":{"type":"string","enum":["production","preview","development"]}},"phase":{"type":"string","enum":["runtime","build","both"]},"sensitive":{"type":"boolean"},"branch":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]}}}}}}},"delete":{"operationId":"deleteApiV1ServersByIdEnvVariablesByVarId","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Delete an environment variable","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"varId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/servers/{id}/proxy":{"post":{"operationId":"postApiV1ServersByIdProxy","responses":{"200":{"description":"Proxy enabled","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}},"config":{},"dashboardConnectionUrls":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"slugRoutingDisabledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"status":{"type":"string"},"activeDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"previousDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedRepositoryId":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"publicRoutingMode":{"type":"string","enum":["direct","gateway"]},"region":{"type":"string","enum":["AUTO","US","EU","APAC"]},"organizationId":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedRepository":{"type":"object","properties":{"id":{"type":"string"},"repoFullName":{"anyOf":[{"type":"string"},{"type":"null"}]},"githubRepoId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"productionBranch":{"type":"string"},"watchPaths":{"type":"array","items":{"type":"string"}},"deployBranchPatterns":{"type":"array","items":{"type":"string"}},"waitForCi":{"type":"boolean"},"pendingWebhookCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingWebhookBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingWebhookPrNumber":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pendingWebhookCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"isActive":{"type":"boolean"},"accessStatus":{"type":"string"},"accessCheckedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"accessReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"isManaged":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"userId":{"type":"string"},"githubInstallationId":{"type":"string"}},"required":["id","repoFullName","githubRepoId","productionBranch","watchPaths","deployBranchPatterns","waitForCi","pendingWebhookCommitSha","pendingWebhookBranch","pendingWebhookPrNumber","pendingWebhookCommitMessage","isActive","accessStatus","accessCheckedAt","accessReason","isManaged","createdAt","updatedAt","userId","githubInstallationId"]},"latestDeploymentStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"domains":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Domain record ID; use as domainId for lifecycle routes."},"serverId":{"type":"string"},"organizationId":{"type":"string"},"domain":{"type":"string"},"type":{"type":"string"},"verified":{"type":"boolean"},"hostnameId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cloudflare custom hostname provider ID."},"configuredAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"activatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"pendingRemovalAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Deployment branch; null means production."},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","organizationId","domain","type","verified","hostnameId","configuredAt","activatedAt","pendingRemovalAt","branch","createdAt","updatedAt"]},"description":"Up to 20 newest domain records, ordered by createdAt descending."},"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"status":{"type":"string"},"buildStartedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"buildCompletedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"gitCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"serverId":{"type":"string"},"isProductionDeployment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"deploymentVersion":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"deploymentTrigger":{"anyOf":[{"type":"string"},{"type":"null"}]},"archivedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","name","createdAt","updatedAt","status","buildStartedAt","buildCompletedAt","gitCommitSha","gitBranch","gitCommitMessage","serverId","isProductionDeployment","deploymentVersion","deploymentTrigger","archivedAt"]}},"_count":{"type":"object","properties":{"deployments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"mcpUrl":{"type":"string"},"dashboardUrl":{"type":"string"},"chatUrl":{"type":"string"},"gatewayDomain":{"type":"string"},"customDomainCnameTarget":{"type":"string"},"isExternal":{"type":"boolean"},"environments":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["production","branch"]},"label":{"type":"string"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"activeDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcpUrl":{"type":"string"},"dashboardUrl":{"type":"string"},"chatUrl":{"type":"string"},"slugGatewayHostname":{"type":"string"},"customDomains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"verified":{"type":"boolean"}},"required":["domain","verified"]}},"credential":{"anyOf":[{"$ref":"#/components/schemas/CredentialSummary"},{"type":"null"}]}},"required":["kind","label","branch","activeDeploymentId","mcpUrl","dashboardUrl","chatUrl","slugGatewayHostname","customDomains"]}}},"required":["id","slug","pendingSlug","name","description","tags","config","dashboardConnectionUrls","createdAt","updatedAt","slugRoutingDisabledAt","displayPreferences","status","activeDeploymentId","previousDeploymentId","connectedRepositoryId","externalUrl","publicRoutingMode","region","organizationId","userId","domains","mcpUrl","dashboardUrl","chatUrl","gatewayDomain","customDomainCnameTarget","isExternal","environments"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"502":{"description":"Bad gateway","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Idempotently enable Manufact gateway routing for a direct customer-hosted external server.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]},"delete":{"operationId":"deleteApiV1ServersByIdProxy","responses":{"200":{"description":"Proxy disabled","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}},"config":{},"dashboardConnectionUrls":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"slugRoutingDisabledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"status":{"type":"string"},"activeDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"previousDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedRepositoryId":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"publicRoutingMode":{"type":"string","enum":["direct","gateway"]},"region":{"type":"string","enum":["AUTO","US","EU","APAC"]},"organizationId":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedRepository":{"type":"object","properties":{"id":{"type":"string"},"repoFullName":{"anyOf":[{"type":"string"},{"type":"null"}]},"githubRepoId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"productionBranch":{"type":"string"},"watchPaths":{"type":"array","items":{"type":"string"}},"deployBranchPatterns":{"type":"array","items":{"type":"string"}},"waitForCi":{"type":"boolean"},"pendingWebhookCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingWebhookBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingWebhookPrNumber":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pendingWebhookCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"isActive":{"type":"boolean"},"accessStatus":{"type":"string"},"accessCheckedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"accessReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"isManaged":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"userId":{"type":"string"},"githubInstallationId":{"type":"string"}},"required":["id","repoFullName","githubRepoId","productionBranch","watchPaths","deployBranchPatterns","waitForCi","pendingWebhookCommitSha","pendingWebhookBranch","pendingWebhookPrNumber","pendingWebhookCommitMessage","isActive","accessStatus","accessCheckedAt","accessReason","isManaged","createdAt","updatedAt","userId","githubInstallationId"]},"latestDeploymentStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"domains":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Domain record ID; use as domainId for lifecycle routes."},"serverId":{"type":"string"},"organizationId":{"type":"string"},"domain":{"type":"string"},"type":{"type":"string"},"verified":{"type":"boolean"},"hostnameId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cloudflare custom hostname provider ID."},"configuredAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"activatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"pendingRemovalAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Deployment branch; null means production."},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","organizationId","domain","type","verified","hostnameId","configuredAt","activatedAt","pendingRemovalAt","branch","createdAt","updatedAt"]},"description":"Up to 20 newest domain records, ordered by createdAt descending."},"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"status":{"type":"string"},"buildStartedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"buildCompletedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"gitCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"serverId":{"type":"string"},"isProductionDeployment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"deploymentVersion":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"deploymentTrigger":{"anyOf":[{"type":"string"},{"type":"null"}]},"archivedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","name","createdAt","updatedAt","status","buildStartedAt","buildCompletedAt","gitCommitSha","gitBranch","gitCommitMessage","serverId","isProductionDeployment","deploymentVersion","deploymentTrigger","archivedAt"]}},"_count":{"type":"object","properties":{"deployments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"mcpUrl":{"type":"string"},"dashboardUrl":{"type":"string"},"chatUrl":{"type":"string"},"gatewayDomain":{"type":"string"},"customDomainCnameTarget":{"type":"string"},"isExternal":{"type":"boolean"},"environments":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["production","branch"]},"label":{"type":"string"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"activeDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcpUrl":{"type":"string"},"dashboardUrl":{"type":"string"},"chatUrl":{"type":"string"},"slugGatewayHostname":{"type":"string"},"customDomains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"verified":{"type":"boolean"}},"required":["domain","verified"]}},"credential":{"anyOf":[{"$ref":"#/components/schemas/CredentialSummary"},{"type":"null"}]}},"required":["kind","label","branch","activeDeploymentId","mcpUrl","dashboardUrl","chatUrl","slugGatewayHostname","customDomains"]}}},"required":["id","slug","pendingSlug","name","description","tags","config","dashboardConnectionUrls","createdAt","updatedAt","slugRoutingDisabledAt","displayPreferences","status","activeDeploymentId","previousDeploymentId","connectedRepositoryId","externalUrl","publicRoutingMode","region","organizationId","userId","domains","mcpUrl","dashboardUrl","chatUrl","gatewayDomain","customDomainCnameTarget","isExternal","environments"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"502":{"description":"Bad gateway","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Idempotently disable Manufact gateway routing and return a customer-hosted server to its external URL.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/servers/{id}":{"patch":{"operationId":"patchApiV1ServersById","responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}},"config":{},"dashboardConnectionUrls":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"slugRoutingDisabledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"status":{"type":"string"},"activeDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"previousDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedRepositoryId":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"publicRoutingMode":{"type":"string","enum":["direct","gateway"]},"region":{"type":"string","enum":["AUTO","US","EU","APAC"]},"organizationId":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedRepository":{"type":"object","properties":{"id":{"type":"string"},"repoFullName":{"anyOf":[{"type":"string"},{"type":"null"}]},"githubRepoId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"productionBranch":{"type":"string"},"watchPaths":{"type":"array","items":{"type":"string"}},"deployBranchPatterns":{"type":"array","items":{"type":"string"}},"waitForCi":{"type":"boolean"},"pendingWebhookCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingWebhookBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingWebhookPrNumber":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pendingWebhookCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"isActive":{"type":"boolean"},"accessStatus":{"type":"string"},"accessCheckedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"accessReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"isManaged":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"userId":{"type":"string"},"githubInstallationId":{"type":"string"}},"required":["id","repoFullName","githubRepoId","productionBranch","watchPaths","deployBranchPatterns","waitForCi","pendingWebhookCommitSha","pendingWebhookBranch","pendingWebhookPrNumber","pendingWebhookCommitMessage","isActive","accessStatus","accessCheckedAt","accessReason","isManaged","createdAt","updatedAt","userId","githubInstallationId"]},"latestDeploymentStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"domains":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Domain record ID; use as domainId for lifecycle routes."},"serverId":{"type":"string"},"organizationId":{"type":"string"},"domain":{"type":"string"},"type":{"type":"string"},"verified":{"type":"boolean"},"hostnameId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cloudflare custom hostname provider ID."},"configuredAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"activatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"pendingRemovalAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Deployment branch; null means production."},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","organizationId","domain","type","verified","hostnameId","configuredAt","activatedAt","pendingRemovalAt","branch","createdAt","updatedAt"]},"description":"Up to 20 newest domain records, ordered by createdAt descending."},"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"status":{"type":"string"},"buildStartedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"buildCompletedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"gitCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"serverId":{"type":"string"},"isProductionDeployment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"deploymentVersion":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"deploymentTrigger":{"anyOf":[{"type":"string"},{"type":"null"}]},"archivedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","name","createdAt","updatedAt","status","buildStartedAt","buildCompletedAt","gitCommitSha","gitBranch","gitCommitMessage","serverId","isProductionDeployment","deploymentVersion","deploymentTrigger","archivedAt"]}},"_count":{"type":"object","properties":{"deployments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"mcpUrl":{"type":"string"},"dashboardUrl":{"type":"string"},"chatUrl":{"type":"string"},"gatewayDomain":{"type":"string"},"customDomainCnameTarget":{"type":"string"},"isExternal":{"type":"boolean"},"environments":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["production","branch"]},"label":{"type":"string"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"activeDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcpUrl":{"type":"string"},"dashboardUrl":{"type":"string"},"chatUrl":{"type":"string"},"slugGatewayHostname":{"type":"string"},"customDomains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"verified":{"type":"boolean"}},"required":["domain","verified"]}},"credential":{"anyOf":[{"$ref":"#/components/schemas/CredentialSummary"},{"type":"null"}]}},"required":["kind","label","branch","activeDeploymentId","mcpUrl","dashboardUrl","chatUrl","slugGatewayHostname","customDomains"]}}},"required":["id","slug","pendingSlug","name","description","tags","config","dashboardConnectionUrls","createdAt","updatedAt","slugRoutingDisabledAt","displayPreferences","status","activeDeploymentId","previousDeploymentId","connectedRepositoryId","externalUrl","publicRoutingMode","region","organizationId","userId","domains","mcpUrl","dashboardUrl","chatUrl","gatewayDomain","customDomainCnameTarget","isExternal","environments"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Update a server. Returns the updated server as GET /servers/{id} does (domains, deployments, and the caller's credential per environment).","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":1024},"slug":{"anyOf":[{"type":"string","minLength":3,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"productionBranch":{"type":"string"},"watchPaths":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":512}},"deployBranchPatterns":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":255}},"waitForCi":{"type":"boolean"},"config":{"type":"object","properties":{"url":{"anyOf":[{"type":"string"},{"type":"null"}]},"transport":{"anyOf":[{"type":"string"},{"type":"null"}]},"port":{"anyOf":[{"type":"number"},{"type":"null"}]},"startCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"rootDir":{"anyOf":[{"type":"string"},{"type":"null"}]},"dockerfilePath":{"anyOf":[{"type":"string"},{"type":"null"}]},"headers":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"observabilityCapturePayloads":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"observabilityIdentifyActors":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"observabilityCaptureIntent":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"observabilityCaptureFeedback":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"rateLimitEnabled":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"rateLimitPerMinute":{"anyOf":[{"type":"integer","minimum":1,"maximum":100000},{"type":"null"}]},"checklistAutoRunMode":{"type":"string","enum":["off","production","all-deployed","selected"]},"checklistAutoRunBranchPatterns":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":255}},"checklistGitHubReportingEnabled":{"type":"boolean"},"auth":{"anyOf":[{"type":"object","properties":{"type":{"type":"string"},"store":{"type":"string","const":"server-credentials"},"access_token":{"type":"string"},"refresh_token":{"deprecated":true,"type":"string"},"token_type":{"type":"string"},"expires_at":{"type":"number"},"scope":{"type":"string"},"token_endpoint":{"deprecated":true,"type":"string"},"client_id":{"deprecated":true,"type":"string"},"client_secret":{"deprecated":true,"type":"string"},"resource":{"deprecated":true,"type":"string","format":"uri"},"revision":{"deprecated":true,"type":"integer","minimum":0,"maximum":9007199254740991},"updated_at":{"type":"string"},"refresh_status":{"deprecated":true,"type":"string"},"refresh_failed_at":{"deprecated":true,"type":"string"}},"additionalProperties":{}},{"type":"null"}]}},"additionalProperties":{}},"replaceConfig":{"type":"boolean"},"region":{"type":"string","enum":["AUTO","US","EU","APAC"]},"externalUrl":{"type":"string","maxLength":2048,"format":"uri"},"pendingCredentialAttemptId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"dashboardConnectionUrls":{"type":"object","propertyNames":{"type":"string","maxLength":255},"additionalProperties":{"anyOf":[{"anyOf":[{"type":"string","const":""},{"type":"string","maxLength":2048,"format":"uri"}]},{"type":"null"}]}}},"additionalProperties":false}}}}},"delete":{"operationId":"deleteApiV1ServersById","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Delete a server and all its deployments","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]},"get":{"operationId":"getApiV1ServersById","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}},"config":{},"dashboardConnectionUrls":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"slugRoutingDisabledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"status":{"type":"string"},"activeDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"previousDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedRepositoryId":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"publicRoutingMode":{"type":"string","enum":["direct","gateway"]},"region":{"type":"string","enum":["AUTO","US","EU","APAC"]},"organizationId":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedRepository":{"type":"object","properties":{"id":{"type":"string"},"repoFullName":{"anyOf":[{"type":"string"},{"type":"null"}]},"githubRepoId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"productionBranch":{"type":"string"},"watchPaths":{"type":"array","items":{"type":"string"}},"deployBranchPatterns":{"type":"array","items":{"type":"string"}},"waitForCi":{"type":"boolean"},"pendingWebhookCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingWebhookBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingWebhookPrNumber":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pendingWebhookCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"isActive":{"type":"boolean"},"accessStatus":{"type":"string"},"accessCheckedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"accessReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"isManaged":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"userId":{"type":"string"},"githubInstallationId":{"type":"string"}},"required":["id","repoFullName","githubRepoId","productionBranch","watchPaths","deployBranchPatterns","waitForCi","pendingWebhookCommitSha","pendingWebhookBranch","pendingWebhookPrNumber","pendingWebhookCommitMessage","isActive","accessStatus","accessCheckedAt","accessReason","isManaged","createdAt","updatedAt","userId","githubInstallationId"]},"latestDeploymentStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"domains":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Domain record ID; use as domainId for lifecycle routes."},"serverId":{"type":"string"},"organizationId":{"type":"string"},"domain":{"type":"string"},"type":{"type":"string"},"verified":{"type":"boolean"},"hostnameId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cloudflare custom hostname provider ID."},"configuredAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"activatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"pendingRemovalAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Deployment branch; null means production."},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","organizationId","domain","type","verified","hostnameId","configuredAt","activatedAt","pendingRemovalAt","branch","createdAt","updatedAt"]},"description":"Up to 20 newest domain records, ordered by createdAt descending."},"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"status":{"type":"string"},"buildStartedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"buildCompletedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"gitCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"serverId":{"type":"string"},"isProductionDeployment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"deploymentVersion":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"deploymentTrigger":{"anyOf":[{"type":"string"},{"type":"null"}]},"archivedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","name","createdAt","updatedAt","status","buildStartedAt","buildCompletedAt","gitCommitSha","gitBranch","gitCommitMessage","serverId","isProductionDeployment","deploymentVersion","deploymentTrigger","archivedAt"]}},"_count":{"type":"object","properties":{"deployments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"mcpUrl":{"type":"string"},"dashboardUrl":{"type":"string"},"chatUrl":{"type":"string"},"gatewayDomain":{"type":"string"},"customDomainCnameTarget":{"type":"string"},"isExternal":{"type":"boolean"},"environments":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["production","branch"]},"label":{"type":"string"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"activeDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcpUrl":{"type":"string"},"dashboardUrl":{"type":"string"},"chatUrl":{"type":"string"},"slugGatewayHostname":{"type":"string"},"customDomains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"verified":{"type":"boolean"}},"required":["domain","verified"]}},"credential":{"anyOf":[{"$ref":"#/components/schemas/CredentialSummary"},{"type":"null"}]}},"required":["kind","label","branch","activeDeploymentId","mcpUrl","dashboardUrl","chatUrl","slugGatewayHostname","customDomains"]}}},"required":["id","slug","pendingSlug","name","description","tags","config","dashboardConnectionUrls","createdAt","updatedAt","slugRoutingDisabledAt","displayPreferences","status","activeDeploymentId","previousDeploymentId","connectedRepositoryId","externalUrl","publicRoutingMode","region","organizationId","userId","domains","mcpUrl","dashboardUrl","chatUrl","gatewayDomain","customDomainCnameTarget","isExternal","environments"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Get a single server by ID or slug. Includes deployments (last 10, without build logs) plus the active deployment if it is not in that window, domains (last 20), template, and deployment count.","parameters":[{"in":"path","name":"id","schema":{"type":"string","minLength":1,"maxLength":128},"required":true}]}},"/api/v1/servers/{id}/repository":{"delete":{"operationId":"deleteApiV1ServersByIdRepository","responses":{"200":{"description":"Disconnected","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":true}},"required":["success"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Disconnect the server's GitHub repository. The running server stays online; automatic and manual deploys are paused until a repository is reconnected.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]},"put":{"operationId":"putApiV1ServersByIdRepository","responses":{"200":{"description":"Connected","content":{"application/json":{"schema":{"type":"object","properties":{"server":{"type":"object","properties":{"id":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}},"config":{},"dashboardConnectionUrls":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"slugRoutingDisabledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"status":{"type":"string"},"activeDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"previousDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedRepositoryId":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"publicRoutingMode":{"type":"string","enum":["direct","gateway"]},"region":{"type":"string","enum":["AUTO","US","EU","APAC"]},"organizationId":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedRepository":{"type":"object","properties":{"id":{"type":"string"},"repoFullName":{"anyOf":[{"type":"string"},{"type":"null"}]},"githubRepoId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"productionBranch":{"type":"string"},"watchPaths":{"type":"array","items":{"type":"string"}},"deployBranchPatterns":{"type":"array","items":{"type":"string"}},"waitForCi":{"type":"boolean"},"pendingWebhookCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingWebhookBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingWebhookPrNumber":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pendingWebhookCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"isActive":{"type":"boolean"},"accessStatus":{"type":"string"},"accessCheckedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"accessReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"isManaged":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"userId":{"type":"string"},"githubInstallationId":{"type":"string"}},"required":["id","repoFullName","githubRepoId","productionBranch","watchPaths","deployBranchPatterns","waitForCi","pendingWebhookCommitSha","pendingWebhookBranch","pendingWebhookPrNumber","pendingWebhookCommitMessage","isActive","accessStatus","accessCheckedAt","accessReason","isManaged","createdAt","updatedAt","userId","githubInstallationId"]},"latestDeploymentStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"domains":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Domain record ID; use as domainId for lifecycle routes."},"serverId":{"type":"string"},"organizationId":{"type":"string"},"domain":{"type":"string"},"type":{"type":"string"},"verified":{"type":"boolean"},"hostnameId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cloudflare custom hostname provider ID."},"configuredAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"activatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"pendingRemovalAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Deployment branch; null means production."},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","organizationId","domain","type","verified","hostnameId","configuredAt","activatedAt","pendingRemovalAt","branch","createdAt","updatedAt"]},"description":"Up to 20 newest domain records, ordered by createdAt descending."},"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"status":{"type":"string"},"buildStartedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"buildCompletedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"gitCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"serverId":{"type":"string"},"isProductionDeployment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"deploymentVersion":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"deploymentTrigger":{"anyOf":[{"type":"string"},{"type":"null"}]},"archivedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","name","createdAt","updatedAt","status","buildStartedAt","buildCompletedAt","gitCommitSha","gitBranch","gitCommitMessage","serverId","isProductionDeployment","deploymentVersion","deploymentTrigger","archivedAt"]}},"_count":{"type":"object","properties":{"deployments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"mcpUrl":{"type":"string"},"dashboardUrl":{"type":"string"},"chatUrl":{"type":"string"},"gatewayDomain":{"type":"string"},"customDomainCnameTarget":{"type":"string"},"isExternal":{"type":"boolean"},"environments":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["production","branch"]},"label":{"type":"string"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"activeDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcpUrl":{"type":"string"},"dashboardUrl":{"type":"string"},"chatUrl":{"type":"string"},"slugGatewayHostname":{"type":"string"},"customDomains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"verified":{"type":"boolean"}},"required":["domain","verified"]}},"credential":{"anyOf":[{"$ref":"#/components/schemas/CredentialSummary"},{"type":"null"}]}},"required":["kind","label","branch","activeDeploymentId","mcpUrl","dashboardUrl","chatUrl","slugGatewayHostname","customDomains"]}}},"required":["id","slug","pendingSlug","name","description","tags","config","dashboardConnectionUrls","createdAt","updatedAt","slugRoutingDisabledAt","displayPreferences","status","activeDeploymentId","previousDeploymentId","connectedRepositoryId","externalUrl","publicRoutingMode","region","organizationId","userId","domains","mcpUrl","dashboardUrl","chatUrl","gatewayDomain","customDomainCnameTarget","isExternal","environments"]}},"required":["server"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Connect or reconnect a GitHub repository to an existing hosted server in place. Does not start a deployment; use Deploy or push to ship.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"installationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"repoFullName":{"type":"string","minLength":3,"maxLength":255,"pattern":"^[^/\\s]+\\/[^/\\s]+$"},"productionBranch":{"default":"main","type":"string","minLength":1,"maxLength":255},"rootDir":{"type":"string","maxLength":1024}},"required":["installationId","repoFullName"]}}}}}},"/api/v1/servers/{id}/github/branches":{"get":{"operationId":"getApiV1ServersByIdGithubBranches","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"branches":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"commitSha":{"type":"string"},"protected":{"type":"boolean"}},"required":["name","commitSha","protected"]}}},"required":["branches"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"List branches for the server's linked GitHub repository. Resolves the correct installation from the connected repository.","parameters":[{"in":"path","name":"id","schema":{"type":"string","minLength":1,"maxLength":128},"required":true}]}},"/api/v1/servers/{id}/github/tree-paths":{"get":{"operationId":"getApiV1ServersByIdGithubTreePaths","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"paths":{"type":"array","items":{"type":"string"}},"truncated":{"type":"boolean"}},"required":["paths","truncated"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"List unique directory paths and Dockerfile-like file paths in the linked GitHub repo for a branch (rootDir / watch-path / Dockerfile autocomplete). Defaults ref to the server's production branch.","parameters":[{"in":"path","name":"id","schema":{"type":"string","minLength":1,"maxLength":128},"required":true},{"in":"query","name":"ref","schema":{"type":"string","minLength":1,"maxLength":512}}]}},"/api/v1/servers/{id}/submission-draft":{"get":{"operationId":"getApiV1ServersByIdSubmissionDraft","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"preview":{"type":"boolean","const":true},"mcpServerUrl":{"type":"string"},"toolsFetchOk":{"type":"boolean"},"toolsFetchError":{"anyOf":[{"type":"string"},{"type":"null"}]},"listing":{"type":"object","properties":{"appName":{"type":"string"},"subtitle":{"type":"string"},"description":{"type":"string"},"privacyPolicyUrl":{"type":"string"},"termsOfServiceUrl":{"type":"string"},"demoRecordingUrl":{"type":"string"},"categorySuggestion":{"type":"string"},"releaseNotes":{"type":"string"}},"required":["appName","subtitle","description","privacyPolicyUrl","termsOfServiceUrl","demoRecordingUrl","categorySuggestion","releaseNotes"]},"toolJustifications":{"type":"array","items":{"type":"object","properties":{"toolName":{"type":"string"},"readOnlyHint":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"openWorldHint":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"destructiveHint":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"templateJustification":{"type":"string"}},"required":["toolName","readOnlyHint","openWorldHint","destructiveHint","templateJustification"]}},"positiveTestCasesMarkdown":{"type":"string"},"negativeTestCasesMarkdown":{"type":"string"}},"required":["preview","mcpServerUrl","toolsFetchOk","toolsFetchError","listing","toolJustifications","positiveTestCasesMarkdown","negativeTestCasesMarkdown"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"ChatGPT App Directory draft payload: listing placeholders, tool justification templates from live tools/list (when reachable), and Markdown skeletons for reviewer test cases. Preview only — verify against OpenAI's submission form.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"branch","schema":{"type":"string","maxLength":255}}]}},"/api/v1/servers/{id}/authentication-sessions/{sessionId}/complete":{"post":{"operationId":"postApiV1ServersByIdAuthenticationSessionsBySessionIdComplete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serverId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["pending","authenticated","failed","expired"]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},{"type":"null"}]},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Null for production."},"targetUrl":{"type":"string","format":"uri"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"server":{"type":"object","properties":{"name":{"type":"string"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","icon"]}},"required":["sessionId","serverId","status","completedAt","error","branch","targetUrl","expiresAt","server"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Atomically claim the requesting user's pending session, re-verify Cloud connectivity with the environment's stored credential, and complete the session. OAuth credentials are connected with POST /servers/{id}/credentials/connect (authenticationSessionId), which completes the session itself; a body with `auth` returns 400 USE_CREDENTIALS_API. Does not start a checklist.","parameters":[{"in":"path","name":"sessionId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"auth":{"deprecated":true,"description":"Rejected with 400 USE_CREDENTIALS_API; connect credentials instead."}},"additionalProperties":false}}}}}},"/api/v1/servers/{id}/authentication-sessions/{sessionId}/cancel":{"post":{"operationId":"postApiV1ServersByIdAuthenticationSessionsBySessionIdCancel","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serverId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["pending","authenticated","failed","expired"]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},{"type":"null"}]},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Null for production."},"targetUrl":{"type":"string","format":"uri"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"server":{"type":"object","properties":{"name":{"type":"string"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","icon"]}},"required":["sessionId","serverId","status","completedAt","error","branch","targetUrl","expiresAt","server"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Cancel the requesting user's pending authentication session. Does not disconnect existing server credentials.","parameters":[{"in":"path","name":"sessionId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}}}},"/api/v1/servers/{id}/authentication-sessions/{sessionId}":{"get":{"operationId":"getApiV1ServersByIdAuthenticationSessionsBySessionId","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serverId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["pending","authenticated","failed","expired"]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},{"type":"null"}]},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Null for production."},"targetUrl":{"type":"string","format":"uri"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"server":{"type":"object","properties":{"name":{"type":"string"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","icon"]}},"required":["sessionId","serverId","status","completedAt","error","branch","targetUrl","expiresAt","server"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Read an authentication session for the requesting user and server. Requires server update permission. Returns consent-page details without credentials. Missing or expired Redis records return 404; polling does not extend the session or contact the deployed server.","parameters":[{"in":"path","name":"sessionId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/servers/{id}/authentication-sessions":{"post":{"operationId":"postApiV1ServersByIdAuthenticationSessions","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","const":"pending"},"authenticationUrl":{"type":"string","format":"uri"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["sessionId","status","authenticationUrl","expiresAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Create a 15-minute authentication session for a server's production or preview environment. Requires server update permission. Returns a Cloud consent-page URL; creating a session does not authenticate the server or start a checklist. Each call creates a new session.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"branch":{"description":"Preview branch to authenticate. Omit for production.","type":"string","minLength":1,"maxLength":255}},"additionalProperties":false}}}}}},"/api/v1/servers/{id}/credentials":{"get":{"operationId":"getApiV1ServersByIdCredentials","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CredentialSummary"}},"events":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"surface":{"type":"string"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"oauthError":{"anyOf":[{"type":"string"},{"type":"null"}]},"httpStatus":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"generation":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","type","surface","branch","reason","oauthError","httpStatus","generation","createdAt"]},"description":"The 20 newest events."}},"required":["items","events"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Server credentials"],"description":"List the server's credential slots (one per environment and, for Manufact authorization servers, per user) with their status, owner and account, plus the 20 newest credential events. `canUse` is computed for the requesting user. Never returns tokens.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/servers/{id}/credentials/access-token":{"post":{"operationId":"postApiV1ServersByIdCredentialsAccessToken","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"accessToken":{"type":"string"},"tokenType":{"type":"string"},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"credentialId":{"type":"string"},"generation":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["active","degraded"]},"serverTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Cloud clock, for client skew correction."}},"required":["accessToken","tokenType","expiresAt","credentialId","generation","status","serverTime"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"CREDENTIAL_OWNER_ONLY: the environment's credential is personal to another user","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}},"required":["error","code"],"additionalProperties":{}}}}},"404":{"description":"NO_CREDENTIAL_FOR_ENVIRONMENT","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}},"required":["error","code"],"additionalProperties":{}}}}},"409":{"description":"CREDENTIAL_REAUTH_REQUIRED / CREDENTIAL_REJECTED_BY_SERVER / CREDENTIAL_ENV_MISMATCH","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}},"required":["error","code"],"additionalProperties":{}}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"503":{"description":"CREDENTIAL_REFRESH_UNAVAILABLE (the current token is expired) / CREDENTIAL_MIGRATION_PENDING; honour Retry-After","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}},"required":["error","code"],"additionalProperties":{}}}}}},"tags":["Server credentials"],"description":"Signed-in browser sessions only. Return a valid upstream access token for one environment of the server, refreshing it in Manufact Cloud when it has less than `minTtlSec` left (reduced for short-lived tokens). Send `rejectedTokenSha256` after the MCP server rejected a token to get its replacement. Never falls back to another environment. A still-valid token whose refresh is failing is returned with `status: \"degraded\"`.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"branch":{"anyOf":[{"type":"string","minLength":1,"maxLength":255},{"type":"null"}],"description":"Environment branch; null for production."},"minTtlSec":{"description":"Minimum remaining validity in seconds (default 60). Reduced for short-lived tokens, so it never forces a refresh per call.","type":"integer","minimum":0,"maximum":3600},"rejectedTokenSha256":{"description":"Lowercase hex SHA-256 of an access token the MCP server rejected; asks for a replacement.","type":"string","pattern":"^[0-9a-f]{64}$"}},"required":["branch"],"additionalProperties":false}}}}}},"/api/v1/servers/{id}/credentials/connect":{"post":{"operationId":"postApiV1ServersByIdCredentialsConnect","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"status":{"type":"string","const":"authorization_required"},"attemptId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"authorizationUrl":{"type":"string","format":"uri"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["status","attemptId","authorizationUrl","expiresAt"]},{"type":"object","properties":{"status":{"type":"string","const":"not_required"}},"required":["status"]}]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"409":{"description":"STATIC_AUTH_CONFIGURED / environment not deployed / authentication session not pending","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}},"required":["error","code"],"additionalProperties":{}}}}},"422":{"description":"OAUTH_DISCOVERY_FAILED { stage, detail?, retryAfterSec? }","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}},"required":["error","code"],"additionalProperties":{}}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Server credentials"],"description":"Signed-in browser sessions only; requires server update permission. Start an OAuth consent for one environment: Manufact Cloud discovers the authorization server, registers a client and returns the authorization URL to open in a popup. The callback completes at POST /mcp-connect/callback; poll GET /mcp-connect/attempts/{attemptId}. `not_required` when the environment needs no OAuth. With `authenticationSessionId`, a successful consent also completes that deployment-authentication session.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"branch":{"anyOf":[{"type":"string","minLength":1,"maxLength":255},{"type":"null"}],"description":"Environment branch; null for production."},"authenticationSessionId":{"description":"Pending deployment-authentication session this consent completes.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["branch"],"additionalProperties":false}}}}}},"/api/v1/servers/{id}/credentials/{credentialId}/refresh":{"post":{"operationId":"postApiV1ServersByIdCredentialsByCredentialIdRefresh","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"credential":{"$ref":"#/components/schemas/CredentialSummary"}},"required":["credential"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"409":{"description":"CREDENTIAL_REAUTH_REQUIRED","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}},"required":["error","code"],"additionalProperties":{}}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"503":{"description":"CREDENTIAL_REFRESH_UNAVAILABLE; honour Retry-After","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}},"required":["error","code"],"additionalProperties":{}}}}}},"tags":["Server credentials"],"description":"Requires server update permission; refreshing another user's personal credential also requires server delete permission. Refresh the credential now in Manufact Cloud (\"Retry now\"); single-flight with every other refresher of the same grant. A healthy credential whose token is still valid is returned as it is, without contacting the authorization server. Returns the updated summary, never a token.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"credentialId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/servers/{id}/credentials/{credentialId}":{"delete":{"operationId":"deleteApiV1ServersByIdCredentialsByCredentialId","responses":{"204":{"description":"Disconnected; revocation queued when the authorization server supports it"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Server credentials"],"description":"Requires server update permission; disconnecting another user's personal credential also requires server delete permission. Remove the credential and queue revocation of its grant at the authorization server. The environment then reads as not connected; the server stays an OAuth server.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"credentialId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/servers/{id}/mcp/tools":{"get":{"operationId":"getApiV1ServersByIdMcpTools","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"serverId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"tools":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"title":{"type":"string"},"icons":{"type":"array","items":{"type":"object","properties":{"src":{"type":"string"},"mimeType":{"type":"string"},"sizes":{"type":"array","items":{"type":"string"}},"theme":{"type":"string","enum":["light","dark"]}},"required":["src"],"additionalProperties":{}}},"_meta":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"description":{"type":"string"},"inputSchema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"outputSchema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"annotations":{"type":"object","properties":{"title":{"type":"string"},"readOnlyHint":{"type":"boolean"},"destructiveHint":{"type":"boolean"},"idempotentHint":{"type":"boolean"},"openWorldHint":{"type":"boolean"}},"additionalProperties":{}},"execution":{"type":"object","properties":{"taskSupport":{"type":"string","enum":["required","optional","forbidden"]}},"additionalProperties":{}}},"required":["name","inputSchema"],"additionalProperties":{}}}},"required":["serverId","branch","fetchedAt","tools"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"502":{"description":"Bad gateway","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"List live MCP tools using saved Cloud authentication. Omit branch for production. Returns a complete list; unsupported methods, authentication failures, and incomplete listings are errors.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"branch","schema":{"type":"string","minLength":1,"maxLength":255},"description":"Exact preview branch. Omit for production."}]}},"/api/v1/servers/{id}/mcp/resources":{"get":{"operationId":"getApiV1ServersByIdMcpResources","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"serverId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"resources":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"title":{"type":"string"},"icons":{"type":"array","items":{"type":"object","properties":{"src":{"type":"string"},"mimeType":{"type":"string"},"sizes":{"type":"array","items":{"type":"string"}},"theme":{"type":"string","enum":["light","dark"]}},"required":["src"],"additionalProperties":{}}},"_meta":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"uri":{"type":"string"},"description":{"type":"string"},"mimeType":{"type":"string"},"size":{"type":"integer","minimum":0,"maximum":9007199254740991},"annotations":{"type":"object","properties":{"audience":{"type":"array","items":{"type":"string","enum":["user","assistant"]}},"priority":{"type":"number","minimum":0,"maximum":1},"lastModified":{"type":"string"}},"additionalProperties":{}}},"required":["name","uri"],"additionalProperties":{}}}},"required":["serverId","branch","fetchedAt","resources"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"502":{"description":"Bad gateway","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"List live MCP resources using saved Cloud authentication. Omit branch for production. Returns a complete list; unsupported methods, authentication failures, and incomplete listings are errors.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"branch","schema":{"type":"string","minLength":1,"maxLength":255},"description":"Exact preview branch. Omit for production."}]}},"/api/v1/servers/{id}/mcp/prompts":{"get":{"operationId":"getApiV1ServersByIdMcpPrompts","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"serverId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"prompts":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"title":{"type":"string"},"icons":{"type":"array","items":{"type":"object","properties":{"src":{"type":"string"},"mimeType":{"type":"string"},"sizes":{"type":"array","items":{"type":"string"}},"theme":{"type":"string","enum":["light","dark"]}},"required":["src"],"additionalProperties":{}}},"_meta":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"description":{"type":"string"},"arguments":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"required":{"type":"boolean"}},"required":["name"],"additionalProperties":{}}}},"required":["name"],"additionalProperties":{}}}},"required":["serverId","branch","fetchedAt","prompts"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"502":{"description":"Bad gateway","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"List live MCP prompts using saved Cloud authentication. Omit branch for production. Returns a complete list; unsupported methods, authentication failures, and incomplete listings are errors.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"branch","schema":{"type":"string","minLength":1,"maxLength":255},"description":"Exact preview branch. Omit for production."}]}},"/api/v1/servers/{id}/gateway-events-timeline":{"get":{"operationId":"getApiV1ServersByIdGatewayEventsTimeline","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"buckets":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string"},"success":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"neutral":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"error":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["bucket","success","neutral","error"]}}},"required":["buckets"]}}}},"400":{"description":"ANALYTICS_QUERY_INVALID / ANALYTICS_SQL_REJECTED / VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"408":{"description":"ANALYTICS_QUERY_TIMEOUT: timed out or cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"413":{"description":"ANALYTICS_RESULT_TOO_LARGE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"422":{"description":"ANALYTICS_QUERY_BUDGET (see details) / ANALYTICS_TIME_RANGE_UNAVAILABLE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"429":{"description":"ANALYTICS_QUERY_RATE_LIMIT (honour Retry-After)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"503":{"description":"ANALYTICS_UNAVAILABLE (retry once)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}}},"tags":["Servers"],"description":"Success / neutral / error events per hour since startTime over all traffic (per day past 1500 hours). Plan retention clamps startTime.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"startTime","schema":{"type":"string","minLength":1},"required":true,"description":"ISO 8601 lower bound (inclusive)"},{"in":"query","name":"branch","schema":{"type":"string","maxLength":255},"description":"Optional environment scope: a branch name filters to that environment (the production branch to production only). Omit for every environment."}]}},"/api/v1/servers/{id}/gateway-events":{"get":{"operationId":"getApiV1ServersByIdGatewayEvents","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"time":{"type":"string"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"server_id":{"type":"string"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcp_method":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcp_request_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcp_session_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcp_response_status":{"anyOf":[{"type":"string"},{"type":"null"}]},"request_payload":{"anyOf":[{},{"type":"null"}]},"response_payload":{"anyOf":[{},{"type":"null"}]},"client_info":{"anyOf":[{},{"type":"null"}]},"protocol_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"server_info":{"anyOf":[{},{"type":"null"}]},"tool_call_success":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"error_code":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}]},"http_method":{"anyOf":[{"type":"string"},{"type":"null"}]},"path":{"anyOf":[{"type":"string"},{"type":"null"}]},"query_params":{"anyOf":[{"type":"string"},{"type":"null"}]},"status_code":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"duration_ms":{"anyOf":[{"type":"number"},{"type":"null"}]},"request_size":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"response_size":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"resource_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"resource_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"client_ip":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}]},"origin":{"anyOf":[{"type":"string"},{"type":"null"}]},"referer":{"anyOf":[{"type":"string"},{"type":"null"}]},"target_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"subdomain":{"anyOf":[{"type":"string"},{"type":"null"}]},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"anyOf":[{"type":"string"},{"type":"null"}]},"cf_ray":{"anyOf":[{"type":"string"},{"type":"null"}]},"auth_method":{"anyOf":[{"type":"string"},{"type":"null"}]},"user_intent":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","time","request_id","server_id","user_id","mcp_method","mcp_request_id","mcp_session_id","mcp_response_status","request_payload","response_payload","client_info","protocol_version","server_info","tool_call_success","error_code","error_message","http_method","path","query_params","status_code","duration_ms","request_size","response_size","resource_type","resource_name","client_ip","country","user_agent","origin","referer","target_url","subdomain","hostname","status","cf_ray","auth_method"]}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["events","nextCursor"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Paginated gateway observability events for a server, newest first (keyset cursor on (time, id); plan retention clamps startTime).","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"startTime","schema":{"type":"string","minLength":1},"required":true,"description":"ISO 8601 lower bound (inclusive)"},{"in":"query","name":"endTime","schema":{"type":"string"},"description":"ISO 8601 upper bound (exclusive)"},{"in":"query","name":"limit","schema":{"default":50,"type":"integer","minimum":1,"maximum":1000}},{"in":"query","name":"cursor","schema":{"type":"string","maxLength":600},"description":"Opaque keyset cursor from a previous page's `nextCursor` (events strictly older than its last row). A bare ISO 8601 time is still accepted as an exclusive upper bound."},{"in":"query","name":"status","schema":{"type":"string","enum":["success","error","4xx","5xx"]},"description":"Filter by event status or status code range"},{"in":"query","name":"mcpOnly","schema":{"default":false,"type":"boolean"},"description":"Only include recognized MCP protocol events"},{"in":"query","name":"search","schema":{"type":"string","maxLength":500},"description":"Server-side search. Supports tokens like status:200, status:4xx, tool:<name>, client:<name>, session:<id>, duration>100, duration<500 plus free text."},{"in":"query","name":"client","schema":{"type":"string","maxLength":255},"description":"Exact client name to filter events by (e.g. \"openai-codex\")."},{"in":"query","name":"method","schema":{"type":"string","maxLength":255},"description":"Exact MCP method to filter events by (e.g. \"tools/call\")."},{"in":"query","name":"branch","schema":{"type":"string","maxLength":255},"description":"Optional environment scope: a branch name filters to that environment (the production branch to production only). Omit for every environment."}]}},"/api/v1/servers/{id}/analytics/summary":{"get":{"operationId":"getApiV1ServersByIdAnalyticsSummary","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"current":{"type":"object","properties":{"totals":{"type":"object","properties":{"toolCalls":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"verifiedActors":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"approximateActors":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errorRate":{"anyOf":[{"type":"number"},{"type":"null"}]},"avgLatencyMs":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["toolCalls","sessions","errorRate","avgLatencyMs"]},"buckets":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string"},"toolCalls":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errorEvents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"totalEvents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"avgDurationMs":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["bucket","toolCalls","sessions","errorEvents","totalEvents","avgDurationMs"]}},"timing":{"type":"object","properties":{"asOf":{"type":"string"},"window":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"]},"granularity":{"type":"string","enum":["minute","hour","day","week","month"]},"comparison":{"anyOf":[{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"complete":{"type":"boolean"}},"required":["from","to","complete"]},{"type":"null"}]}},"required":["asOf","window","comparison"]},"seriesTiming":{"type":"object","properties":{"asOf":{"type":"string"},"window":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"]},"granularity":{"type":"string","enum":["minute","hour","day","week","month"]},"comparison":{"anyOf":[{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"complete":{"type":"boolean"}},"required":["from","to","complete"]},{"type":"null"}]}},"required":["asOf","window","comparison"]}},"required":["totals","buckets"]},"previous":{"type":"object","properties":{"totals":{"type":"object","properties":{"toolCalls":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"verifiedActors":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"approximateActors":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errorRate":{"anyOf":[{"type":"number"},{"type":"null"}]},"avgLatencyMs":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["toolCalls","sessions","errorRate","avgLatencyMs"]},"window":{"anyOf":[{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"complete":{"type":"boolean"}},"required":["from","to","complete"]},{"type":"null"}]}},"required":["totals"]}},"required":["current","previous"]}}}},"400":{"description":"ANALYTICS_QUERY_INVALID / ANALYTICS_SQL_REJECTED / VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"408":{"description":"ANALYTICS_QUERY_TIMEOUT: timed out or cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"413":{"description":"ANALYTICS_RESULT_TOO_LARGE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"422":{"description":"ANALYTICS_QUERY_BUDGET (see details) / ANALYTICS_TIME_RANGE_UNAVAILABLE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"429":{"description":"ANALYTICS_QUERY_RATE_LIMIT (honour Retry-After)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"503":{"description":"ANALYTICS_UNAVAILABLE (retry once)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}}},"tags":["Servers"],"description":"Counter-card summary: current-period totals + per-bucket sparkline series and the immediately-preceding period's totals (for deltas). Honors client/tool filters and excludes internal traffic by default.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"timeRange","schema":{"default":"30d","type":"string","enum":["24h","7d","30d","90d"]}},{"in":"query","name":"branch","schema":{"type":"string","maxLength":255}},{"in":"query","name":"clients","schema":{"type":"string","maxLength":8000},"description":"Comma-separated client names to include; omit for all (non-internal) clients."},{"in":"query","name":"tools","schema":{"type":"string","maxLength":8000},"description":"Comma-separated tool names (resourceName on tools/call) to scope sessions by; omit for all tools."}]}},"/api/v1/servers/{id}/analytics/requests-by-country":{"get":{"operationId":"getApiV1ServersByIdAnalyticsRequestsByCountry","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"country":{"type":"string"},"requestCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sessionCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"clients":{"type":"array","items":{"type":"object","properties":{"clientName":{"type":"string"},"requestCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["clientName","requestCount"]}}},"required":["country","requestCount","sessionCount","clients"]}}}}},"400":{"description":"ANALYTICS_QUERY_INVALID / ANALYTICS_SQL_REJECTED / VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"408":{"description":"ANALYTICS_QUERY_TIMEOUT: timed out or cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"413":{"description":"ANALYTICS_RESULT_TOO_LARGE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"422":{"description":"ANALYTICS_QUERY_BUDGET (see details) / ANALYTICS_TIME_RANGE_UNAVAILABLE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"429":{"description":"ANALYTICS_QUERY_RATE_LIMIT (honour Retry-After)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"503":{"description":"ANALYTICS_UNAVAILABLE (retry once)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}}},"tags":["Servers"],"description":"Requests grouped by country for a server over a time range (policy-enforced).","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"timeRange","schema":{"default":"30d","type":"string","enum":["24h","7d","30d","90d"]}},{"in":"query","name":"branch","schema":{"type":"string","maxLength":255}},{"in":"query","name":"includeInternal","schema":{"anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false"]}]}},{"in":"query","name":"clients","schema":{"type":"string","maxLength":8000},"description":"Comma-separated client names to include; omit for all (non-internal) clients."},{"in":"query","name":"tools","schema":{"type":"string","maxLength":8000},"description":"Comma-separated tool names (resourceName on tools/call) to scope sessions by; omit for all tools."}]}},"/api/v1/servers/{id}/analytics/client-breakdown":{"get":{"operationId":"getApiV1ServersByIdAnalyticsClientBreakdown","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"timing":{"type":"object","properties":{"asOf":{"type":"string"},"window":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"]},"granularity":{"type":"string","enum":["minute","hour","day","week","month"]},"comparison":{"anyOf":[{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"complete":{"type":"boolean"}},"required":["from","to","complete"]},{"type":"null"}]}},"required":["asOf","window","comparison"]},"clients":{"type":"array","items":{"type":"object","properties":{"clientName":{"type":"string"},"clientVersion":{"type":"string"},"protocol":{"anyOf":[{"type":"string"},{"type":"null"}]},"sessionCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requestCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["clientName","clientVersion","protocol","sessionCount","requestCount"]}},"timeline":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string"},"clientName":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["bucket","clientName","count"]}}},"required":["clients","timeline"]}}}},"400":{"description":"ANALYTICS_QUERY_INVALID / ANALYTICS_SQL_REJECTED / VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"408":{"description":"ANALYTICS_QUERY_TIMEOUT: timed out or cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"413":{"description":"ANALYTICS_RESULT_TOO_LARGE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"422":{"description":"ANALYTICS_QUERY_BUDGET (see details) / ANALYTICS_TIME_RANGE_UNAVAILABLE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"429":{"description":"ANALYTICS_QUERY_RATE_LIMIT (honour Retry-After)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"503":{"description":"ANALYTICS_UNAVAILABLE (retry once)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}}},"tags":["Servers"],"description":"Client breakdown (sessions + requests per client) and timeline for a server.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"timeRange","schema":{"default":"30d","type":"string","enum":["24h","7d","30d","90d"]}},{"in":"query","name":"granularity","schema":{"default":"day","type":"string","enum":["minute","hour","day","week","month"]}},{"in":"query","name":"branch","schema":{"type":"string","maxLength":255}},{"in":"query","name":"includeInternal","schema":{"anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false"]}]}},{"in":"query","name":"clients","schema":{"type":"string","maxLength":8000},"description":"Comma-separated client names to include; omit for all (non-internal) clients."},{"in":"query","name":"tools","schema":{"type":"string","maxLength":8000},"description":"Comma-separated tool names (resourceName on tools/call) to scope sessions by; omit for all tools."}]}},"/api/v1/servers/{id}/analytics/tool-breakdown":{"get":{"operationId":"getApiV1ServersByIdAnalyticsToolBreakdown","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"timing":{"type":"object","properties":{"asOf":{"type":"string"},"window":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"]},"granularity":{"type":"string","enum":["minute","hour","day","week","month"]},"comparison":{"anyOf":[{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"complete":{"type":"boolean"}},"required":["from","to","complete"]},{"type":"null"}]}},"required":["asOf","window","comparison"]},"breakdown":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string"},"method":{"type":"string"},"resourceName":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sumOutputTokens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tokenEventCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["bucket","method","resourceName","count","sumOutputTokens","tokenEventCount"]}}},"required":["breakdown"]}}}},"400":{"description":"ANALYTICS_QUERY_INVALID / ANALYTICS_SQL_REJECTED / VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"408":{"description":"ANALYTICS_QUERY_TIMEOUT: timed out or cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"413":{"description":"ANALYTICS_RESULT_TOO_LARGE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"422":{"description":"ANALYTICS_QUERY_BUDGET (see details) / ANALYTICS_TIME_RANGE_UNAVAILABLE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"429":{"description":"ANALYTICS_QUERY_RATE_LIMIT (honour Retry-After)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"503":{"description":"ANALYTICS_UNAVAILABLE (retry once)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}}},"tags":["Servers"],"description":"Tool / resource / prompt usage breakdown bucketed by time for a server.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"timeRange","schema":{"default":"30d","type":"string","enum":["24h","7d","30d","90d"]}},{"in":"query","name":"granularity","schema":{"default":"day","type":"string","enum":["minute","hour","day","week","month"]}},{"in":"query","name":"branch","schema":{"type":"string","maxLength":255}},{"in":"query","name":"includeInternal","schema":{"anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false"]}]}},{"in":"query","name":"clients","schema":{"type":"string","maxLength":8000},"description":"Comma-separated client names to include; omit for all (non-internal) clients."},{"in":"query","name":"tools","schema":{"type":"string","maxLength":8000},"description":"Comma-separated tool names (resourceName on tools/call) to scope sessions by; omit for all tools."}]}},"/api/v1/servers/{id}/analytics/tool-definitions":{"get":{"operationId":"getApiV1ServersByIdAnalyticsToolDefinitions","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"definitions":{"type":"array","items":{"type":"object","properties":{"toolName":{"type":"string"},"definitionTokens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["toolName","definitionTokens"]}},"promptDefinitions":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"definitionTokens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["name","definitionTokens"]}},"resourceDefinitions":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"definitionTokens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["name","definitionTokens"]}}},"required":["definitions","promptDefinitions","resourceDefinitions"]}}}},"400":{"description":"ANALYTICS_QUERY_INVALID / ANALYTICS_SQL_REJECTED / VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"408":{"description":"ANALYTICS_QUERY_TIMEOUT: timed out or cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"413":{"description":"ANALYTICS_RESULT_TOO_LARGE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"422":{"description":"ANALYTICS_QUERY_BUDGET (see details) / ANALYTICS_TIME_RANGE_UNAVAILABLE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"429":{"description":"ANALYTICS_QUERY_RATE_LIMIT (honour Retry-After)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"503":{"description":"ANALYTICS_UNAVAILABLE (retry once)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}}},"tags":["Servers"],"description":"Per-entity definition token estimates from the latest captured tools/list, prompts/list, and resources/list responses.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"branch","schema":{"type":"string","maxLength":255}}]}},"/api/v1/servers/{id}/analytics/health":{"get":{"operationId":"getApiV1ServersByIdAnalyticsHealth","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"windowHours":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"activeNow":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tools":{"type":"array","items":{"type":"object","properties":{"calls":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errorRate":{"type":"number"},"p50":{"anyOf":[{"type":"number"},{"type":"null"}]},"p95":{"anyOf":[{"type":"number"},{"type":"null"}]},"p99":{"anyOf":[{"type":"number"},{"type":"null"}]},"resourceName":{"type":"string"},"toolResultErrorRate":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["calls","errorRate","p50","p95","p99","resourceName","toolResultErrorRate"]}},"clients":{"type":"array","items":{"type":"object","properties":{"calls":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errorRate":{"type":"number"},"p50":{"anyOf":[{"type":"number"},{"type":"null"}]},"p95":{"anyOf":[{"type":"number"},{"type":"null"}]},"p99":{"anyOf":[{"type":"number"},{"type":"null"}]},"clientName":{"type":"string"},"clientVersion":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["calls","errorRate","p50","p95","p99","clientName","clientVersion"]}}},"required":["generatedAt","windowHours","activeNow","tools","clients"]}}}},"400":{"description":"ANALYTICS_QUERY_INVALID / ANALYTICS_SQL_REJECTED / VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"408":{"description":"ANALYTICS_QUERY_TIMEOUT: timed out or cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"413":{"description":"ANALYTICS_RESULT_TOO_LARGE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"422":{"description":"ANALYTICS_QUERY_BUDGET (see details) / ANALYTICS_TIME_RANGE_UNAVAILABLE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"429":{"description":"ANALYTICS_QUERY_RATE_LIMIT (honour Retry-After)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"503":{"description":"ANALYTICS_UNAVAILABLE (retry once)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}}},"tags":["Servers"],"description":"Per-tool and per-client health (calls, error rates, tool-result errors, p50/p95/p99 t-digest estimates) and sessions active in the last 5 minutes.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"timeRange","schema":{"default":"24h","type":"string","enum":["24h","7d","30d","90d"]}},{"in":"query","name":"entity","schema":{"default":"tools","type":"string","enum":["all","tools","resources","prompts","notifications","logging","sampling","completion","elicitation","initialize"]}},{"in":"query","name":"branch","schema":{"type":"string","maxLength":255}},{"in":"query","name":"includeInternal","schema":{"anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false"]}]}},{"in":"query","name":"clients","schema":{"type":"string","maxLength":8000},"description":"Comma-separated client names to include; omit for all (non-internal) clients."},{"in":"query","name":"tools","schema":{"type":"string","maxLength":8000},"description":"Comma-separated tool names (resourceName on tools/call) to scope sessions by; omit for all tools."}]}},"/api/v1/servers/{id}/analytics/tool-errors":{"get":{"operationId":"getApiV1ServersByIdAnalyticsToolErrors","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"groups":{"type":"array","items":{"type":"object","properties":{"error":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastSeen":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"sessions":{"type":"array","items":{"type":"object","properties":{"interactionId":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["interactionId","count"]}}},"required":["error","count","lastSeen","sessions"]}},"coveredFrom":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["groups"]}}}},"400":{"description":"ANALYTICS_QUERY_INVALID / ANALYTICS_SQL_REJECTED / VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"408":{"description":"ANALYTICS_QUERY_TIMEOUT: timed out or cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"413":{"description":"ANALYTICS_RESULT_TOO_LARGE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"422":{"description":"ANALYTICS_QUERY_BUDGET (see details) / ANALYTICS_TIME_RANGE_UNAVAILABLE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"429":{"description":"ANALYTICS_QUERY_RATE_LIMIT (honour Retry-After)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"503":{"description":"ANALYTICS_UNAVAILABLE (retry once)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}}},"tags":["Servers"],"description":"Errored calls for one tool/resource (canonical error semantics), grouped by error reason, with the interactions (sessions) where each error appeared.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"timeRange","schema":{"default":"24h","type":"string","enum":["24h","7d","30d","90d"]}},{"in":"query","name":"resource","schema":{"type":"string","minLength":1,"maxLength":512},"required":true},{"in":"query","name":"branch","schema":{"type":"string","maxLength":255}},{"in":"query","name":"includeInternal","schema":{"anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false"]}]}},{"in":"query","name":"clients","schema":{"type":"string","maxLength":8000},"description":"Comma-separated client names to include; omit for all (non-internal) clients."},{"in":"query","name":"tools","schema":{"type":"string","maxLength":8000},"description":"Comma-separated tool names (resourceName on tools/call) to scope sessions by; omit for all tools."}]}},"/api/v1/servers/{id}/analytics/error-runtime-logs":{"get":{"operationId":"getApiV1ServersByIdAnalyticsErrorRuntimeLogs","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"deployment":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"gitBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","name","gitBranch","createdAt"]},{"type":"null"}]},"logs":{"type":"string"},"window":{"type":"object","properties":{"start":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"end":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["start","end"]}},"required":["deployment","logs","window"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Runtime logs around an errored event, from the deployment that was serving the event's branch/environment at that time.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"time","schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"required":true},{"in":"query","name":"branch","schema":{"type":"string","maxLength":255}}]}},"/api/v1/servers/{id}/logs":{"get":{"operationId":"getApiV1ServersByIdLogs","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"logs":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"logType":{"type":"string","enum":["build","runtime"]},"deploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"appName":{"anyOf":[{"type":"string"},{"type":"null"}]},"level":{"anyOf":[{"type":"string"},{"type":"null"}]},"region":{"anyOf":[{"type":"string"},{"type":"null"}]},"instanceId":{"anyOf":[{"type":"string"},{"type":"null"}]},"message":{"type":"string"}},"required":["time","logType","deploymentId","appName","level","region","instanceId","message"]}},"window":{"type":"object","properties":{"start":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"end":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["start","end"]}},"required":["logs","window"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Durable build and/or runtime logs for a server over a time range, read from ClickHouse. Filter by `type` (build|runtime), `deploymentId`, and `start`/`end` (defaults to the last 24h).","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"type","schema":{"type":"string","enum":["build","runtime"]}},{"in":"query","name":"start","schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},{"in":"query","name":"end","schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},{"in":"query","name":"deploymentId","schema":{"type":"string","maxLength":255}},{"in":"query","name":"limit","schema":{"default":5000,"type":"integer","minimum":1,"maximum":20000}},{"in":"query","name":"order","schema":{"default":"asc","type":"string","enum":["asc","desc"]}}]}},"/api/v1/servers/{id}/interactions":{"get":{"operationId":"getApiV1ServersByIdInteractions","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"interactions":{"type":"array","items":{"type":"object","properties":{"interactionId":{"type":"string"},"serverId":{"type":"string"},"firstSeen":{"type":"string"},"lastSeen":{"type":"string"},"strategy":{"type":"string"},"clientName":{"anyOf":[{"type":"string"},{"type":"null"}]},"clientVersion":{"anyOf":[{"type":"string"},{"type":"null"}]},"actorId":{"anyOf":[{"type":"string"},{"type":"null"}]},"actorSource":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"eventCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"toolCallCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errorCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"toolResultErrorCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"transportSessionCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"timeline":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string"},"method":{"anyOf":[{"type":"string"},{"type":"null"}]},"resourceName":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["time","method","resourceName","status"]}},"insight":{"anyOf":[{"type":"object","properties":{"goalId":{"anyOf":[{"type":"string"},{"type":"null"}]},"goalName":{"anyOf":[{"type":"string"},{"type":"null"}]},"outcome":{"type":"string"},"intentSummary":{"anyOf":[{"type":"string"},{"type":"null"}]},"assignedBy":{"type":"string"}},"required":["goalId","goalName","outcome","intentSummary","assignedBy"]},{"type":"null"}]}},"required":["interactionId","serverId","firstSeen","lastSeen","strategy","clientName","clientVersion","actorId","actorSource","country","eventCount","toolCallCount","errorCount","toolResultErrorCount","transportSessionCount","timeline","insight"]}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"truncated":{"type":"boolean"},"sortWindowDays":{"type":"integer","minimum":1,"maximum":9007199254740991}},"required":["interactions","nextCursor"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"List interactions (the product unit replacing sessions) for a server, most-recent first. Served from ClickHouse raw events; counters are exact distinct event counts over the interaction's life within plan retention. Count sorts (tool calls, request errors, tool errors, or combined errors) and ascending sorts rank over the requested window, or over the most recent days that hold about 20M raw events (1-7, reported as `sortWindowDays`). A read stopped by its time or memory guard returns 503 with code INTERACTIONS_QUERY_LIMIT.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"branch","schema":{"type":"string","maxLength":255}},{"in":"query","name":"timeRange","schema":{"default":"7d","type":"string","enum":["24h","7d","30d","90d"]}},{"in":"query","name":"limit","schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"in":"query","name":"cursor","schema":{"type":"string","maxLength":600}},{"in":"query","name":"includeInternal","schema":{"anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false"]}]}},{"in":"query","name":"sortBy","schema":{"default":"lastSeen","type":"string","enum":["lastSeen","toolCalls","errors","requestErrors","toolErrors"]}},{"in":"query","name":"sortDir","schema":{"default":"desc","type":"string","enum":["asc","desc"]}},{"in":"query","name":"client","schema":{"type":"string","minLength":1,"maxLength":200}},{"in":"query","name":"clients","schema":{"type":"string","maxLength":8000}},{"in":"query","name":"country","schema":{"type":"string","minLength":1,"maxLength":16}},{"in":"query","name":"hasToolCalls","schema":{"anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false"]}]}},{"in":"query","name":"goalId","schema":{"type":"string","minLength":1,"maxLength":64}},{"in":"query","name":"goalIds","schema":{"type":"string","minLength":1,"maxLength":4000}},{"in":"query","name":"outcome","schema":{"type":"string","enum":["achieved","failed","unknown"]}},{"in":"query","name":"outcomes","schema":{"type":"string","minLength":1,"maxLength":64}},{"in":"query","name":"tool","schema":{"type":"string","minLength":1,"maxLength":200}},{"in":"query","name":"tools","schema":{"type":"string","maxLength":8000}},{"in":"query","name":"actorId","schema":{"type":"string","minLength":1,"maxLength":64}},{"in":"query","name":"sessionId","schema":{"type":"string","minLength":1,"maxLength":64}},{"in":"query","name":"interactionIds","schema":{"type":"string","maxLength":8000}}]}},"/api/v1/servers/{id}/interactions/filter-options":{"get":{"operationId":"getApiV1ServersByIdInteractionsFilterOptions","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"clients":{"type":"array","items":{"type":"string"}},"countries":{"type":"array","items":{"type":"string"}},"methods":{"type":"array","items":{"type":"string"}},"tools":{"type":"array","items":{"type":"string"}}},"required":["clients","countries","methods","tools"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Distinct client names, countries, MCP methods and tool names seen in the window — feeds filter dropdowns without paging the full list.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"branch","schema":{"type":"string","maxLength":255}},{"in":"query","name":"timeRange","schema":{"default":"7d","type":"string","enum":["24h","7d","30d","90d"]}},{"in":"query","name":"includeInternal","schema":{"anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false"]}]}}]}},"/api/v1/servers/{id}/analytics/actor-labels":{"get":{"operationId":"getApiV1ServersByIdAnalyticsActorLabels","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"labels":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"}},"required":["name"]}}},"required":["labels"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Resolve actor names and emails on this server from token display claims or organization membership. Token claims are unverified. Unknown actor ids are omitted.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"actorIds","schema":{"type":"string","minLength":1,"maxLength":8000},"required":true}]}},"/api/v1/servers/{id}/interactions/{interactionId}/events":{"get":{"operationId":"getApiV1ServersByIdInteractionsByInteractionIdEvents","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"time":{"type":"string"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"server_id":{"type":"string"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcp_method":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcp_request_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcp_session_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcp_response_status":{"anyOf":[{"type":"string"},{"type":"null"}]},"request_payload":{"anyOf":[{},{"type":"null"}]},"response_payload":{"anyOf":[{},{"type":"null"}]},"client_info":{"anyOf":[{},{"type":"null"}]},"protocol_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"server_info":{"anyOf":[{},{"type":"null"}]},"tool_call_success":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"error_code":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}]},"http_method":{"anyOf":[{"type":"string"},{"type":"null"}]},"path":{"anyOf":[{"type":"string"},{"type":"null"}]},"query_params":{"anyOf":[{"type":"string"},{"type":"null"}]},"status_code":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"duration_ms":{"anyOf":[{"type":"number"},{"type":"null"}]},"request_size":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"response_size":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"resource_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"resource_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"client_ip":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}]},"origin":{"anyOf":[{"type":"string"},{"type":"null"}]},"referer":{"anyOf":[{"type":"string"},{"type":"null"}]},"target_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"subdomain":{"anyOf":[{"type":"string"},{"type":"null"}]},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"anyOf":[{"type":"string"},{"type":"null"}]},"cf_ray":{"anyOf":[{"type":"string"},{"type":"null"}]},"auth_method":{"anyOf":[{"type":"string"},{"type":"null"}]},"user_intent":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","time","request_id","server_id","user_id","mcp_method","mcp_request_id","mcp_session_id","mcp_response_status","request_payload","response_payload","client_info","protocol_version","server_info","tool_call_success","error_code","error_message","http_method","path","query_params","status_code","duration_ms","request_size","response_size","resource_type","resource_name","client_ip","country","user_agent","origin","referer","target_url","subdomain","hostname","status","cf_ray","auth_method"]}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["events","nextCursor"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Timeline replay: raw events for a single interaction, oldest first. Optional from/to (ISO) bound the read; otherwise the interaction's time range is looked up by id. Plan retention clamps the read.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"interactionId","schema":{"type":"string","minLength":1,"maxLength":128},"required":true},{"in":"query","name":"branch","schema":{"type":"string","maxLength":255}},{"in":"query","name":"from","schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},{"in":"query","name":"to","schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}}]}},"/api/v1/servers/{id}/analytics/catalog":{"get":{"operationId":"getApiV1ServersByIdAnalyticsCatalog","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"catalogVersion":{"type":"string"},"dialect":{"type":"string","const":"clickhouse"},"relations":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","enum":["events","metrics_hourly","metrics_daily","sessions_daily","sessions_hourly","clients_daily","tool_health_daily","tool_interactions","actors_hourly","actors_daily"]},"description":{"type":"string"},"grain":{"type":"string"},"timeColumn":{"type":"string"},"ttlDays":{"type":"number"},"rowBudget":{"anyOf":[{"type":"number"},{"type":"null"}]},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"kind":{"type":"string"},"description":{"type":"string"}},"required":["name","type","kind","description"]}}},"required":["name","description","grain","timeColumn","ttlDays","rowBudget","columns"]}},"measures":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","enum":["events","tool_calls","errors","error_rate","transport_errors","tool_result_errors","tool_outcome_events","tool_result_error_rate","neutral_events","success_events","avg_duration_ms","min_duration_ms","max_duration_ms","p50_duration_ms","p90_duration_ms","p95_duration_ms","p99_duration_ms","sessions","actors","verified_actors","approximate_actors","output_tokens","token_events","avg_request_bytes","avg_response_bytes","sessions_with_tool","active_interactions_5m","first_seen","last_seen"],"description":"Measure. ≈ = approximate (sketch). events (count): Events (requests); tool_calls (count): tools/call events; errors (count): Error events: transport errors plus failed tool results; error_rate (ratio): errors / events (0..1); transport_errors (count): HTTP/transport errors, excluding neutral lifecycle signals; tool_result_errors (count): tools/call results with isError; tool_outcome_events (count): Events with a known tool outcome (tool_call_success not NULL); tool_result_error_rate (ratio): tool_result_errors / tool_outcome_events (0..1); neutral_events (count): Expected capability signals (optional SSE 405, protocol probe); success_events (count): Successful events; avg_duration_ms (ms): Mean duration_ms over events with a duration; min_duration_ms (ms): Minimum duration_ms; max_duration_ms (ms): Maximum duration_ms; p50_duration_ms (ms, ≈): p50 of duration_ms (t-digest); p90_duration_ms (ms, ≈): p90 of duration_ms (t-digest); p95_duration_ms (ms, ≈): p95 of duration_ms (t-digest); p99_duration_ms (ms, ≈): p99 of duration_ms (t-digest); sessions (count, ≈): Distinct sessions (interaction_id); actors (count, ≈): Distinct actors; verified_actors (count, ≈): Distinct actors identified by conversation, token or account; approximate_actors (count, ≈): Distinct IP-derived actors; output_tokens (tokens): Sum of estimated output tokens; token_events (count): Events with an output token estimate; avg_request_bytes (bytes): Mean request body bytes; avg_response_bytes (bytes): Mean response body bytes; sessions_with_tool (count): Distinct sessions with at least one matching tools/call (exact, tool index); active_interactions_5m (count): Distinct sessions with an event in the last 5 minutes (exact, raw); first_seen (timestamp): First event time; last_seen (timestamp): Last event time"},"description":{"type":"string"},"unit":{"type":"string","enum":["count","ratio","ms","tokens","bytes","timestamp"]},"type":{"type":"string"},"errorBound":{"anyOf":[{"type":"string"},{"type":"null"}]},"accuracy":{"type":"string","enum":["exact","approx"]},"sources":{"type":"array","items":{"type":"string","enum":["events","metrics_hourly","metrics_daily","sessions_daily","sessions_hourly","clients_daily","tool_health_daily","tool_interactions","actors_hourly","actors_daily"]}},"sql":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["name","description","unit","type","errorBound","accuracy","sources","sql"]}},"dimensions":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","enum":["mcp_method","method_family","resource","health_resource","resource_name","resource_type","tool","client_name","client_version","protocol_version","country","subdomain","http_method","status","status_code","error_code","transport_error_kind","transport_mode","auth_method","actor_source","actor_trust","traffic_class","actor_id","interaction_id","error_reason","deployment_id"],"description":"Dimension. mcp_method: JSON-RPC method (tools/call, tools/list, initialize, ...); method_family: First path segment of the method (tools, resources, prompts, initialize, ...); resource: Breakdown key: resource_name, else resource_type, else the method (tool-breakdown card); health_resource: Health key: resource_name, else the method (health card); resource_name: Tool, prompt or resource name the method targets (resources/* URIs: credentials redacted); resource_type: tool, prompt or resource; tool: Tool name of tools/call events (NULL for other methods); client_name: MCP client display name from initialize ('Unknown Client' when missing); client_version: MCP client version ('unknown' when missing); protocol_version: Negotiated MCP protocol version ('unknown' when missing); country: Caller country, ISO 3166-1 alpha-2 ('Unknown' when missing); subdomain: Gateway subdomain: the server slug for production, <slug>--br-<branch> for previews; http_method: HTTP method; status: success or error; status_code: HTTP status code; error_code: JSON-RPC error code; transport_error_kind: Transport failure class; transport_mode: Transport (streamable-http, sse, ...); auth_method: How the caller authenticated; actor_source: How actor_id was derived (sdk-conversation, auth-token, openai-subject, platform-user, ip-anon); actor_trust: verified (person or conversation), approximate (IP-derived) or none; traffic_class: non_mcp, discovery, allowlisted or other_mcp; actor_id (raw events only): Org-salted actor hash (linkable across servers of one organization); interaction_id (raw events only): Session (interaction) id: one conversation or connection; error_reason (raw events only): Error message with secrets redacted (at most 500 characters); deployment_id (raw events only): Deployment that served the request"},"description":{"type":"string"},"type":{"type":"string"},"rawOnly":{"type":"boolean"},"sources":{"type":"array","items":{"type":"string","enum":["events","metrics_hourly","metrics_daily","sessions_daily","sessions_hourly","clients_daily","tool_health_daily","tool_interactions","actors_hourly","actors_daily"]}}},"required":["name","description","type","rawOnly","sources"]}},"segments":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","enum":["mcp_traffic","method_allowlist","non_discovery","all"],"description":"Traffic segment (ANDed; default mcp_traffic). mcp_traffic: Parsed MCP requests (the default): excludes non-MCP HTTP and 'unknown'; method_allowlist: tools/*, resources/*, prompts/*, notifications/*, logging/*, sampling/*, completion/*, elicitation/* and initialize; non_discovery: method_allowlist without discovery (*/list) and subscription bookkeeping; all: Every event, including non-MCP HTTP (the timeline card)"},"description":{"type":"string"},"default":{"type":"boolean"}},"required":["name","description","default"]}},"branches":{"type":"array","items":{"type":"object","properties":{"branch":{"type":"string"},"subdomain":{"type":"string"}},"required":["branch","subdomain"]}},"limits":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"number"}}}]},"description":"API limits; admission: per-org pools"},"retention":{"type":"object","properties":{"days":{"anyOf":[{"type":"number"},{"type":"string","const":"unlimited"}]},"floor":{"type":"string"}},"required":["days","floor"]},"rawWindowHintDays":{"anyOf":[{"type":"number"},{"type":"null"}]},"freshness":{"anyOf":[{"type":"object","properties":{"maxIngestedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"lagSeconds":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Now minus maxIngestedAt, at response time"},"asOf":{"type":"string","description":"When maxIngestedAt was read (cached up to 10 minutes)"}},"required":["maxIngestedAt","lagSeconds","asOf"]},{"type":"null"}]},"notes":{"type":"array","items":{"type":"string"}},"examples":{"type":"array","items":{"type":"object","properties":{"question":{"type":"string"},"metricsQuery":{"anyOf":[{"type":"object","properties":{"window":{"anyOf":[{"type":"object","properties":{"preset":{"type":"string","enum":["1h","24h","7d","30d","90d"]}},"required":["preset"],"additionalProperties":false},{"type":"object","properties":{"from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"to":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["from","to"],"additionalProperties":false}],"description":"Half-open UTC window [from, to), to <= now; the start is clamped to the plan's retention."},"measures":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"string","enum":["events","tool_calls","errors","error_rate","transport_errors","tool_result_errors","tool_outcome_events","tool_result_error_rate","neutral_events","success_events","avg_duration_ms","min_duration_ms","max_duration_ms","p50_duration_ms","p90_duration_ms","p95_duration_ms","p99_duration_ms","sessions","actors","verified_actors","approximate_actors","output_tokens","token_events","avg_request_bytes","avg_response_bytes","sessions_with_tool","active_interactions_5m","first_seen","last_seen"],"description":"Measure. ≈ = approximate (sketch). events (count): Events (requests); tool_calls (count): tools/call events; errors (count): Error events: transport errors plus failed tool results; error_rate (ratio): errors / events (0..1); transport_errors (count): HTTP/transport errors, excluding neutral lifecycle signals; tool_result_errors (count): tools/call results with isError; tool_outcome_events (count): Events with a known tool outcome (tool_call_success not NULL); tool_result_error_rate (ratio): tool_result_errors / tool_outcome_events (0..1); neutral_events (count): Expected capability signals (optional SSE 405, protocol probe); success_events (count): Successful events; avg_duration_ms (ms): Mean duration_ms over events with a duration; min_duration_ms (ms): Minimum duration_ms; max_duration_ms (ms): Maximum duration_ms; p50_duration_ms (ms, ≈): p50 of duration_ms (t-digest); p90_duration_ms (ms, ≈): p90 of duration_ms (t-digest); p95_duration_ms (ms, ≈): p95 of duration_ms (t-digest); p99_duration_ms (ms, ≈): p99 of duration_ms (t-digest); sessions (count, ≈): Distinct sessions (interaction_id); actors (count, ≈): Distinct actors; verified_actors (count, ≈): Distinct actors identified by conversation, token or account; approximate_actors (count, ≈): Distinct IP-derived actors; output_tokens (tokens): Sum of estimated output tokens; token_events (count): Events with an output token estimate; avg_request_bytes (bytes): Mean request body bytes; avg_response_bytes (bytes): Mean response body bytes; sessions_with_tool (count): Distinct sessions with at least one matching tools/call (exact, tool index); active_interactions_5m (count): Distinct sessions with an event in the last 5 minutes (exact, raw); first_seen (timestamp): First event time; last_seen (timestamp): Last event time"}},"dimensions":{"maxItems":4,"type":"array","items":{"type":"string","enum":["mcp_method","method_family","resource","health_resource","resource_name","resource_type","tool","client_name","client_version","protocol_version","country","subdomain","http_method","status","status_code","error_code","transport_error_kind","transport_mode","auth_method","actor_source","actor_trust","traffic_class","actor_id","interaction_id","error_reason","deployment_id"],"description":"Dimension. mcp_method: JSON-RPC method (tools/call, tools/list, initialize, ...); method_family: First path segment of the method (tools, resources, prompts, initialize, ...); resource: Breakdown key: resource_name, else resource_type, else the method (tool-breakdown card); health_resource: Health key: resource_name, else the method (health card); resource_name: Tool, prompt or resource name the method targets (resources/* URIs: credentials redacted); resource_type: tool, prompt or resource; tool: Tool name of tools/call events (NULL for other methods); client_name: MCP client display name from initialize ('Unknown Client' when missing); client_version: MCP client version ('unknown' when missing); protocol_version: Negotiated MCP protocol version ('unknown' when missing); country: Caller country, ISO 3166-1 alpha-2 ('Unknown' when missing); subdomain: Gateway subdomain: the server slug for production, <slug>--br-<branch> for previews; http_method: HTTP method; status: success or error; status_code: HTTP status code; error_code: JSON-RPC error code; transport_error_kind: Transport failure class; transport_mode: Transport (streamable-http, sse, ...); auth_method: How the caller authenticated; actor_source: How actor_id was derived (sdk-conversation, auth-token, openai-subject, platform-user, ip-anon); actor_trust: verified (person or conversation), approximate (IP-derived) or none; traffic_class: non_mcp, discovery, allowlisted or other_mcp; actor_id (raw events only): Org-salted actor hash (linkable across servers of one organization); interaction_id (raw events only): Session (interaction) id: one conversation or connection; error_reason (raw events only): Error message with secrets redacted (at most 500 characters); deployment_id (raw events only): Deployment that served the request"}},"granularity":{"description":"Bucket size; omit for totals. auto: the finest of hour/day/week/month with at most 240 buckets. Past 1500 buckets (or minute over 6h) the next coarser size is served (meta.granularity). Weeks start on Monday.","type":"string","enum":["minute","hour","day","week","month","auto"]},"filters":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"dimension":{"type":"string","enum":["mcp_method","method_family","resource","health_resource","resource_name","resource_type","tool","client_name","client_version","protocol_version","country","subdomain","http_method","status","status_code","error_code","transport_error_kind","transport_mode","auth_method","actor_source","actor_trust","traffic_class","actor_id","interaction_id","error_reason","deployment_id"],"description":"Dimension. mcp_method: JSON-RPC method (tools/call, tools/list, initialize, ...); method_family: First path segment of the method (tools, resources, prompts, initialize, ...); resource: Breakdown key: resource_name, else resource_type, else the method (tool-breakdown card); health_resource: Health key: resource_name, else the method (health card); resource_name: Tool, prompt or resource name the method targets (resources/* URIs: credentials redacted); resource_type: tool, prompt or resource; tool: Tool name of tools/call events (NULL for other methods); client_name: MCP client display name from initialize ('Unknown Client' when missing); client_version: MCP client version ('unknown' when missing); protocol_version: Negotiated MCP protocol version ('unknown' when missing); country: Caller country, ISO 3166-1 alpha-2 ('Unknown' when missing); subdomain: Gateway subdomain: the server slug for production, <slug>--br-<branch> for previews; http_method: HTTP method; status: success or error; status_code: HTTP status code; error_code: JSON-RPC error code; transport_error_kind: Transport failure class; transport_mode: Transport (streamable-http, sse, ...); auth_method: How the caller authenticated; actor_source: How actor_id was derived (sdk-conversation, auth-token, openai-subject, platform-user, ip-anon); actor_trust: verified (person or conversation), approximate (IP-derived) or none; traffic_class: non_mcp, discovery, allowlisted or other_mcp; actor_id (raw events only): Org-salted actor hash (linkable across servers of one organization); interaction_id (raw events only): Session (interaction) id: one conversation or connection; error_reason (raw events only): Error message with secrets redacted (at most 500 characters); deployment_id (raw events only): Deployment that served the request"},"op":{"type":"string","enum":["eq","neq","in","not_in","like"]},"values":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","maxLength":512}}},"required":["dimension","op","values"],"additionalProperties":false}},"segments":{"maxItems":4,"type":"array","items":{"type":"string","enum":["mcp_traffic","method_allowlist","non_discovery","all"],"description":"Traffic segment (ANDed; default mcp_traffic). mcp_traffic: Parsed MCP requests (the default): excludes non-MCP HTTP and 'unknown'; method_allowlist: tools/*, resources/*, prompts/*, notifications/*, logging/*, sampling/*, completion/*, elicitation/* and initialize; non_discovery: method_allowlist without discovery (*/list) and subscription bookkeeping; all: Every event, including non-MCP HTTP (the timeline card)"}},"includeInternal":{"description":"Include Manufact's own clients (default false; forced by an eq/in client_name filter).","type":"boolean"},"sessionTools":{"description":"Sessions using these tools","minItems":1,"maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":512}},"branch":{"description":"Preview branch; omit for all environments.","type":"string","minLength":1,"maxLength":255},"compare":{"type":"string","const":"previous_period"},"topN":{"type":"object","properties":{"dimension":{"type":"string","enum":["mcp_method","method_family","resource","health_resource","resource_name","resource_type","tool","client_name","client_version","protocol_version","country","subdomain","http_method","status","status_code","error_code","transport_error_kind","transport_mode","auth_method","actor_source","actor_trust","traffic_class","actor_id","interaction_id","error_reason","deployment_id"],"description":"Dimension. mcp_method: JSON-RPC method (tools/call, tools/list, initialize, ...); method_family: First path segment of the method (tools, resources, prompts, initialize, ...); resource: Breakdown key: resource_name, else resource_type, else the method (tool-breakdown card); health_resource: Health key: resource_name, else the method (health card); resource_name: Tool, prompt or resource name the method targets (resources/* URIs: credentials redacted); resource_type: tool, prompt or resource; tool: Tool name of tools/call events (NULL for other methods); client_name: MCP client display name from initialize ('Unknown Client' when missing); client_version: MCP client version ('unknown' when missing); protocol_version: Negotiated MCP protocol version ('unknown' when missing); country: Caller country, ISO 3166-1 alpha-2 ('Unknown' when missing); subdomain: Gateway subdomain: the server slug for production, <slug>--br-<branch> for previews; http_method: HTTP method; status: success or error; status_code: HTTP status code; error_code: JSON-RPC error code; transport_error_kind: Transport failure class; transport_mode: Transport (streamable-http, sse, ...); auth_method: How the caller authenticated; actor_source: How actor_id was derived (sdk-conversation, auth-token, openai-subject, platform-user, ip-anon); actor_trust: verified (person or conversation), approximate (IP-derived) or none; traffic_class: non_mcp, discovery, allowlisted or other_mcp; actor_id (raw events only): Org-salted actor hash (linkable across servers of one organization); interaction_id (raw events only): Session (interaction) id: one conversation or connection; error_reason (raw events only): Error message with secrets redacted (at most 500 characters); deployment_id (raw events only): Deployment that served the request"},"n":{"type":"integer","minimum":1,"maximum":50},"otherLabel":{"type":"string","maxLength":64}},"required":["dimension","n"],"additionalProperties":false},"orderBy":{"maxItems":4,"type":"array","items":{"type":"object","properties":{"field":{"type":"string","maxLength":64},"dir":{"type":"string","enum":["asc","desc"]}},"required":["field","dir"],"additionalProperties":false}},"limit":{"type":"integer","minimum":1,"maximum":1000},"zeroFill":{"type":"boolean"},"accuracy":{"description":"exact: raw events, within the raw budget","type":"string","enum":["auto","exact"]}},"required":["window","measures"],"additionalProperties":false,"description":"Typed analytics query, routed to the narrowest insert-time rollup; meta.sql runs as-is on /analytics/sql."},{"type":"null"}]},"sql":{"type":"string"}},"required":["question","metricsQuery","sql"]}}},"required":["catalogVersion","dialect","relations","measures","dimensions","segments","branches","limits","retention","rawWindowHintDays","freshness","notes","examples"]}}}},"400":{"description":"ANALYTICS_QUERY_INVALID / ANALYTICS_SQL_REJECTED / VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"408":{"description":"ANALYTICS_QUERY_TIMEOUT: timed out or cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"413":{"description":"ANALYTICS_RESULT_TOO_LARGE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"422":{"description":"ANALYTICS_QUERY_BUDGET (see details) / ANALYTICS_TIME_RANGE_UNAVAILABLE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"429":{"description":"ANALYTICS_QUERY_RATE_LIMIT (honour Retry-After)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"503":{"description":"ANALYTICS_UNAVAILABLE (retry once)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}}},"tags":["Servers"],"description":"Analytics catalog for this server: relations and columns, measures (with approximation bounds and SQL per relation), dimensions, segments, limits, plan retention and worked examples. Requires server:read.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"branch","schema":{"type":"string","minLength":1,"maxLength":255}}]}},"/api/v1/servers/{id}/analytics/metrics":{"post":{"operationId":"postApiV1ServersByIdAnalyticsMetrics","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"role":{"type":"string","enum":["bucket","dimension","measure"]},"exact":{"type":"boolean","description":"false for approximate measures (≈)"},"unit":{"type":"string","enum":["count","ratio","ms","tokens","bytes","timestamp"]}},"required":["name","type","role","exact"]}},"rows":{"type":"array","items":{"type":"array","items":{}},"description":"JSONCompact rows; 64-bit integers are strings."},"compare":{"type":"object","properties":{"rows":{"type":"array","items":{"type":"array","items":{}},"description":"JSONCompact rows; 64-bit integers are strings."}},"required":["rows"]},"truncated":{"type":"boolean"},"meta":{"type":"object","properties":{"queryId":{"type":"string"},"catalogVersion":{"type":"string"},"source":{"type":"string","description":"Relation(s) read, e.g. metrics_daily+metrics_hourly"},"effectiveWindow":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"alignment":{"type":"string","enum":["minute","hour","day","raw"]}},"required":["from","to","alignment"]},"granularity":{"type":"object","properties":{"requested":{"type":"string","enum":["minute","hour","day","week","month","auto"]},"effective":{"type":"string","enum":["minute","hour","day","week","month"]}},"required":["requested","effective"]},"timing":{"type":"object","properties":{"asOf":{"type":"string"},"window":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"]},"granularity":{"type":"string","enum":["minute","hour","day","week","month"]},"comparison":{"anyOf":[{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"complete":{"type":"boolean"}},"required":["from","to","complete"]},{"type":"null"}]}},"required":["asOf","window","comparison"]},"retentionDays":{"anyOf":[{"type":"number"},{"type":"string","const":"unlimited"}]},"clamped":{"type":"boolean"},"approximate":{"type":"array","items":{"type":"string","enum":["events","tool_calls","errors","error_rate","transport_errors","tool_result_errors","tool_outcome_events","tool_result_error_rate","neutral_events","success_events","avg_duration_ms","min_duration_ms","max_duration_ms","p50_duration_ms","p90_duration_ms","p95_duration_ms","p99_duration_ms","sessions","actors","verified_actors","approximate_actors","output_tokens","token_events","avg_request_bytes","avg_response_bytes","sessions_with_tool","active_interactions_5m","first_seen","last_seen"],"description":"Measure. ≈ = approximate (sketch). events (count): Events (requests); tool_calls (count): tools/call events; errors (count): Error events: transport errors plus failed tool results; error_rate (ratio): errors / events (0..1); transport_errors (count): HTTP/transport errors, excluding neutral lifecycle signals; tool_result_errors (count): tools/call results with isError; tool_outcome_events (count): Events with a known tool outcome (tool_call_success not NULL); tool_result_error_rate (ratio): tool_result_errors / tool_outcome_events (0..1); neutral_events (count): Expected capability signals (optional SSE 405, protocol probe); success_events (count): Successful events; avg_duration_ms (ms): Mean duration_ms over events with a duration; min_duration_ms (ms): Minimum duration_ms; max_duration_ms (ms): Maximum duration_ms; p50_duration_ms (ms, ≈): p50 of duration_ms (t-digest); p90_duration_ms (ms, ≈): p90 of duration_ms (t-digest); p95_duration_ms (ms, ≈): p95 of duration_ms (t-digest); p99_duration_ms (ms, ≈): p99 of duration_ms (t-digest); sessions (count, ≈): Distinct sessions (interaction_id); actors (count, ≈): Distinct actors; verified_actors (count, ≈): Distinct actors identified by conversation, token or account; approximate_actors (count, ≈): Distinct IP-derived actors; output_tokens (tokens): Sum of estimated output tokens; token_events (count): Events with an output token estimate; avg_request_bytes (bytes): Mean request body bytes; avg_response_bytes (bytes): Mean response body bytes; sessions_with_tool (count): Distinct sessions with at least one matching tools/call (exact, tool index); active_interactions_5m (count): Distinct sessions with an event in the last 5 minutes (exact, raw); first_seen (timestamp): First event time; last_seen (timestamp): Last event time"}},"statistics":{"type":"object","properties":{"elapsedMs":{"type":"number"},"rowsRead":{"type":"number"},"bytesRead":{"type":"number"}},"required":["elapsedMs","rowsRead","bytesRead"]},"freshness":{"anyOf":[{"type":"object","properties":{"maxIngestedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"lagSeconds":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Now minus maxIngestedAt, at response time"},"asOf":{"type":"string","description":"When maxIngestedAt was read (cached up to 10 minutes)"}},"required":["maxIngestedAt","lagSeconds","asOf"]},{"type":"null"}]},"sql":{"type":"string","description":"Equivalent SQL over the views; runs as-is on /analytics/sql"},"semantics":{"type":"string","const":"tool_events"}},"required":["queryId","catalogVersion","source","effectiveWindow","retentionDays","clamped","approximate","statistics","freshness","sql"]}},"required":["columns","rows","truncated","meta"]}}}},"400":{"description":"ANALYTICS_QUERY_INVALID / ANALYTICS_SQL_REJECTED / VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"408":{"description":"ANALYTICS_QUERY_TIMEOUT: timed out or cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"413":{"description":"ANALYTICS_RESULT_TOO_LARGE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"422":{"description":"ANALYTICS_QUERY_BUDGET (see details) / ANALYTICS_TIME_RANGE_UNAVAILABLE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"429":{"description":"ANALYTICS_QUERY_RATE_LIMIT (honour Retry-After)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"503":{"description":"ANALYTICS_UNAVAILABLE (retry once)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}}},"tags":["Servers"],"description":"Typed analytics query (measures x dimensions x filters x granularity), served from the narrowest insert-time rollup. Sessions, actors and percentiles are approximate (meta.approximate). meta.sql is the equivalent SQL. Requires server:read.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"window":{"anyOf":[{"type":"object","properties":{"preset":{"type":"string","enum":["1h","24h","7d","30d","90d"]}},"required":["preset"],"additionalProperties":false},{"type":"object","properties":{"from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"to":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["from","to"],"additionalProperties":false}],"description":"Half-open UTC window [from, to), to <= now; the start is clamped to the plan's retention."},"measures":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"string","enum":["events","tool_calls","errors","error_rate","transport_errors","tool_result_errors","tool_outcome_events","tool_result_error_rate","neutral_events","success_events","avg_duration_ms","min_duration_ms","max_duration_ms","p50_duration_ms","p90_duration_ms","p95_duration_ms","p99_duration_ms","sessions","actors","verified_actors","approximate_actors","output_tokens","token_events","avg_request_bytes","avg_response_bytes","sessions_with_tool","active_interactions_5m","first_seen","last_seen"],"description":"Measure. ≈ = approximate (sketch). events (count): Events (requests); tool_calls (count): tools/call events; errors (count): Error events: transport errors plus failed tool results; error_rate (ratio): errors / events (0..1); transport_errors (count): HTTP/transport errors, excluding neutral lifecycle signals; tool_result_errors (count): tools/call results with isError; tool_outcome_events (count): Events with a known tool outcome (tool_call_success not NULL); tool_result_error_rate (ratio): tool_result_errors / tool_outcome_events (0..1); neutral_events (count): Expected capability signals (optional SSE 405, protocol probe); success_events (count): Successful events; avg_duration_ms (ms): Mean duration_ms over events with a duration; min_duration_ms (ms): Minimum duration_ms; max_duration_ms (ms): Maximum duration_ms; p50_duration_ms (ms, ≈): p50 of duration_ms (t-digest); p90_duration_ms (ms, ≈): p90 of duration_ms (t-digest); p95_duration_ms (ms, ≈): p95 of duration_ms (t-digest); p99_duration_ms (ms, ≈): p99 of duration_ms (t-digest); sessions (count, ≈): Distinct sessions (interaction_id); actors (count, ≈): Distinct actors; verified_actors (count, ≈): Distinct actors identified by conversation, token or account; approximate_actors (count, ≈): Distinct IP-derived actors; output_tokens (tokens): Sum of estimated output tokens; token_events (count): Events with an output token estimate; avg_request_bytes (bytes): Mean request body bytes; avg_response_bytes (bytes): Mean response body bytes; sessions_with_tool (count): Distinct sessions with at least one matching tools/call (exact, tool index); active_interactions_5m (count): Distinct sessions with an event in the last 5 minutes (exact, raw); first_seen (timestamp): First event time; last_seen (timestamp): Last event time"}},"dimensions":{"maxItems":4,"type":"array","items":{"type":"string","enum":["mcp_method","method_family","resource","health_resource","resource_name","resource_type","tool","client_name","client_version","protocol_version","country","subdomain","http_method","status","status_code","error_code","transport_error_kind","transport_mode","auth_method","actor_source","actor_trust","traffic_class","actor_id","interaction_id","error_reason","deployment_id"],"description":"Dimension. mcp_method: JSON-RPC method (tools/call, tools/list, initialize, ...); method_family: First path segment of the method (tools, resources, prompts, initialize, ...); resource: Breakdown key: resource_name, else resource_type, else the method (tool-breakdown card); health_resource: Health key: resource_name, else the method (health card); resource_name: Tool, prompt or resource name the method targets (resources/* URIs: credentials redacted); resource_type: tool, prompt or resource; tool: Tool name of tools/call events (NULL for other methods); client_name: MCP client display name from initialize ('Unknown Client' when missing); client_version: MCP client version ('unknown' when missing); protocol_version: Negotiated MCP protocol version ('unknown' when missing); country: Caller country, ISO 3166-1 alpha-2 ('Unknown' when missing); subdomain: Gateway subdomain: the server slug for production, <slug>--br-<branch> for previews; http_method: HTTP method; status: success or error; status_code: HTTP status code; error_code: JSON-RPC error code; transport_error_kind: Transport failure class; transport_mode: Transport (streamable-http, sse, ...); auth_method: How the caller authenticated; actor_source: How actor_id was derived (sdk-conversation, auth-token, openai-subject, platform-user, ip-anon); actor_trust: verified (person or conversation), approximate (IP-derived) or none; traffic_class: non_mcp, discovery, allowlisted or other_mcp; actor_id (raw events only): Org-salted actor hash (linkable across servers of one organization); interaction_id (raw events only): Session (interaction) id: one conversation or connection; error_reason (raw events only): Error message with secrets redacted (at most 500 characters); deployment_id (raw events only): Deployment that served the request"}},"granularity":{"description":"Bucket size; omit for totals. auto: the finest of hour/day/week/month with at most 240 buckets. Past 1500 buckets (or minute over 6h) the next coarser size is served (meta.granularity). Weeks start on Monday.","type":"string","enum":["minute","hour","day","week","month","auto"]},"filters":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"dimension":{"type":"string","enum":["mcp_method","method_family","resource","health_resource","resource_name","resource_type","tool","client_name","client_version","protocol_version","country","subdomain","http_method","status","status_code","error_code","transport_error_kind","transport_mode","auth_method","actor_source","actor_trust","traffic_class","actor_id","interaction_id","error_reason","deployment_id"],"description":"Dimension. mcp_method: JSON-RPC method (tools/call, tools/list, initialize, ...); method_family: First path segment of the method (tools, resources, prompts, initialize, ...); resource: Breakdown key: resource_name, else resource_type, else the method (tool-breakdown card); health_resource: Health key: resource_name, else the method (health card); resource_name: Tool, prompt or resource name the method targets (resources/* URIs: credentials redacted); resource_type: tool, prompt or resource; tool: Tool name of tools/call events (NULL for other methods); client_name: MCP client display name from initialize ('Unknown Client' when missing); client_version: MCP client version ('unknown' when missing); protocol_version: Negotiated MCP protocol version ('unknown' when missing); country: Caller country, ISO 3166-1 alpha-2 ('Unknown' when missing); subdomain: Gateway subdomain: the server slug for production, <slug>--br-<branch> for previews; http_method: HTTP method; status: success or error; status_code: HTTP status code; error_code: JSON-RPC error code; transport_error_kind: Transport failure class; transport_mode: Transport (streamable-http, sse, ...); auth_method: How the caller authenticated; actor_source: How actor_id was derived (sdk-conversation, auth-token, openai-subject, platform-user, ip-anon); actor_trust: verified (person or conversation), approximate (IP-derived) or none; traffic_class: non_mcp, discovery, allowlisted or other_mcp; actor_id (raw events only): Org-salted actor hash (linkable across servers of one organization); interaction_id (raw events only): Session (interaction) id: one conversation or connection; error_reason (raw events only): Error message with secrets redacted (at most 500 characters); deployment_id (raw events only): Deployment that served the request"},"op":{"type":"string","enum":["eq","neq","in","not_in","like"]},"values":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","maxLength":512}}},"required":["dimension","op","values"],"additionalProperties":false}},"segments":{"maxItems":4,"type":"array","items":{"type":"string","enum":["mcp_traffic","method_allowlist","non_discovery","all"],"description":"Traffic segment (ANDed; default mcp_traffic). mcp_traffic: Parsed MCP requests (the default): excludes non-MCP HTTP and 'unknown'; method_allowlist: tools/*, resources/*, prompts/*, notifications/*, logging/*, sampling/*, completion/*, elicitation/* and initialize; non_discovery: method_allowlist without discovery (*/list) and subscription bookkeeping; all: Every event, including non-MCP HTTP (the timeline card)"}},"includeInternal":{"description":"Include Manufact's own clients (default false; forced by an eq/in client_name filter).","type":"boolean"},"sessionTools":{"description":"Sessions using these tools","minItems":1,"maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":512}},"branch":{"description":"Preview branch; omit for all environments.","type":"string","minLength":1,"maxLength":255},"compare":{"type":"string","const":"previous_period"},"topN":{"type":"object","properties":{"dimension":{"type":"string","enum":["mcp_method","method_family","resource","health_resource","resource_name","resource_type","tool","client_name","client_version","protocol_version","country","subdomain","http_method","status","status_code","error_code","transport_error_kind","transport_mode","auth_method","actor_source","actor_trust","traffic_class","actor_id","interaction_id","error_reason","deployment_id"],"description":"Dimension. mcp_method: JSON-RPC method (tools/call, tools/list, initialize, ...); method_family: First path segment of the method (tools, resources, prompts, initialize, ...); resource: Breakdown key: resource_name, else resource_type, else the method (tool-breakdown card); health_resource: Health key: resource_name, else the method (health card); resource_name: Tool, prompt or resource name the method targets (resources/* URIs: credentials redacted); resource_type: tool, prompt or resource; tool: Tool name of tools/call events (NULL for other methods); client_name: MCP client display name from initialize ('Unknown Client' when missing); client_version: MCP client version ('unknown' when missing); protocol_version: Negotiated MCP protocol version ('unknown' when missing); country: Caller country, ISO 3166-1 alpha-2 ('Unknown' when missing); subdomain: Gateway subdomain: the server slug for production, <slug>--br-<branch> for previews; http_method: HTTP method; status: success or error; status_code: HTTP status code; error_code: JSON-RPC error code; transport_error_kind: Transport failure class; transport_mode: Transport (streamable-http, sse, ...); auth_method: How the caller authenticated; actor_source: How actor_id was derived (sdk-conversation, auth-token, openai-subject, platform-user, ip-anon); actor_trust: verified (person or conversation), approximate (IP-derived) or none; traffic_class: non_mcp, discovery, allowlisted or other_mcp; actor_id (raw events only): Org-salted actor hash (linkable across servers of one organization); interaction_id (raw events only): Session (interaction) id: one conversation or connection; error_reason (raw events only): Error message with secrets redacted (at most 500 characters); deployment_id (raw events only): Deployment that served the request"},"n":{"type":"integer","minimum":1,"maximum":50},"otherLabel":{"type":"string","maxLength":64}},"required":["dimension","n"],"additionalProperties":false},"orderBy":{"maxItems":4,"type":"array","items":{"type":"object","properties":{"field":{"type":"string","maxLength":64},"dir":{"type":"string","enum":["asc","desc"]}},"required":["field","dir"],"additionalProperties":false}},"limit":{"type":"integer","minimum":1,"maximum":1000},"zeroFill":{"type":"boolean"},"accuracy":{"description":"exact: raw events, within the raw budget","type":"string","enum":["auto","exact"]}},"required":["window","measures"],"additionalProperties":false,"description":"Typed analytics query, routed to the narrowest insert-time rollup; meta.sql runs as-is on /analytics/sql."}}}}}},"/api/v1/servers/{id}/analytics/sql":{"post":{"operationId":"postApiV1ServersByIdAnalyticsSql","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"queryId":{"type":"string"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"}},"required":["name","type"]}},"rows":{"type":"array","items":{"type":"array","items":{}},"description":"JSONCompact rows; 64-bit integers are strings."},"truncated":{"type":"boolean"},"statistics":{"type":"object","properties":{"elapsedMs":{"type":"number"},"rowsRead":{"type":"number"},"bytesRead":{"type":"number"}},"required":["elapsedMs","rowsRead","bytesRead"]},"meta":{"type":"object","properties":{"catalogVersion":{"type":"string"},"retentionFloor":{"type":"string"},"admissionClass":{"type":"string","enum":["light","heavy"]},"rawWindowHintDays":{"anyOf":[{"type":"number"},{"type":"null"}]},"freshness":{"anyOf":[{"type":"object","properties":{"maxIngestedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"lagSeconds":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Now minus maxIngestedAt, at response time"},"asOf":{"type":"string","description":"When maxIngestedAt was read (cached up to 10 minutes)"}},"required":["maxIngestedAt","lagSeconds","asOf"]},{"type":"null"}]}},"required":["catalogVersion","retentionFloor","admissionClass","rawWindowHintDays","freshness"]}},"required":["queryId","columns","rows","truncated","statistics","meta"]}}}},"400":{"description":"ANALYTICS_QUERY_INVALID / ANALYTICS_SQL_REJECTED / VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"408":{"description":"ANALYTICS_QUERY_TIMEOUT: timed out or cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"413":{"description":"ANALYTICS_RESULT_TOO_LARGE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"422":{"description":"ANALYTICS_QUERY_BUDGET (see details) / ANALYTICS_TIME_RANGE_UNAVAILABLE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"429":{"description":"ANALYTICS_QUERY_RATE_LIMIT (honour Retry-After)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"503":{"description":"ANALYTICS_UNAVAILABLE (retry once)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}}},"tags":["Servers"],"description":"Read-only ClickHouse SQL over this server's analytics relations (see the catalog). One SELECT per request; tenancy and plan retention are enforced inside ClickHouse. At most 2 SQL requests run at once per organization: a third waits up to 2.5 s, then answers 429 with details. Requires server:read.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sql":{"type":"string","minLength":1,"maxLength":16384,"description":"One ClickHouse SELECT (or UNION) over the analytics relations: events: Raw gateway events, one row per request. Drill-down only: each query may read at most 20M rows (about one day of the busiest server). Use the rollups for aggregates. metrics_hourly: Hourly cube of every event ingredient (100 days). Additive columns are sums: use sum(events), never count(). Sketch columns need their -Merge function. metrics_daily: Daily cube of every event ingredient (400 days), same columns as metrics_hourly. sessions_daily: Narrow daily rollup for headline sessions and actors by client, country and branch. Segments map to traffic_class. sessions_hourly: Narrow hourly rollup for headline sessions and actors by client and branch (100 days, no country). Prefer it to metrics_hourly for windows up to 2 days. clients_daily: Narrow daily rollup for headline sessions, actors and latency by client, client and protocol version and branch (no country). The narrowest daily relation for headline numbers. tool_health_daily: Narrow daily rollup for per-tool and per-client health and tokens: error classes, latency digests and output tokens by method, resource and client. tool_interactions: Exact tool index: one row per (server, tool, hour, interaction). Answers 'sessions that used tool X' exactly at any window: uniqExact(interaction_id). actors_hourly: Account or token actor activity on tools/call events, by client, tool and branch. Full-period user rankings use sums and merged session sketches. actors_daily: Account or token actor activity on tools/call events, by client, tool and branch. Full-period user rankings use sums and merged session sketches."},"timeRange":{"description":"Default 7d; bound as {from} and {to}.","anyOf":[{"type":"object","properties":{"preset":{"type":"string","enum":["1h","24h","7d","30d","90d"]}},"required":["preset"],"additionalProperties":false},{"type":"object","properties":{"from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"to":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["from","to"],"additionalProperties":false}]},"branch":{"type":"string","minLength":1,"maxLength":255},"includeInternal":{"type":"boolean"},"maxRows":{"type":"integer","minimum":1,"maximum":500}},"required":["sql"],"additionalProperties":false,"description":"Model-written ClickHouse SQL, scoped inside ClickHouse (signed row policy on curated views); SETTINGS, table functions and non-catalog tables are rejected."}}}}}},"/api/v1/servers/{id}/analytics/batch":{"post":{"operationId":"postApiV1ServersByIdAnalyticsBatch","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"ok":{"type":"boolean","const":true},"result":{"anyOf":[{"type":"object","properties":{"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"role":{"type":"string","enum":["bucket","dimension","measure"]},"exact":{"type":"boolean","description":"false for approximate measures (≈)"},"unit":{"type":"string","enum":["count","ratio","ms","tokens","bytes","timestamp"]}},"required":["name","type","role","exact"]}},"rows":{"type":"array","items":{"type":"array","items":{}},"description":"JSONCompact rows; 64-bit integers are strings."},"compare":{"type":"object","properties":{"rows":{"type":"array","items":{"type":"array","items":{}},"description":"JSONCompact rows; 64-bit integers are strings."}},"required":["rows"]},"truncated":{"type":"boolean"},"meta":{"type":"object","properties":{"queryId":{"type":"string"},"catalogVersion":{"type":"string"},"source":{"type":"string","description":"Relation(s) read, e.g. metrics_daily+metrics_hourly"},"effectiveWindow":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"alignment":{"type":"string","enum":["minute","hour","day","raw"]}},"required":["from","to","alignment"]},"granularity":{"type":"object","properties":{"requested":{"type":"string","enum":["minute","hour","day","week","month","auto"]},"effective":{"type":"string","enum":["minute","hour","day","week","month"]}},"required":["requested","effective"]},"timing":{"type":"object","properties":{"asOf":{"type":"string"},"window":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"]},"granularity":{"type":"string","enum":["minute","hour","day","week","month"]},"comparison":{"anyOf":[{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"complete":{"type":"boolean"}},"required":["from","to","complete"]},{"type":"null"}]}},"required":["asOf","window","comparison"]},"retentionDays":{"anyOf":[{"type":"number"},{"type":"string","const":"unlimited"}]},"clamped":{"type":"boolean"},"approximate":{"type":"array","items":{"type":"string","enum":["events","tool_calls","errors","error_rate","transport_errors","tool_result_errors","tool_outcome_events","tool_result_error_rate","neutral_events","success_events","avg_duration_ms","min_duration_ms","max_duration_ms","p50_duration_ms","p90_duration_ms","p95_duration_ms","p99_duration_ms","sessions","actors","verified_actors","approximate_actors","output_tokens","token_events","avg_request_bytes","avg_response_bytes","sessions_with_tool","active_interactions_5m","first_seen","last_seen"],"description":"Measure. ≈ = approximate (sketch). events (count): Events (requests); tool_calls (count): tools/call events; errors (count): Error events: transport errors plus failed tool results; error_rate (ratio): errors / events (0..1); transport_errors (count): HTTP/transport errors, excluding neutral lifecycle signals; tool_result_errors (count): tools/call results with isError; tool_outcome_events (count): Events with a known tool outcome (tool_call_success not NULL); tool_result_error_rate (ratio): tool_result_errors / tool_outcome_events (0..1); neutral_events (count): Expected capability signals (optional SSE 405, protocol probe); success_events (count): Successful events; avg_duration_ms (ms): Mean duration_ms over events with a duration; min_duration_ms (ms): Minimum duration_ms; max_duration_ms (ms): Maximum duration_ms; p50_duration_ms (ms, ≈): p50 of duration_ms (t-digest); p90_duration_ms (ms, ≈): p90 of duration_ms (t-digest); p95_duration_ms (ms, ≈): p95 of duration_ms (t-digest); p99_duration_ms (ms, ≈): p99 of duration_ms (t-digest); sessions (count, ≈): Distinct sessions (interaction_id); actors (count, ≈): Distinct actors; verified_actors (count, ≈): Distinct actors identified by conversation, token or account; approximate_actors (count, ≈): Distinct IP-derived actors; output_tokens (tokens): Sum of estimated output tokens; token_events (count): Events with an output token estimate; avg_request_bytes (bytes): Mean request body bytes; avg_response_bytes (bytes): Mean response body bytes; sessions_with_tool (count): Distinct sessions with at least one matching tools/call (exact, tool index); active_interactions_5m (count): Distinct sessions with an event in the last 5 minutes (exact, raw); first_seen (timestamp): First event time; last_seen (timestamp): Last event time"}},"statistics":{"type":"object","properties":{"elapsedMs":{"type":"number"},"rowsRead":{"type":"number"},"bytesRead":{"type":"number"}},"required":["elapsedMs","rowsRead","bytesRead"]},"freshness":{"anyOf":[{"type":"object","properties":{"maxIngestedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"lagSeconds":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Now minus maxIngestedAt, at response time"},"asOf":{"type":"string","description":"When maxIngestedAt was read (cached up to 10 minutes)"}},"required":["maxIngestedAt","lagSeconds","asOf"]},{"type":"null"}]},"sql":{"type":"string","description":"Equivalent SQL over the views; runs as-is on /analytics/sql"},"semantics":{"type":"string","const":"tool_events"}},"required":["queryId","catalogVersion","source","effectiveWindow","retentionDays","clamped","approximate","statistics","freshness","sql"]}},"required":["columns","rows","truncated","meta"]},{"type":"object","properties":{"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"}},"required":["name","type"]}},"rows":{"type":"array","items":{"type":"array","items":{}},"description":"JSONCompact rows; 64-bit integers are strings."},"truncated":{"type":"boolean"},"meta":{"type":"object","properties":{"queryId":{"type":"string"},"statistics":{"type":"object","properties":{"elapsedMs":{"type":"number"},"rowsRead":{"type":"number"},"bytesRead":{"type":"number"}},"required":["elapsedMs","rowsRead","bytesRead"]},"effectiveWindow":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"]},"partial":{"description":"The read stopped early: the newest rows within the row cap, or a narrowed window.","type":"object","properties":{"reason":{"type":"string","enum":["row_cap","raw_budget"]},"requestedFrom":{"type":"string"}},"required":["reason"]}},"required":["queryId","statistics"]}},"required":["columns","rows","truncated","meta"]}]}},"required":["id","ok","result"]},{"oneOf":[{"type":"object","properties":{"id":{"type":"string"},"ok":{"type":"boolean","const":true},"card":{"type":"string","const":"summary"},"data":{"type":"object","properties":{"current":{"type":"object","properties":{"totals":{"type":"object","properties":{"toolCalls":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"verifiedActors":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"approximateActors":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errorRate":{"anyOf":[{"type":"number"},{"type":"null"}]},"avgLatencyMs":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["toolCalls","sessions","errorRate","avgLatencyMs"]},"buckets":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string"},"toolCalls":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errorEvents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"totalEvents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"avgDurationMs":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["bucket","toolCalls","sessions","errorEvents","totalEvents","avgDurationMs"]}},"timing":{"type":"object","properties":{"asOf":{"type":"string"},"window":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"]},"granularity":{"type":"string","enum":["minute","hour","day","week","month"]},"comparison":{"anyOf":[{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"complete":{"type":"boolean"}},"required":["from","to","complete"]},{"type":"null"}]}},"required":["asOf","window","comparison"]},"seriesTiming":{"type":"object","properties":{"asOf":{"type":"string"},"window":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"]},"granularity":{"type":"string","enum":["minute","hour","day","week","month"]},"comparison":{"anyOf":[{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"complete":{"type":"boolean"}},"required":["from","to","complete"]},{"type":"null"}]}},"required":["asOf","window","comparison"]}},"required":["totals","buckets"]},"previous":{"type":"object","properties":{"totals":{"type":"object","properties":{"toolCalls":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"verifiedActors":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"approximateActors":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errorRate":{"anyOf":[{"type":"number"},{"type":"null"}]},"avgLatencyMs":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["toolCalls","sessions","errorRate","avgLatencyMs"]},"window":{"anyOf":[{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"complete":{"type":"boolean"}},"required":["from","to","complete"]},{"type":"null"}]}},"required":["totals"]}},"required":["current","previous"]}},"required":["id","ok","card","data"]},{"type":"object","properties":{"id":{"type":"string"},"ok":{"type":"boolean","const":true},"card":{"type":"string","const":"countries"},"data":{"type":"array","items":{"type":"object","properties":{"country":{"type":"string"},"requestCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sessionCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"clients":{"type":"array","items":{"type":"object","properties":{"clientName":{"type":"string"},"requestCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["clientName","requestCount"]}}},"required":["country","requestCount","sessionCount","clients"]}}},"required":["id","ok","card","data"]},{"type":"object","properties":{"id":{"type":"string"},"ok":{"type":"boolean","const":true},"card":{"type":"string","const":"clients"},"data":{"type":"object","properties":{"timing":{"type":"object","properties":{"asOf":{"type":"string"},"window":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"]},"granularity":{"type":"string","enum":["minute","hour","day","week","month"]},"comparison":{"anyOf":[{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"complete":{"type":"boolean"}},"required":["from","to","complete"]},{"type":"null"}]}},"required":["asOf","window","comparison"]},"clients":{"type":"array","items":{"type":"object","properties":{"clientName":{"type":"string"},"clientVersion":{"type":"string"},"protocol":{"anyOf":[{"type":"string"},{"type":"null"}]},"sessionCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requestCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["clientName","clientVersion","protocol","sessionCount","requestCount"]}},"timeline":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string"},"clientName":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["bucket","clientName","count"]}}},"required":["clients","timeline"]}},"required":["id","ok","card","data"]},{"type":"object","properties":{"id":{"type":"string"},"ok":{"type":"boolean","const":true},"card":{"type":"string","const":"tools"},"data":{"type":"object","properties":{"timing":{"type":"object","properties":{"asOf":{"type":"string"},"window":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"]},"granularity":{"type":"string","enum":["minute","hour","day","week","month"]},"comparison":{"anyOf":[{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"complete":{"type":"boolean"}},"required":["from","to","complete"]},{"type":"null"}]}},"required":["asOf","window","comparison"]},"breakdown":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string"},"method":{"type":"string"},"resourceName":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sumOutputTokens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tokenEventCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["bucket","method","resourceName","count","sumOutputTokens","tokenEventCount"]}}},"required":["breakdown"]}},"required":["id","ok","card","data"]},{"type":"object","properties":{"id":{"type":"string"},"ok":{"type":"boolean","const":true},"card":{"type":"string","const":"health"},"data":{"type":"object","properties":{"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"windowHours":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"activeNow":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tools":{"type":"array","items":{"type":"object","properties":{"calls":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errorRate":{"type":"number"},"p50":{"anyOf":[{"type":"number"},{"type":"null"}]},"p95":{"anyOf":[{"type":"number"},{"type":"null"}]},"p99":{"anyOf":[{"type":"number"},{"type":"null"}]},"resourceName":{"type":"string"},"toolResultErrorRate":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["calls","errorRate","p50","p95","p99","resourceName","toolResultErrorRate"]}},"clients":{"type":"array","items":{"type":"object","properties":{"calls":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errorRate":{"type":"number"},"p50":{"anyOf":[{"type":"number"},{"type":"null"}]},"p95":{"anyOf":[{"type":"number"},{"type":"null"}]},"p99":{"anyOf":[{"type":"number"},{"type":"null"}]},"clientName":{"type":"string"},"clientVersion":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["calls","errorRate","p50","p95","p99","clientName","clientVersion"]}}},"required":["generatedAt","windowHours","activeNow","tools","clients"]}},"required":["id","ok","card","data"]},{"type":"object","properties":{"id":{"type":"string"},"ok":{"type":"boolean","const":true},"card":{"type":"string","const":"tool_errors"},"data":{"type":"object","properties":{"groups":{"type":"array","items":{"type":"object","properties":{"error":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastSeen":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"sessions":{"type":"array","items":{"type":"object","properties":{"interactionId":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["interactionId","count"]}}},"required":["error","count","lastSeen","sessions"]}},"coveredFrom":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["groups"]}},"required":["id","ok","card","data"]},{"type":"object","properties":{"id":{"type":"string"},"ok":{"type":"boolean","const":true},"card":{"type":"string","const":"timeline"},"data":{"type":"object","properties":{"buckets":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string"},"success":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"neutral":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"error":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["bucket","success","neutral","error"]}}},"required":["buckets"]}},"required":["id","ok","card","data"]},{"type":"object","properties":{"id":{"type":"string"},"ok":{"type":"boolean","const":true},"card":{"type":"string","const":"filter_options"},"data":{"type":"object","properties":{"clients":{"type":"array","items":{"type":"string"}},"countries":{"type":"array","items":{"type":"string"}},"methods":{"type":"array","items":{"type":"string"}},"tools":{"type":"array","items":{"type":"string"}}},"required":["clients","countries","methods","tools"]}},"required":["id","ok","card","data"]},{"type":"object","properties":{"id":{"type":"string"},"ok":{"type":"boolean","const":true},"card":{"type":"string","const":"tool_definitions"},"data":{"type":"object","properties":{"definitions":{"type":"array","items":{"type":"object","properties":{"toolName":{"type":"string"},"definitionTokens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["toolName","definitionTokens"]}},"promptDefinitions":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"definitionTokens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["name","definitionTokens"]}},"resourceDefinitions":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"definitionTokens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["name","definitionTokens"]}}},"required":["definitions","promptDefinitions","resourceDefinitions"]}},"required":["id","ok","card","data"]},{"type":"object","properties":{"id":{"type":"string"},"ok":{"type":"boolean","const":true},"card":{"type":"string","const":"activity"},"data":{"type":"object","properties":{"buckets":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["bucket","count"]}}},"required":["buckets"]}},"required":["id","ok","card","data"]}]},{"type":"object","properties":{"id":{"type":"string"},"ok":{"type":"boolean","const":false},"error":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}},"required":["id","ok","error"]}]}}},"required":["results"]}}}},"400":{"description":"ANALYTICS_QUERY_INVALID / ANALYTICS_SQL_REJECTED / VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"408":{"description":"ANALYTICS_QUERY_TIMEOUT: timed out or cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"413":{"description":"ANALYTICS_RESULT_TOO_LARGE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"422":{"description":"ANALYTICS_QUERY_BUDGET (see details) / ANALYTICS_TIME_RANGE_UNAVAILABLE","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"429":{"description":"ANALYTICS_QUERY_RATE_LIMIT (honour Retry-After)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}},"503":{"description":"ANALYTICS_UNAVAILABLE (retry once)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queryId":{"type":"string"},"hint":{"type":"string"}},"required":["error","code"]}}}}},"tags":["Servers"],"description":"Dashboard named queries and cards (summary, countries, clients, tools, health, tool_errors, timeline, filter_options, tool_definitions, activity), at most 12 items in all, under one authorization and plan lookup. A card item answers {ok:true, card, data} with exactly what its GET card route returns, a query item {ok:true, result}, a failure {ok:false, error}. Requires server:read.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"timeRange":{"anyOf":[{"type":"string","enum":["1h","24h","7d","30d","90d"]},{"type":"object","properties":{"from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"to":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["from","to"],"additionalProperties":false}]},"branch":{"type":"string","minLength":1,"maxLength":255},"includeInternal":{"type":"boolean"},"clients":{"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":512}},"tools":{"maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":512}},"queries":{"default":[],"maxItems":12,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":64},"params":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["id","name"],"additionalProperties":false}},"cards":{"description":"Whole dashboard cards","maxItems":12,"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"card":{"type":"string","const":"summary"},"params":{"type":"object","properties":{"compare":{"default":true,"type":"boolean"}},"additionalProperties":false}},"required":["id","card"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"card":{"type":"string","const":"countries"},"params":{"type":"object","properties":{},"additionalProperties":false}},"required":["id","card"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"card":{"type":"string","const":"clients"},"params":{"type":"object","properties":{"granularity":{"type":"string","enum":["minute","hour","day","week","month","auto"]}},"additionalProperties":false}},"required":["id","card"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"card":{"type":"string","const":"tools"},"params":{"type":"object","properties":{"granularity":{"type":"string","enum":["minute","hour","day","week","month","auto"]}},"additionalProperties":false}},"required":["id","card"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"card":{"type":"string","const":"health"},"params":{"type":"object","properties":{"entity":{"default":"tools","type":"string","enum":["all","tools","resources","prompts","notifications","logging","sampling","completion","elicitation","initialize"]},"activeNow":{"default":true,"type":"boolean"}},"additionalProperties":false}},"required":["id","card"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"card":{"type":"string","const":"tool_errors"},"params":{"type":"object","properties":{"resource":{"type":"string","minLength":1,"maxLength":512}},"required":["resource"],"additionalProperties":false}},"required":["id","card"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"card":{"type":"string","const":"timeline"},"params":{"type":"object","properties":{},"additionalProperties":false}},"required":["id","card"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"card":{"type":"string","const":"filter_options"},"params":{"type":"object","properties":{},"additionalProperties":false}},"required":["id","card"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"card":{"type":"string","const":"tool_definitions"},"params":{"type":"object","properties":{},"additionalProperties":false}},"required":["id","card"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"card":{"type":"string","const":"activity"},"params":{"type":"object","properties":{"granularity":{"type":"string","enum":["minute","hour","day","week","month","auto"]}},"additionalProperties":false}},"required":["id","card"],"additionalProperties":false}]}}},"required":["timeRange"],"additionalProperties":false,"description":"Dashboard named queries and cards under one authorization and plan lookup (at most 12 in total, 8 at once)."}}}}}},"/api/v1/servers/{id}/goals":{"get":{"operationId":"getApiV1ServersByIdGoals","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"goals":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"origin":{"type":"string","enum":["ai","manual"]},"status":{"type":"string","enum":["active","archived"]},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"achieved":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"successRate":{"anyOf":[{"type":"number"},{"type":"null"}]},"provisional":{"type":"boolean"},"sampleCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","description","origin","status","total","achieved","failed","successRate","provisional","sampleCount"]}},"learning":{"type":"boolean"},"qualifyingInteractions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"thresholdInteractions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["goals","learning","qualifyingInteractions","thresholdInteractions"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Goals (intent clusters) for a server with per-goal interaction counts and success rate over the window.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"timeRange","schema":{"default":"30d","type":"string","enum":["24h","7d","30d","90d"]}},{"in":"query","name":"includeInternal","schema":{"type":"boolean"}},{"in":"query","name":"clients","schema":{"type":"string","maxLength":8000},"description":"Comma-separated client names to include; omit for all (non-internal) clients."},{"in":"query","name":"tools","schema":{"type":"string","maxLength":8000},"description":"Comma-separated tool names (resourceName on tools/call) to scope sessions by; omit for all tools."}]},"post":{"operationId":"postApiV1ServersByIdGoals","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"origin":{"type":"string","enum":["ai","manual"]},"status":{"type":"string","enum":["active","archived"]}},"required":["id","serverId","name","description","origin","status"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Create a manual goal for a server.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]}},"required":["name"]}}}}}},"/api/v1/servers/{id}/goals/{goalId}":{"patch":{"operationId":"patchApiV1ServersByIdGoalsByGoalId","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"origin":{"type":"string","enum":["ai","manual"]},"status":{"type":"string","enum":["active","archived"]}},"required":["id","serverId","name","description","origin","status"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Update or archive a goal (name/description/status).","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"goalId","schema":{"type":"string","minLength":1,"maxLength":64},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"status":{"type":"string","enum":["active","archived"]},"origin":{"type":"string","const":"manual"}}}}}}}},"/api/v1/servers/{id}/goals/timeseries":{"get":{"operationId":"getApiV1ServersByIdGoalsTimeseries","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"goals":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"days":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"goalId":{"type":"string"},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"achieved":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["day","goalId","total","achieved","failed"]}}},"required":["goals","days"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Daily goal distribution + success counters over the window.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"timeRange","schema":{"default":"30d","type":"string","enum":["24h","7d","30d","90d"]}},{"in":"query","name":"includeInternal","schema":{"type":"boolean"}},{"in":"query","name":"clients","schema":{"type":"string","maxLength":8000},"description":"Comma-separated client names to include; omit for all (non-internal) clients."},{"in":"query","name":"tools","schema":{"type":"string","maxLength":8000},"description":"Comma-separated tool names (resourceName on tools/call) to scope sessions by; omit for all tools."}]}},"/api/v1/servers/{id}/interactions/{interactionId}/goal":{"put":{"operationId":"putApiV1ServersByIdInteractionsByInteractionIdGoal","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Manually assign an interaction to a goal (or clear it). The manual label outranks the automatic goal labeling, which never relabels the interaction.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"interactionId","schema":{"type":"string","minLength":1,"maxLength":128},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"goalId":{"anyOf":[{"type":"string"},{"type":"null"}]},"outcome":{"type":"string","enum":["achieved","failed","unknown"]},"intentSummary":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]}},"required":["goalId"]}}}}}},"/api/v1/servers/{id}/issues":{"get":{"operationId":"getApiV1ServersByIdIssues","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"fingerprint":{"type":"string"},"kind":{"type":"string"},"title":{"type":"string"},"toolName":{"anyOf":[{"type":"string"},{"type":"null"}]},"errorCode":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sampleMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"priority":{"anyOf":[{"type":"string"},{"type":"null"}]},"assigneeUserId":{"anyOf":[{"type":"string"},{"type":"null"}]},"firstSeen":{"type":"string"},"lastSeen":{"type":"string"},"eventCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"interactionCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"history":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["day","count"]}}},"required":["id","fingerprint","kind","title","toolName","errorCode","sampleMessage","status","priority","assigneeUserId","firstSeen","lastSeen","eventCount","interactionCount","history"]}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"statusCounts":{"type":"object","properties":{"unresolved":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"resolved":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ignored":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"all":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["unresolved","resolved","ignored","all"]},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skip":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["items","total","statusCounts","limit","skip"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"List error issues for a server (grouped by fingerprint).","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"status","schema":{"default":"unresolved","type":"string","enum":["unresolved","resolved","ignored","all"]}},{"in":"query","name":"kind","schema":{"default":"all","type":"string","enum":["transport","json-rpc","tool-result","all"]}},{"in":"query","name":"sortBy","schema":{"default":"lastSeen","type":"string","enum":["lastSeen","events","interactions","firstSeen"]}},{"in":"query","name":"limit","schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"in":"query","name":"skip","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},{"in":"query","name":"timeRange","schema":{"default":"30d","type":"string","enum":["24h","7d","30d","90d"]}},{"in":"query","name":"clients","schema":{"type":"string","maxLength":8000},"description":"Comma-separated client names to include; omit for all (non-internal) clients."},{"in":"query","name":"tools","schema":{"type":"string","maxLength":8000},"description":"Comma-separated tool names (resourceName on tools/call) to scope sessions by; omit for all tools."},{"in":"query","name":"branch","schema":{"type":"string","minLength":1,"maxLength":255}}]}},"/api/v1/servers/{id}/issues/timeseries":{"get":{"operationId":"getApiV1ServersByIdIssuesTimeseries","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"buckets":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["bucket","count"]}}},"required":["buckets"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Issue occurrence counts over the analytics window (server-wide).","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"timeRange","schema":{"default":"30d","type":"string","enum":["24h","7d","30d","90d"]}},{"in":"query","name":"status","schema":{"default":"unresolved","type":"string","enum":["unresolved","resolved","ignored","all"]}},{"in":"query","name":"kind","schema":{"default":"all","type":"string","enum":["transport","json-rpc","tool-result","all"]}},{"in":"query","name":"granularity","schema":{"type":"string","enum":["hour","day","week","month"]}},{"in":"query","name":"clients","schema":{"type":"string","maxLength":8000},"description":"Comma-separated client names to include; omit for all (non-internal) clients."},{"in":"query","name":"tools","schema":{"type":"string","maxLength":8000},"description":"Comma-separated tool names (resourceName on tools/call) to scope sessions by; omit for all tools."},{"in":"query","name":"branch","schema":{"type":"string","minLength":1,"maxLength":255}}]}},"/api/v1/servers/{id}/issues/{issueId}":{"get":{"operationId":"getApiV1ServersByIdIssuesByIssueId","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"fingerprint":{"type":"string"},"kind":{"type":"string"},"title":{"type":"string"},"toolName":{"anyOf":[{"type":"string"},{"type":"null"}]},"errorCode":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sampleMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"priority":{"anyOf":[{"type":"string"},{"type":"null"}]},"assigneeUserId":{"anyOf":[{"type":"string"},{"type":"null"}]},"firstSeen":{"type":"string"},"lastSeen":{"type":"string"},"eventCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"interactionCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"occurrences":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string"},"requestId":{"type":"string"},"interactionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["time","requestId","interactionId"]}},"history":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["day","count"]}}},"required":["id","fingerprint","kind","title","toolName","errorCode","sampleMessage","status","priority","assigneeUserId","firstSeen","lastSeen","eventCount","interactionCount","occurrences","history"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Issue detail with recent occurrences and a 14-day history chart.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"issueId","schema":{"type":"string","minLength":1,"maxLength":64},"required":true},{"in":"query","name":"branch","schema":{"type":"string","minLength":1,"maxLength":255}}]},"patch":{"operationId":"patchApiV1ServersByIdIssuesByIssueId","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Update an issue's status, priority, or assignee.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"issueId","schema":{"type":"string","minLength":1,"maxLength":64},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["unresolved","resolved","ignored"]},"priority":{"anyOf":[{"type":"string","enum":["low","medium","high"]},{"type":"null"}]},"assigneeUserId":{"anyOf":[{"type":"string"},{"type":"null"}]}}}}}}}},"/api/v1/servers/{id}/feedback":{"get":{"operationId":"getApiV1ServersByIdFeedback","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"content":{"type":"string"},"source":{"type":"string"},"interactionId":{"anyOf":[{"type":"string"},{"type":"null"}]},"clientName":{"anyOf":[{"type":"string"},{"type":"null"}]},"clientVersion":{"anyOf":[{"type":"string"},{"type":"null"}]},"time":{"type":"string"}},"required":["id","content","source","interactionId","clientName","clientVersion","time"]}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skip":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["items","total","limit","skip"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Feedback captured via the gateway-injected send_feedback tool.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"source","schema":{"default":"all","type":"string","enum":["user","model","all"]}},{"in":"query","name":"client","schema":{"type":"string"}},{"in":"query","name":"sortBy","schema":{"default":"time","type":"string","enum":["time"]}},{"in":"query","name":"limit","schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"in":"query","name":"skip","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}}]}},"/api/v1/servers/{id}/domain/status":{"get":{"operationId":"getApiV1ServersByIdDomainStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"type":"boolean"},"hostnameId":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"anyOf":[{"type":"string"},{"type":"null"}]},"sslStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"cnameTarget":{"anyOf":[{"type":"string"},{"type":"null"}]},"configuredAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"verificationErrors":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"pendingRemovalAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"setupMode":{"anyOf":[{"type":"string","const":"new_hostname"},{"type":"null"}]},"gatewayReady":{"type":"boolean"}},"required":["domain","verified","hostnameId","status","sslStatus","cnameTarget","configuredAt","verificationErrors"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Get custom domain status for a server","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"domainId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}]}},"/api/v1/servers/{id}/domain/verify":{"post":{"operationId":"postApiV1ServersByIdDomainVerify","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"verified":{"type":"boolean"},"status":{"anyOf":[{"type":"string"},{"type":"null"}]},"sslStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"configuredAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"verificationErrors":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"gatewayReady":{"type":"boolean"}},"required":["success","verified"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"No domain configured","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"domain":{"type":"string"}},"required":["error"]}}}}},"tags":["Servers"],"description":"Verify custom hostname for a server. Checks Cloudflare Custom Hostname status and requests an immediate DCV recheck with its existing validation method while pending.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"domainId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}]}},"/api/v1/servers/{id}/domain/request":{"post":{"operationId":"postApiV1ServersByIdDomainRequest","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"domain":{"type":"string"},"hostnameId":{"type":"string"},"status":{"type":"string"},"sslStatus":{"type":"string"},"cnameTarget":{"type":"string"},"dnsInstructions":{"type":"string"},"setupMode":{"type":"string","const":"new_hostname"},"gatewayReady":{"type":"boolean"}},"required":["success","domain","hostnameId","status","sslStatus","cnameTarget","dnsInstructions"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"domain":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Server not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"domain":{"type":"string"}},"required":["error"]}}}},"409":{"description":"Domain already in use (same hostname on another server you can access, or globally)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"domain":{"type":"string"}},"required":["error"]}}}}},"tags":["Servers"],"description":"Request a custom domain for a server. Creates a Cloudflare Custom Hostname and returns CNAME instructions. Domain starts unverified — call verify after configuring DNS.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1},"setupMode":{"default":"new_hostname","type":"string","const":"new_hostname"},"branch":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]}},"required":["domain"]}}}}}},"/api/v1/servers/{id}/domain/cancel-removal":{"post":{"operationId":"postApiV1ServersByIdDomainCancelRemoval","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"pending":{"type":"boolean"},"pendingRemovalAt":{"type":"string"}},"required":["success","message"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Cancel pending custom domain removal for a server","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"domainId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}]}},"/api/v1/servers/{id}/domain/sync":{"post":{"operationId":"postApiV1ServersByIdDomainSync","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"pending":{"type":"boolean"},"pendingRemovalAt":{"type":"string"}},"required":["success","message"]}}}},"400":{"description":"No activated custom domain or no active deployment","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"domain":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"502":{"description":"Gateway KV write failed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"domain":{"type":"string"}},"required":["error"]}}}}},"tags":["Servers"],"description":"Re-sync gateway routing for a server based on current domain state. Useful to force a slug-routing cutover (disable the bare slug subdomain in favor of an active custom domain) without waiting for a production redeploy. Requires at least one custom domain already activated by a previous prod deploy (`activatedAt != null`) — otherwise the custom domain mapping isn't in gateway KV yet and disabling the slug would leave the server unreachable.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/servers/{id}/domain":{"delete":{"operationId":"deleteApiV1ServersByIdDomain","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"pending":{"type":"boolean"},"pendingRemovalAt":{"type":"string"}},"required":["success","message"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Remove custom domain from a server","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"domainId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}]}},"/api/v1/servers/{id}/public-chat/config":{"get":{"operationId":"getApiV1ServersByIdPublicChatConfig","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"config":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"enabled":{"type":"boolean"},"showSecurityWarningBanner":{"type":"boolean"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"ogImageUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"suggestedQuestions":{"type":"array","items":{"type":"string"}},"agentId":{"type":"string"},"createdBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","enabled","showSecurityWarningBanner","title","description","ogImageUrl","suggestedQuestions","agentId","createdBy","createdAt","updatedAt"]},{"type":"null"}]},"hasConfig":{"type":"boolean"},"publicChatUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["config","hasConfig","publicChatUrl"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["PublicChat"],"description":"Get server public chat config (owner/org access only).","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]},"patch":{"operationId":"patchApiV1ServersByIdPublicChatConfig","responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","properties":{"config":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"enabled":{"type":"boolean"},"showSecurityWarningBanner":{"type":"boolean"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"ogImageUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"suggestedQuestions":{"type":"array","items":{"type":"string"}},"agentId":{"type":"string"},"createdBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","enabled","showSecurityWarningBanner","title","description","ogImageUrl","suggestedQuestions","agentId","createdBy","createdAt","updatedAt"]},{"type":"null"}]},"hasConfig":{"type":"boolean"},"publicChatUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["config","hasConfig","publicChatUrl"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["PublicChat"],"description":"Create/update public chat config for a server. First row is created only when enabled=true.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"showSecurityWarningBanner":{"type":"boolean"},"title":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"description":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}]},"ogImageUrl":{"anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"type":"null"}]},"suggestedQuestions":{"maxItems":8,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}}}}}}}}},"/api/v1/servers/{id}/public-chat/chats":{"get":{"operationId":"getApiV1ServersByIdPublicChatChats","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","title","createdAt","updatedAt","userId"]}},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"skip":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","total","limit","skip"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["PublicChat"],"description":"Paginated list of stored public chat transcripts for a server.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"take","schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"skip","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},{"in":"query","name":"sort","schema":{"type":"string"}}]}},"/api/v1/servers/{id}/public-chat/chats/{chatId}/events":{"get":{"operationId":"getApiV1ServersByIdPublicChatChatsByChatIdEvents","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"chatId":{"type":"string"},"type":{"type":"string"},"eventData":{},"createdBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","chatId","type","eventData","createdBy","createdAt"]}}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["PublicChat"],"description":"Read stored events for a single public chat transcript.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"chatId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/servers/{id}/public-chat/generate-quick-questions":{"post":{"operationId":"postApiV1ServersByIdPublicChatGenerateQuickQuestions","responses":{"200":{"description":"OK"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"500":{"description":"Internal error"}},"tags":["PublicChat"],"description":"Generate 3–6 quick-prompt chips shown on the public chat landing. Uses Claude Haiku over the MCP server's tool list, persists the result to PublicChatConfig.suggestedQuestions, and syncs to the gateway KV. Owner/org access only.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/servers/{id}/public-chat/generate-seo":{"post":{"operationId":"postApiV1ServersByIdPublicChatGenerateSeo","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"title":{"type":"string"},"description":{"type":"string"}},"required":["ok","title","description"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"500":{"description":"Internal error"}},"tags":["PublicChat"],"description":"Generate SEO title and description for the public chat landing page. Persists to PublicChatConfig and syncs gateway KV.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tools":{},"serverInfo":{"type":"object","properties":{"title":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}}}}}}}},"parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/servers/{id}/public-chat/og-image":{"post":{"operationId":"postApiV1ServersByIdPublicChatOgImage","responses":{"200":{"description":"Uploaded","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"500":{"description":"Internal error"}},"tags":["PublicChat"],"description":"Upload a custom OG image for the public chat landing (PNG/JPEG/WebP, max 2 MB). Persists URL and syncs gateway KV.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary"}}}}}},"parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/servers/{id}/source":{"post":{"operationId":"postApiV1ServersByIdSource","responses":{"200":{"description":"Pushed","content":{"application/json":{"schema":{"type":"object","properties":{"commitSha":{"type":"string"},"repoFullName":{"anyOf":[{"type":"string"},{"type":"null"}]},"htmlUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"branch":{"type":"string"}},"required":["commitSha","repoFullName","htmlUrl","branch"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Mango/Vibe: push a new gzip tarball as a commit on the server's GitHub repo (redeploy). Multipart: sourceFile, branch, commitMessage.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/servers/{id}/repository/migrate":{"post":{"operationId":"postApiV1ServersByIdRepositoryMigrate","responses":{"200":{"description":"Migrated","content":{"application/json":{"schema":{"type":"object","properties":{"repoFullName":{"type":"string"},"deploymentId":{"type":"string"}},"required":["repoFullName","deploymentId"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Move a managed server's repo into the user's connected GitHub installation (re-create + push), then redeploy from it.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"installationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"repoName":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[a-zA-Z0-9._-]+$"},"private":{"type":"boolean"}},"required":["installationId"]}}}}}},"/api/v1/servers/alerts/slack/callback":{"get":{"operationId":"getApiV1ServersAlertsSlackCallback","responses":{"303":{"description":"Redirect to server alert settings"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Server Alerts"],"description":"Complete a Slack app installation and return to the server alert settings.","parameters":[{"in":"query","name":"code","schema":{"type":"string","minLength":1}},{"in":"query","name":"state","schema":{"type":"string","minLength":1},"required":true},{"in":"query","name":"error","schema":{"type":"string","minLength":1}}]}},"/api/v1/servers/{id}/alerts":{"get":{"operationId":"allApiV1Servers","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"monitoringEligible":{"type":"boolean"},"availableSignals":{"type":"array","items":{"type":"string","enum":["request_errors","tool_errors","authentication","token_latency","tool_latency","issues","cpu","memory","unreachable","deployment_failed"]}},"settings":{"type":"object","properties":{"slack":{"type":"object","properties":{"connected":{"type":"boolean"},"workspaceName":{"anyOf":[{"type":"string"},{"type":"null"}]},"channelName":{"anyOf":[{"type":"string"},{"type":"null"}]},"installedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]}},"required":["connected","workspaceName","channelName","installedAt"]},"channels":{"type":"object","properties":{"request_errors":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"tool_errors":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"authentication":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"token_latency":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"tool_latency":{"default":[],"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"issues":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"cpu":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"memory":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"unreachable":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"deployment_failed":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}}},"required":["request_errors","tool_errors","authentication","token_latency","issues","cpu","memory","unreachable","deployment_failed"],"additionalProperties":false}},"required":["slack","channels"]}},"required":["monitoringEligible","availableSignals","settings"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Server Alerts"],"description":"Get server notification settings. Slack credentials are never returned.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]},"put":{"operationId":"allApiV1Servers","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"monitoringEligible":{"type":"boolean"},"availableSignals":{"type":"array","items":{"type":"string","enum":["request_errors","tool_errors","authentication","token_latency","tool_latency","issues","cpu","memory","unreachable","deployment_failed"]}},"settings":{"type":"object","properties":{"slack":{"type":"object","properties":{"connected":{"type":"boolean"},"workspaceName":{"anyOf":[{"type":"string"},{"type":"null"}]},"channelName":{"anyOf":[{"type":"string"},{"type":"null"}]},"installedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]}},"required":["connected","workspaceName","channelName","installedAt"]},"channels":{"type":"object","properties":{"request_errors":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"tool_errors":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"authentication":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"token_latency":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"tool_latency":{"default":[],"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"issues":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"cpu":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"memory":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"unreachable":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"deployment_failed":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}}},"required":["request_errors","tool_errors","authentication","token_latency","issues","cpu","memory","unreachable","deployment_failed"],"additionalProperties":false}},"required":["slack","channels"]}},"required":["monitoringEligible","availableSignals","settings"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Server Alerts"],"description":"Configure per-alert customer delivery channels. Slack is connected separately through OAuth. Internal monitoring is unaffected.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"channels":{"type":"object","properties":{"request_errors":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"tool_errors":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"authentication":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"token_latency":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"tool_latency":{"default":[],"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"issues":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"cpu":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"memory":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"unreachable":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"deployment_failed":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}}},"required":["request_errors","tool_errors","authentication","token_latency","issues","cpu","memory","unreachable","deployment_failed"],"additionalProperties":false}},"required":["channels"],"additionalProperties":false}}}}}},"/api/v1/servers/{id}/alerts/slack/connect":{"post":{"operationId":"allApiV1Servers","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Server Alerts"],"description":"Create a short-lived Slack authorization URL for this server.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/servers/{id}/alerts/slack":{"delete":{"operationId":"allApiV1Servers","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"monitoringEligible":{"type":"boolean"},"availableSignals":{"type":"array","items":{"type":"string","enum":["request_errors","tool_errors","authentication","token_latency","tool_latency","issues","cpu","memory","unreachable","deployment_failed"]}},"settings":{"type":"object","properties":{"slack":{"type":"object","properties":{"connected":{"type":"boolean"},"workspaceName":{"anyOf":[{"type":"string"},{"type":"null"}]},"channelName":{"anyOf":[{"type":"string"},{"type":"null"}]},"installedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]}},"required":["connected","workspaceName","channelName","installedAt"]},"channels":{"type":"object","properties":{"request_errors":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"tool_errors":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"authentication":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"token_latency":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"tool_latency":{"default":[],"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"issues":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"cpu":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"memory":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"unreachable":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}},"deployment_failed":{"maxItems":2,"type":"array","items":{"type":"string","enum":["email","slack"]}}},"required":["request_errors","tool_errors","authentication","token_latency","issues","cpu","memory","unreachable","deployment_failed"],"additionalProperties":false}},"required":["slack","channels"]}},"required":["monitoringEligible","availableSignals","settings"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Server Alerts"],"description":"Disconnect Slack from this server. This does not uninstall the Manufact app from Slack.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/servers/{id}/alerts/test":{"post":{"operationId":"allApiV1Servers","responses":{"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","properties":{"queued":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["queued"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Server Alerts"],"description":"Queue a test for saved notification destinations (at most once per minute).","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/server-authentication-sessions/{sessionId}":{"get":{"operationId":"getApiV1ServerAuthenticationSessionsBySessionId","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serverId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["pending","authenticated","failed","expired"]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},{"type":"null"}]},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Null for production."},"targetUrl":{"type":"string","format":"uri"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"server":{"type":"object","properties":{"name":{"type":"string"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","icon"]}},"required":["sessionId","serverId","status","completedAt","error","branch","targetUrl","expiresAt","server"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Load consent-page details for the requesting user's authentication session. Requires current server update permission. The session ID does not grant access. Missing or expired Redis records return 404. This read does not return credentials, extend expiry, or start OAuth.","parameters":[{"in":"path","name":"sessionId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/mcp-connect/attempts":{"post":{"operationId":"postApiV1McpConnectAttempts","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"status":{"type":"string","const":"authorization_required"},"attemptId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"authorizationUrl":{"type":"string","format":"uri"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["status","attemptId","authorizationUrl","expiresAt"]},{"type":"object","properties":{"status":{"type":"string","const":"not_required"}},"required":["status"]}]}}}},"400":{"description":"EXTERNAL_URL_BLOCKED","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}},"required":["error","code"],"additionalProperties":{}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"422":{"description":"OAUTH_DISCOVERY_FAILED { stage, detail?, retryAfterSec? }","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}},"required":["error","code"],"additionalProperties":{}}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["MCP connect"],"description":"Start an OAuth consent for an MCP server URL before or without a server row (connect by URL). Requires server create permission in `organizationId`, or server update permission on the external server `serverId` (Settings update mode; its organization is used). After consent, create the server with `pendingCredentialAttemptId` (POST /servers) or bind it in an update (PATCH /servers/{id}).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"},"organizationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serverId":{"description":"Existing external server (Settings update mode); its organization is used.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["url"],"additionalProperties":false}}}}}},"/api/v1/mcp-connect/attempts/{attemptId}":{"get":{"operationId":"getApiV1McpConnectAttemptsByAttemptId","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"attemptId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["pending","exchanging","completed","failed","expired"]},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},{"type":"null"}]},"credential":{"anyOf":[{"$ref":"#/components/schemas/CredentialSummary"},{"type":"null"}]},"verification":{"anyOf":[{"type":"string","enum":["ok","unreachable"]},{"type":"null"}]},"serverInfo":{"anyOf":[{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"version":{"anyOf":[{"type":"string"},{"type":"null"}]},"iconUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","title","version","iconUrl"]},{"type":"null"}]}},"required":["attemptId","status","expiresAt","error","credential","verification","serverInfo"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["MCP connect"],"description":"Poll the caller's connect attempt. A pending attempt past its expiry reads as `expired`; once its record is gone the attempt is 404 (treat as expired). Never returns tokens.","parameters":[{"in":"path","name":"attemptId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/mcp-connect/callback":{"post":{"operationId":"postApiV1McpConnectCallback","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"attemptId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["pending","exchanging","completed","failed","expired"]},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},{"type":"null"}]},"credential":{"anyOf":[{"$ref":"#/components/schemas/CredentialSummary"},{"type":"null"}]},"verification":{"anyOf":[{"type":"string","enum":["ok","unreachable"]},{"type":"null"}]},"serverInfo":{"anyOf":[{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"version":{"anyOf":[{"type":"string"},{"type":"null"}]},"iconUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","title","version","iconUrl"]},{"type":"null"}]}},"required":["attemptId","status","expiresAt","error","credential","verification","serverInfo"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"CONNECT_ATTEMPT_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}},"required":["error","code"],"additionalProperties":{}}}}},"409":{"description":"CONNECT_ATTEMPT_CONFLICT","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}},"required":["error","code"],"additionalProperties":{}}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["MCP connect"],"description":"Complete a consent from the OAuth redirect page (`state` starts with `mcpc1.`): Manufact Cloud exchanges the code, verifies the token against the MCP server and stores the credential. Idempotent for a repeated callback; only the user who started the attempt can complete it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"state":{"type":"string","maxLength":256,"pattern":"^mcpc1\\..*"},"code":{"type":"string","maxLength":4096},"iss":{"type":"string","maxLength":2048},"error":{"type":"string","maxLength":256},"error_description":{"type":"string","maxLength":2048}},"required":["state"],"additionalProperties":false}}}}}},"/api/v1/deployments":{"get":{"operationId":"getApiV1Deployments","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"source":{},"status":{"type":"string"},"port":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"healthCheckPath":{"anyOf":[{"type":"string"},{"type":"null"}]},"pipelineMeta":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildLogs":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"isProductionDeployment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"previousDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"deploymentVersion":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"deploymentTrigger":{"anyOf":[{"type":"string"},{"type":"null"}]},"pipelinePhase":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"serverId":{"type":"string"},"organizationId":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"buildStartedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"buildCompletedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"archivedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"failureMeta":{"anyOf":[{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"feature":{"type":"string","enum":["projects","teamMembers","region","previewDeploys","coldStart","requestsPerMonth","logRetention","githubOrg","customDomain"]},"currentTier":{"type":"string","enum":["free","hobby","startup","enterprise"]},"requiredTier":{"type":"string","enum":["free","hobby","startup","enterprise"]},"current":{"type":"number"},"limit":{"anyOf":[{"type":"number"},{"type":"string","const":"unlimited"}]}},"required":["error","code","feature","currentTier","requiredTier"]},{"type":"null"}]},"mcpUrl":{"type":"string"},"latestChecklistAuditStatus":{"anyOf":[{"type":"string","enum":["pending","running","completed","failed"]},{"type":"null"}]},"latestChecklistAudit":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"checks":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","skip","pending"]},"severity":{"type":"string"},"category":{"type":"string"}},"required":["status","severity","category"]}}},"required":["id","createdAt","checks"]},{"type":"null"}]}},"required":["id","name","source","status","port","healthCheckPath","pipelineMeta","error","buildLogs","gitCommitSha","gitBranch","gitCommitMessage","isProductionDeployment","previousDeploymentId","deploymentVersion","deploymentTrigger","pipelinePhase","userId","serverId","organizationId","createdAt","updatedAt","buildStartedAt","buildCompletedAt","archivedAt","mcpUrl"]}},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"skip":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","total","limit","skip"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Deployments"],"description":"List deployments visible to the current user. Optional filters: serverId, organizationId, status, branch, take (max 200).","parameters":[{"in":"query","name":"serverId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"in":"query","name":"organizationId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"in":"query","name":"status","schema":{"type":"string"}},{"in":"query","name":"branch","schema":{"type":"string","minLength":1},"description":"Exact Git branch name. Omit to list all branches."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":200}},{"in":"query","name":"take","schema":{"type":"integer","minimum":1,"maximum":200}},{"in":"query","name":"skip","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},{"in":"query","name":"sort","schema":{"type":"string"}}]},"post":{"operationId":"postApiV1Deployments","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Plan limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"feature":{"type":"string","enum":["projects","teamMembers","region","previewDeploys","coldStart","requestsPerMonth","logRetention","githubOrg","customDomain"]},"currentTier":{"type":"string","enum":["free","hobby","startup","enterprise"]},"requiredTier":{"type":"string","enum":["free","hobby","startup","enterprise"]},"current":{"type":"number"},"limit":{"anyOf":[{"type":"number"},{"type":"string","const":"unlimited"}]}},"required":["error","code","feature","currentTier","requiredTier"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Deployments"],"description":"Trigger a new deployment for an existing GitHub server","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"serverId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","maxLength":255},"branch":{"type":"string"},"commitSha":{"type":"string"},"commitMessage":{"type":"string"},"trigger":{"type":"string","enum":["manual","webhook","redeploy","rollback"]},"prNumber":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["serverId"]}}}}}},"/api/v1/deployments/{id}":{"get":{"operationId":"getApiV1DeploymentsById","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"source":{},"status":{"type":"string"},"port":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"healthCheckPath":{"anyOf":[{"type":"string"},{"type":"null"}]},"pipelineMeta":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildLogs":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"isProductionDeployment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"previousDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"deploymentVersion":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"deploymentTrigger":{"anyOf":[{"type":"string"},{"type":"null"}]},"pipelinePhase":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"serverId":{"type":"string"},"organizationId":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"buildStartedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"buildCompletedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"archivedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"failureMeta":{"anyOf":[{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"feature":{"type":"string","enum":["projects","teamMembers","region","previewDeploys","coldStart","requestsPerMonth","logRetention","githubOrg","customDomain"]},"currentTier":{"type":"string","enum":["free","hobby","startup","enterprise"]},"requiredTier":{"type":"string","enum":["free","hobby","startup","enterprise"]},"current":{"type":"number"},"limit":{"anyOf":[{"type":"number"},{"type":"string","const":"unlimited"}]}},"required":["error","code","feature","currentTier","requiredTier"]},{"type":"null"}]},"mcpUrl":{"type":"string"},"latestChecklistAuditStatus":{"anyOf":[{"type":"string","enum":["pending","running","completed","failed"]},{"type":"null"}]},"latestChecklistAudit":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"checks":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","skip","pending"]},"severity":{"type":"string"},"category":{"type":"string"}},"required":["status","severity","category"]}}},"required":["id","createdAt","checks"]},{"type":"null"}]}},"required":["id","name","source","status","port","healthCheckPath","pipelineMeta","error","buildLogs","gitCommitSha","gitBranch","gitCommitMessage","isProductionDeployment","previousDeploymentId","deploymentVersion","deploymentTrigger","pipelinePhase","userId","serverId","organizationId","createdAt","updatedAt","buildStartedAt","buildCompletedAt","archivedAt","mcpUrl"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Deployments"],"description":"Get a single deployment by ID","parameters":[{"in":"path","name":"id","schema":{"type":"string","minLength":1,"maxLength":128},"required":true}]},"delete":{"operationId":"deleteApiV1DeploymentsById","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Deployments"],"description":"Delete a deployment and tear down its infrastructure","parameters":[{"in":"path","name":"id","schema":{"type":"string","minLength":1,"maxLength":128},"required":true}]},"patch":{"operationId":"patchApiV1DeploymentsById","responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"source":{},"status":{"type":"string"},"port":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"healthCheckPath":{"anyOf":[{"type":"string"},{"type":"null"}]},"pipelineMeta":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildLogs":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"isProductionDeployment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"previousDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"deploymentVersion":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"deploymentTrigger":{"anyOf":[{"type":"string"},{"type":"null"}]},"pipelinePhase":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"serverId":{"type":"string"},"organizationId":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"buildStartedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"buildCompletedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"archivedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"failureMeta":{"anyOf":[{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"feature":{"type":"string","enum":["projects","teamMembers","region","previewDeploys","coldStart","requestsPerMonth","logRetention","githubOrg","customDomain"]},"currentTier":{"type":"string","enum":["free","hobby","startup","enterprise"]},"requiredTier":{"type":"string","enum":["free","hobby","startup","enterprise"]},"current":{"type":"number"},"limit":{"anyOf":[{"type":"number"},{"type":"string","const":"unlimited"}]}},"required":["error","code","feature","currentTier","requiredTier"]},{"type":"null"}]},"mcpUrl":{"type":"string"},"latestChecklistAuditStatus":{"anyOf":[{"type":"string","enum":["pending","running","completed","failed"]},{"type":"null"}]},"latestChecklistAudit":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"checks":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","skip","pending"]},"severity":{"type":"string"},"category":{"type":"string"}},"required":["status","severity","category"]}}},"required":["id","createdAt","checks"]},{"type":"null"}]}},"required":["id","name","source","status","port","healthCheckPath","pipelineMeta","error","buildLogs","gitCommitSha","gitBranch","gitCommitMessage","isProductionDeployment","previousDeploymentId","deploymentVersion","deploymentTrigger","pipelinePhase","userId","serverId","organizationId","createdAt","updatedAt","buildStartedAt","buildCompletedAt","archivedAt","mcpUrl"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Deployments"],"description":"Update a deployment","parameters":[{"in":"path","name":"id","schema":{"type":"string","minLength":1,"maxLength":128},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildLogs":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildStartedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"buildCompletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"archivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]}}}}}}}},"/api/v1/deployments/{id}/build-logs":{"get":{"operationId":"getApiV1DeploymentsByIdBuildLogs","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"logs":{"type":"string"},"offset":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"totalLength":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string"}},"required":["logs","offset","totalLength","status"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Deployments"],"description":"Get build logs for a deployment. Supports offset-based tailing: pass `offset` (character index) to receive only new content appended after that position. Returns `logs` (the text slice), `offset` (character position to send on the next request), `status` (current deployment status), and `totalLength`.","parameters":[{"in":"path","name":"id","schema":{"type":"string","minLength":1,"maxLength":128},"required":true},{"in":"query","name":"offset","schema":{"type":"integer","minimum":0,"maximum":9007199254740991}}]}},"/api/v1/deployments/{id}/logs":{"get":{"operationId":"getApiV1DeploymentsByIdLogs","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"logs":{"type":"string"}},"required":["logs"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Deployments"],"description":"Get runtime logs for a deployment. Optional query `lines` (1–5000) limits how many trailing log lines are returned after provider fetch.","parameters":[{"in":"path","name":"id","schema":{"type":"string","minLength":1,"maxLength":128},"required":true},{"in":"query","name":"lines","schema":{"type":"integer","minimum":1,"maximum":5000}}]}},"/api/v1/deployments/{id}/stop":{"post":{"operationId":"postApiV1DeploymentsByIdStop","responses":{"200":{"description":"Stopped","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Deployments"],"description":"Stop a running deployment","parameters":[{"in":"path","name":"id","schema":{"type":"string","minLength":1,"maxLength":128},"required":true}]}},"/api/v1/deployments/{id}/activate":{"post":{"operationId":"postApiV1DeploymentsByIdActivate","responses":{"200":{"description":"Activated","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"source":{},"status":{"type":"string"},"port":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"healthCheckPath":{"anyOf":[{"type":"string"},{"type":"null"}]},"pipelineMeta":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildLogs":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"isProductionDeployment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"previousDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"deploymentVersion":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"deploymentTrigger":{"anyOf":[{"type":"string"},{"type":"null"}]},"pipelinePhase":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"},"serverId":{"type":"string"},"organizationId":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"buildStartedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"buildCompletedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"archivedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"failureMeta":{"anyOf":[{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"feature":{"type":"string","enum":["projects","teamMembers","region","previewDeploys","coldStart","requestsPerMonth","logRetention","githubOrg","customDomain"]},"currentTier":{"type":"string","enum":["free","hobby","startup","enterprise"]},"requiredTier":{"type":"string","enum":["free","hobby","startup","enterprise"]},"current":{"type":"number"},"limit":{"anyOf":[{"type":"number"},{"type":"string","const":"unlimited"}]}},"required":["error","code","feature","currentTier","requiredTier"]},{"type":"null"}]},"mcpUrl":{"type":"string"},"latestChecklistAuditStatus":{"anyOf":[{"type":"string","enum":["pending","running","completed","failed"]},{"type":"null"}]},"latestChecklistAudit":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"checks":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","skip","pending"]},"severity":{"type":"string"},"category":{"type":"string"}},"required":["status","severity","category"]}}},"required":["id","createdAt","checks"]},{"type":"null"}]}},"required":["id","name","source","status","port","healthCheckPath","pipelineMeta","error","buildLogs","gitCommitSha","gitBranch","gitCommitMessage","isProductionDeployment","previousDeploymentId","deploymentVersion","deploymentTrigger","pipelinePhase","userId","serverId","organizationId","createdAt","updatedAt","buildStartedAt","buildCompletedAt","archivedAt","mcpUrl"]}}}},"400":{"description":"Deployment cannot be activated (not running or missing hostname)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Deployments"],"description":"Promote a deployment to be the active (production) deployment for its server. Updates gateway routing, server config, and tears down the previous production deployment.","parameters":[{"in":"path","name":"id","schema":{"type":"string","minLength":1,"maxLength":128},"required":true}]}},"/api/v1/chats/shared/{token}":{"get":{"operationId":"getApiV1ChatsSharedByToken","tags":["Chats"],"description":"Get a shared chat by its share token (public, no auth required)","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"chat":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"agentId":{"type":"string"},"organizationId":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}]},"shareToken":{"anyOf":[{"type":"string"},{"type":"null"}]},"shareCreatedBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"shareCreatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"shareUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"shareIsActive":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"type":{"type":"string","enum":["chat","agent_execution"]}},"required":["id","title","agentId","organizationId","userId","shareToken","shareCreatedBy","shareCreatedAt","shareUntil","shareIsActive","createdAt","updatedAt","type"]},"agent":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"llmModel":{"type":"string"},"systemPrompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"maxSteps":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"codeMode":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"serverPoolId":{"anyOf":[{"type":"string"},{"type":"null"}]},"organizationId":{"type":"string"},"creatorId":{"type":"string"},"isPublic":{"type":"boolean"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","name","description","llmModel","systemPrompt","maxSteps","codeMode","serverPoolId","organizationId","creatorId","isPublic","displayPreferences","createdAt","updatedAt"]},{"type":"null"}]},"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"chatId":{"type":"string"},"type":{"type":"string"},"eventData":{},"createdBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","chatId","type","eventData","createdBy","createdAt"]}},"serverSlugs":{"type":"array","items":{"type":"string"}},"primaryMcpUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["chat","agent","events","serverSlugs","primaryMcpUrl"]}}}}},"parameters":[{"in":"path","name":"token","schema":{"type":"string","minLength":1,"maxLength":512},"required":true}]}},"/api/v1/chats":{"get":{"operationId":"getApiV1Chats","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"agentId":{"type":"string"},"organizationId":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}]},"shareToken":{"anyOf":[{"type":"string"},{"type":"null"}]},"shareCreatedBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"shareCreatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"shareUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"shareIsActive":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"type":{"type":"string","enum":["chat","agent_execution"]},"agent":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},{"type":"null"}]}},"required":["id","title","agentId","organizationId","userId","shareToken","shareCreatedBy","shareCreatedAt","shareUntil","shareIsActive","createdAt","updatedAt","type","agent"]}},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"skip":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","total","limit","skip"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Chats"],"description":"List chats visible to the current user","parameters":[{"in":"query","name":"agentId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"in":"query","name":"type","schema":{"type":"string","enum":["chat","agent_execution"]}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":200}},{"in":"query","name":"take","schema":{"type":"integer","minimum":1,"maximum":200}},{"in":"query","name":"skip","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},{"in":"query","name":"sort","schema":{"type":"string"}}]},"post":{"operationId":"postApiV1Chats","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"agentId":{"type":"string"},"organizationId":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}]},"shareToken":{"anyOf":[{"type":"string"},{"type":"null"}]},"shareCreatedBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"shareCreatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"shareUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"shareIsActive":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"type":{"type":"string","enum":["chat","agent_execution"]}},"required":["id","title","agentId","organizationId","userId","shareToken","shareCreatedBy","shareCreatedAt","shareUntil","shareIsActive","createdAt","updatedAt","type"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Chats"],"description":"Create a new chat","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"default":"New Chat","type":"string"},"agentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"type":{"type":"string","enum":["chat","agent_execution"]}},"required":["agentId"]}}}}}},"/api/v1/chats/{id}/generate-title":{"post":{"operationId":"postApiV1ChatsByIdGenerateTitle","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"}},"required":["title"]}}}},"400":{"description":"No user message stored yet"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"502":{"description":"Title generation failed"}},"tags":["Chats"],"description":"Suggest a chat title from the first persisted user message (no request body; not derived from client-supplied text).","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/chats/{id}":{"get":{"operationId":"getApiV1ChatsById","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"agentId":{"type":"string"},"organizationId":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}]},"shareToken":{"anyOf":[{"type":"string"},{"type":"null"}]},"shareCreatedBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"shareCreatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"shareUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"shareIsActive":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"type":{"type":"string","enum":["chat","agent_execution"]},"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"chatId":{"type":"string"},"type":{"type":"string"},"eventData":{},"createdBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","chatId","type","eventData","createdBy","createdAt"]}}},"required":["id","title","agentId","organizationId","userId","shareToken","shareCreatedBy","shareCreatedAt","shareUntil","shareIsActive","createdAt","updatedAt","type","events"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Chats"],"description":"Get a single chat by ID, including events","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]},"patch":{"operationId":"patchApiV1ChatsById","responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"agentId":{"type":"string"},"organizationId":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}]},"shareToken":{"anyOf":[{"type":"string"},{"type":"null"}]},"shareCreatedBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"shareCreatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"shareUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"shareIsActive":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"type":{"type":"string","enum":["chat","agent_execution"]}},"required":["id","title","agentId","organizationId","userId","shareToken","shareCreatedBy","shareCreatedAt","shareUntil","shareIsActive","createdAt","updatedAt","type"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Chats"],"description":"Update a chat","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"shareToken":{"anyOf":[{"type":"string"},{"type":"null"}]},"shareCreatedBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"shareCreatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"shareIsActive":{"anyOf":[{"type":"boolean"},{"type":"null"}]}}}}}}},"delete":{"operationId":"deleteApiV1ChatsById","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Chats"],"description":"Delete a chat","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/chats/{id}/share":{"post":{"operationId":"postApiV1ChatsByIdShare","responses":{"200":{"description":"Share token created","content":{"application/json":{"schema":{"type":"object","properties":{"shareToken":{"type":"string"},"shareCreatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"shareUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]}},"required":["shareToken","shareCreatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Chats"],"description":"Generate a share token for a chat, making it publicly readable","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/chats/{id}/events":{"get":{"operationId":"getApiV1ChatsByIdEvents","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"chatId":{"type":"string"},"type":{"type":"string"},"eventData":{},"createdBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","chatId","type","eventData","createdBy","createdAt"]}}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Chats"],"description":"List events for a chat","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/chats/{id}/stream":{"post":{"operationId":"allApiV1Chats","responses":{"200":{"description":"Streaming text/plain body (Vercel AI Data Stream v1). Not JSON — see route description."},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"500":{"description":"Configuration or server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Chats"],"description":"Stream an assistant reply for a chat using the Vercel AI data-stream protocol (text/plain; custom line-oriented codes). Requires a non-empty `messages` array (AI SDK / model messages). Optional `disabledTools` omits those tool names from the MCP toolset. Request body schema comes from the route JSON validator.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"messages":{"minItems":1,"type":"array","items":{}},"disabledTools":{"type":"array","items":{"type":"string"}},"serverBranchById":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["messages"]}}}}}},"/api/v1/server-pools":{"get":{"operationId":"getApiV1ServerPools","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"serverSlugs":{"type":"array","items":{"type":"string"}},"userId":{"type":"string"},"organizationId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}}},"required":["id","name","description","serverSlugs","userId","organizationId","createdAt","updatedAt","displayPreferences"]}},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"skip":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","total","limit","skip"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Server Pools"],"description":"List server pools visible to the current user","parameters":[{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"take","schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"skip","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},{"in":"query","name":"sort","schema":{"type":"string"}}]},"post":{"operationId":"postApiV1ServerPools","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"serverSlugs":{"type":"array","items":{"type":"string"}},"userId":{"type":"string"},"organizationId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"servers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}},"config":{},"dashboardConnectionUrls":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"slugRoutingDisabledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"status":{"type":"string"},"activeDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"previousDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedRepositoryId":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"publicRoutingMode":{"type":"string","enum":["direct","gateway"]},"region":{"type":"string","enum":["AUTO","US","EU","APAC"]},"organizationId":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedRepository":{"type":"object","properties":{"id":{"type":"string"},"repoFullName":{"anyOf":[{"type":"string"},{"type":"null"}]},"githubRepoId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"productionBranch":{"type":"string"},"watchPaths":{"type":"array","items":{"type":"string"}},"deployBranchPatterns":{"type":"array","items":{"type":"string"}},"waitForCi":{"type":"boolean"},"pendingWebhookCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingWebhookBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingWebhookPrNumber":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pendingWebhookCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"isActive":{"type":"boolean"},"accessStatus":{"type":"string"},"accessCheckedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"accessReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"isManaged":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"userId":{"type":"string"},"githubInstallationId":{"type":"string"}},"required":["id","repoFullName","githubRepoId","productionBranch","watchPaths","deployBranchPatterns","waitForCi","pendingWebhookCommitSha","pendingWebhookBranch","pendingWebhookPrNumber","pendingWebhookCommitMessage","isActive","accessStatus","accessCheckedAt","accessReason","isManaged","createdAt","updatedAt","userId","githubInstallationId"]},"latestDeploymentStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"domains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"verified":{"type":"boolean"},"type":{"type":"string"},"pendingRemovalAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["domain","verified"]}},"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"status":{"type":"string"},"buildStartedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"buildCompletedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"gitCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"serverId":{"type":"string"},"isProductionDeployment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"deploymentVersion":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"deploymentTrigger":{"anyOf":[{"type":"string"},{"type":"null"}]},"archivedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","name","createdAt","updatedAt","status","buildStartedAt","buildCompletedAt","gitCommitSha","gitBranch","gitCommitMessage","serverId","isProductionDeployment","deploymentVersion","deploymentTrigger","archivedAt"]}},"_count":{"type":"object","properties":{"deployments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"mcpUrl":{"type":"string"},"dashboardUrl":{"type":"string"},"chatUrl":{"type":"string"},"gatewayDomain":{"type":"string"},"customDomainCnameTarget":{"type":"string"},"isExternal":{"type":"boolean"},"environments":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["production","branch"]},"label":{"type":"string"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"activeDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcpUrl":{"type":"string"},"dashboardUrl":{"type":"string"},"chatUrl":{"type":"string"},"slugGatewayHostname":{"type":"string"},"customDomains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"verified":{"type":"boolean"}},"required":["domain","verified"]}}},"required":["kind","label","branch","activeDeploymentId","mcpUrl","dashboardUrl","chatUrl","slugGatewayHostname","customDomains"]}}},"required":["id","slug","pendingSlug","name","description","tags","config","dashboardConnectionUrls","createdAt","updatedAt","slugRoutingDisabledAt","displayPreferences","status","activeDeploymentId","previousDeploymentId","connectedRepositoryId","externalUrl","publicRoutingMode","region","organizationId","userId","mcpUrl","dashboardUrl","chatUrl","gatewayDomain","customDomainCnameTarget","isExternal","environments"]}}},"required":["id","name","description","serverSlugs","userId","organizationId","createdAt","updatedAt","displayPreferences","servers"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Server Pools"],"description":"Create a new server pool. Optional serverIds connects M:N servers; serverSlugs is derived from those servers when serverIds is non-empty.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"serverSlugs":{"type":"array","items":{"type":"string"}},"organizationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"serverIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"icon":{"type":"string"},"color":{"type":"string"}},"required":["name","organizationId","displayPreferences","userId"]}}}}}},"/api/v1/server-pools/{id}":{"get":{"operationId":"getApiV1ServerPoolsById","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"serverSlugs":{"type":"array","items":{"type":"string"}},"userId":{"type":"string"},"organizationId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"servers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}},"config":{},"dashboardConnectionUrls":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"slugRoutingDisabledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"status":{"type":"string"},"activeDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"previousDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedRepositoryId":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"publicRoutingMode":{"type":"string","enum":["direct","gateway"]},"region":{"type":"string","enum":["AUTO","US","EU","APAC"]},"organizationId":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedRepository":{"type":"object","properties":{"id":{"type":"string"},"repoFullName":{"anyOf":[{"type":"string"},{"type":"null"}]},"githubRepoId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"productionBranch":{"type":"string"},"watchPaths":{"type":"array","items":{"type":"string"}},"deployBranchPatterns":{"type":"array","items":{"type":"string"}},"waitForCi":{"type":"boolean"},"pendingWebhookCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingWebhookBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingWebhookPrNumber":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pendingWebhookCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"isActive":{"type":"boolean"},"accessStatus":{"type":"string"},"accessCheckedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"accessReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"isManaged":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"userId":{"type":"string"},"githubInstallationId":{"type":"string"}},"required":["id","repoFullName","githubRepoId","productionBranch","watchPaths","deployBranchPatterns","waitForCi","pendingWebhookCommitSha","pendingWebhookBranch","pendingWebhookPrNumber","pendingWebhookCommitMessage","isActive","accessStatus","accessCheckedAt","accessReason","isManaged","createdAt","updatedAt","userId","githubInstallationId"]},"latestDeploymentStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"domains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"verified":{"type":"boolean"},"type":{"type":"string"},"pendingRemovalAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["domain","verified"]}},"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"status":{"type":"string"},"buildStartedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"buildCompletedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"gitCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"serverId":{"type":"string"},"isProductionDeployment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"deploymentVersion":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"deploymentTrigger":{"anyOf":[{"type":"string"},{"type":"null"}]},"archivedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","name","createdAt","updatedAt","status","buildStartedAt","buildCompletedAt","gitCommitSha","gitBranch","gitCommitMessage","serverId","isProductionDeployment","deploymentVersion","deploymentTrigger","archivedAt"]}},"_count":{"type":"object","properties":{"deployments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"mcpUrl":{"type":"string"},"dashboardUrl":{"type":"string"},"chatUrl":{"type":"string"},"gatewayDomain":{"type":"string"},"customDomainCnameTarget":{"type":"string"},"isExternal":{"type":"boolean"},"environments":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["production","branch"]},"label":{"type":"string"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"activeDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcpUrl":{"type":"string"},"dashboardUrl":{"type":"string"},"chatUrl":{"type":"string"},"slugGatewayHostname":{"type":"string"},"customDomains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"verified":{"type":"boolean"}},"required":["domain","verified"]}}},"required":["kind","label","branch","activeDeploymentId","mcpUrl","dashboardUrl","chatUrl","slugGatewayHostname","customDomains"]}}},"required":["id","slug","pendingSlug","name","description","tags","config","dashboardConnectionUrls","createdAt","updatedAt","slugRoutingDisabledAt","displayPreferences","status","activeDeploymentId","previousDeploymentId","connectedRepositoryId","externalUrl","publicRoutingMode","region","organizationId","userId","mcpUrl","dashboardUrl","chatUrl","gatewayDomain","customDomainCnameTarget","isExternal","environments"]}}},"required":["id","name","description","serverSlugs","userId","organizationId","createdAt","updatedAt","displayPreferences","servers"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Server Pools"],"description":"Get a single server pool by ID (includes linked servers)","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]},"patch":{"operationId":"patchApiV1ServerPoolsById","responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"serverSlugs":{"type":"array","items":{"type":"string"}},"userId":{"type":"string"},"organizationId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"servers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}},"config":{},"dashboardConnectionUrls":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"slugRoutingDisabledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"status":{"type":"string"},"activeDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"previousDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedRepositoryId":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"publicRoutingMode":{"type":"string","enum":["direct","gateway"]},"region":{"type":"string","enum":["AUTO","US","EU","APAC"]},"organizationId":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedRepository":{"type":"object","properties":{"id":{"type":"string"},"repoFullName":{"anyOf":[{"type":"string"},{"type":"null"}]},"githubRepoId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"productionBranch":{"type":"string"},"watchPaths":{"type":"array","items":{"type":"string"}},"deployBranchPatterns":{"type":"array","items":{"type":"string"}},"waitForCi":{"type":"boolean"},"pendingWebhookCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingWebhookBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"pendingWebhookPrNumber":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pendingWebhookCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"isActive":{"type":"boolean"},"accessStatus":{"type":"string"},"accessCheckedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"accessReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"isManaged":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"userId":{"type":"string"},"githubInstallationId":{"type":"string"}},"required":["id","repoFullName","githubRepoId","productionBranch","watchPaths","deployBranchPatterns","waitForCi","pendingWebhookCommitSha","pendingWebhookBranch","pendingWebhookPrNumber","pendingWebhookCommitMessage","isActive","accessStatus","accessCheckedAt","accessReason","isManaged","createdAt","updatedAt","userId","githubInstallationId"]},"latestDeploymentStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"domains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"verified":{"type":"boolean"},"type":{"type":"string"},"pendingRemovalAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["domain","verified"]}},"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"status":{"type":"string"},"buildStartedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"buildCompletedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"gitCommitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"gitCommitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"serverId":{"type":"string"},"isProductionDeployment":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"deploymentVersion":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"deploymentTrigger":{"anyOf":[{"type":"string"},{"type":"null"}]},"archivedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","name","createdAt","updatedAt","status","buildStartedAt","buildCompletedAt","gitCommitSha","gitBranch","gitCommitMessage","serverId","isProductionDeployment","deploymentVersion","deploymentTrigger","archivedAt"]}},"_count":{"type":"object","properties":{"deployments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"mcpUrl":{"type":"string"},"dashboardUrl":{"type":"string"},"chatUrl":{"type":"string"},"gatewayDomain":{"type":"string"},"customDomainCnameTarget":{"type":"string"},"isExternal":{"type":"boolean"},"environments":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["production","branch"]},"label":{"type":"string"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"activeDeploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcpUrl":{"type":"string"},"dashboardUrl":{"type":"string"},"chatUrl":{"type":"string"},"slugGatewayHostname":{"type":"string"},"customDomains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"verified":{"type":"boolean"}},"required":["domain","verified"]}}},"required":["kind","label","branch","activeDeploymentId","mcpUrl","dashboardUrl","chatUrl","slugGatewayHostname","customDomains"]}}},"required":["id","slug","pendingSlug","name","description","tags","config","dashboardConnectionUrls","createdAt","updatedAt","slugRoutingDisabledAt","displayPreferences","status","activeDeploymentId","previousDeploymentId","connectedRepositoryId","externalUrl","publicRoutingMode","region","organizationId","userId","mcpUrl","dashboardUrl","chatUrl","gatewayDomain","customDomainCnameTarget","isExternal","environments"]}}},"required":["id","name","description","serverSlugs","userId","organizationId","createdAt","updatedAt","displayPreferences","servers"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Server Pools"],"description":"Update a server pool. When serverIds is sent (including []), replaces M:N membership and syncs serverSlugs.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"serverSlugs":{"type":"array","items":{"type":"string"}},"displayPreferences":{"type":"object","properties":{"icon":{"type":"string"},"color":{"type":"string"},"inventory":{"type":"object","properties":{"tools":{"type":"integer","minimum":0,"maximum":9007199254740991},"prompts":{"type":"integer","minimum":0,"maximum":9007199254740991},"resources":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tools","prompts","resources"]},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}}}},"serverIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"icon":{"type":"string"},"color":{"type":"string"}}}}}}},"delete":{"operationId":"deleteApiV1ServerPoolsById","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Server Pools"],"description":"Delete a server pool","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/user-preferences":{"get":{"operationId":"getApiV1UserPreferences","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"},"defaultOrganizationId":{"anyOf":[{"type":"string"},{"type":"null"}]},"notifyDeploymentFailed":{"type":"boolean"},"dismissedProductTips":{"type":"object","propertyNames":{"type":"string","maxLength":100,"pattern":"^[a-z][a-z0-9]*(-[a-z0-9]+)*$"},"additionalProperties":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["userId","defaultOrganizationId","notifyDeploymentFailed","dismissedProductTips","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["User Preferences"],"description":"Get preferences for the current user"},"put":{"operationId":"putApiV1UserPreferences","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"},"defaultOrganizationId":{"anyOf":[{"type":"string"},{"type":"null"}]},"notifyDeploymentFailed":{"type":"boolean"},"dismissedProductTips":{"type":"object","propertyNames":{"type":"string","maxLength":100,"pattern":"^[a-z][a-z0-9]*(-[a-z0-9]+)*$"},"additionalProperties":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["userId","defaultOrganizationId","notifyDeploymentFailed","dismissedProductTips","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["User Preferences"],"description":"Create or update preferences for the current user","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"defaultOrganizationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"notifyDeploymentFailed":{"type":"boolean"}}}}}}}},"/api/v1/user-preferences/tips/{tipKey}":{"put":{"operationId":"putApiV1UserPreferencesTipsByTipKey","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"tipKey":{"type":"string","maxLength":100,"pattern":"^[a-z][a-z0-9]*(-[a-z0-9]+)*$"},"dismissedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["tipKey","dismissedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["User Preferences"],"description":"Dismiss one product tip for the current user. Retries preserve the first dismissal timestamp.","parameters":[{"in":"path","name":"tipKey","schema":{"type":"string","maxLength":100,"pattern":"^[a-z][a-z0-9]*(-[a-z0-9]+)*$"},"required":true}]},"delete":{"operationId":"deleteApiV1UserPreferencesTipsByTipKey","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":true}},"required":["success"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["User Preferences"],"description":"Restore one product tip for the current user without changing other preferences.","parameters":[{"in":"path","name":"tipKey","schema":{"type":"string","maxLength":100,"pattern":"^[a-z][a-z0-9]*(-[a-z0-9]+)*$"},"required":true}]}},"/api/v1/onboarding":{"post":{"operationId":"postApiV1Onboarding","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}},"required":["success"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Onboarding"],"description":"Save onboarding progress and optionally mark as completed","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"completed":{"type":"boolean"},"whatTryingToDo":{"type":"array","items":{"type":"string"}},"useCase":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"company":{"type":"string"},"companyWebsite":{"type":"string"},"companySize":{"type":"string"},"role":{"type":"string"},"fullName":{"type":"string"}}}}}}}},"/api/v1/organizations/{id}/analytics/tool-calls":{"get":{"operationId":"getApiV1OrganizationsByIdAnalyticsToolCalls","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["count"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Organizations"],"description":"Count of MCP tool calls across the org servers the caller can read since startTime (floored to the UTC day, plan retention clamped).","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"startTime","schema":{"type":"string","minLength":1},"required":true,"description":"ISO 8601 lower bound (inclusive)"}]}},"/api/v1/organizations/{id}/analytics/sessions":{"get":{"operationId":"getApiV1OrganizationsByIdAnalyticsSessions","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["count"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Organizations"],"description":"Distinct MCP sessions (interactions, approximate) across the org servers the caller can read since startTime (floored to the UTC day, plan retention clamped).","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"startTime","schema":{"type":"string","minLength":1},"required":true,"description":"ISO 8601 lower bound (inclusive)"}]}},"/api/v1/organizations/{id}/attention":{"get":{"operationId":"getApiV1OrganizationsByIdAttention","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"openItems":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"anyOf":[{"type":"string"},{"type":"null"}]},"serverName":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"type":"string"},"severity":{"type":"string","enum":["warning","error"]},"title":{"type":"string"},"description":{"type":"string"},"actionPath":{"type":"string"},"openedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","serverName","kind","severity","title","description","actionPath","openedAt","updatedAt"]}},"recentEvents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"itemId":{"type":"string"},"serverId":{"anyOf":[{"type":"string"},{"type":"null"}]},"serverName":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"type":"string"},"type":{"type":"string","enum":["opened","updated","resolved"]},"severity":{"type":"string","enum":["warning","error"]},"title":{"type":"string"},"description":{"type":"string"},"actionPath":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"read":{"type":"boolean"},"deliveryChannels":{"type":"array","items":{"type":"string","enum":["email","slack"]}}},"required":["id","itemId","serverId","serverName","kind","type","severity","title","description","actionPath","createdAt","read","deliveryChannels"]}},"unreadCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["openItems","recentEvents","unreadCount"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Organizations"],"description":"List open attention items and recent lifecycle events for an organization, including the current user's read state.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/organizations/{id}/attention/events/{eventId}/read":{"post":{"operationId":"postApiV1OrganizationsByIdAttentionEventsByEventIdRead","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Organizations"],"description":"Mark one organization attention event as read for the current user.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"eventId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/organizations/{id}/attention/read-all":{"post":{"operationId":"postApiV1OrganizationsByIdAttentionReadAll","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Organizations"],"description":"Mark all current organization attention events as read for the current user.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/organizations":{"get":{"operationId":"getApiV1Organizations","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"organizations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string","description":"URL slug used by the dashboard (`/cloud/{slug}`)."},"logo":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"companyWebsite":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"role":{"type":"string","description":"The caller's role: `owner`, `admin`, `member` or a custom role (comma-separated when several)."}},"required":["id","name","slug","logo","description","companyWebsite","createdAt","role"]}}},"required":["organizations"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Organizations"],"description":"List the organizations the authenticated user is a member of, with their role, sorted by name."},"post":{"operationId":"postApiV1Organizations","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string","description":"URL slug used by the dashboard (`/cloud/{slug}`)."},"logo":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"companyWebsite":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","name","slug","logo","description","companyWebsite","createdAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Organizations"],"description":"Create an organization owned by the authenticated user. The slug is generated from the name with a random suffix. The caller's active organization is left unchanged.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255,"description":"Display name. `<` and `>` are removed."},"description":{"description":"Short description. `<` and `>` are removed.","type":"string","maxLength":1024}},"required":["name"],"additionalProperties":false}}}}}},"/api/v1/organizations/{id}":{"patch":{"operationId":"patchApiV1OrganizationsById","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string","description":"URL slug used by the dashboard (`/cloud/{slug}`)."},"logo":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"companyWebsite":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","name","slug","logo","description","companyWebsite","createdAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Organizations"],"description":"Update an organization's name and/or description. Requires the `organization:update` permission.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"New display name. `<` and `>` are removed.","type":"string","minLength":1,"maxLength":255},"description":{"description":"New description; `null` or an empty string clears it.","anyOf":[{"type":"string","maxLength":1024},{"type":"null"}]}},"additionalProperties":false}}}}}},"/api/v1/organizations/{id}/members":{"get":{"operationId":"getApiV1OrganizationsByIdMembers","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"userId":{"type":"string"},"role":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","image"]}},"required":["id","organizationId","userId","role","createdAt","user"]}},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"skip":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","total","limit","skip"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Organizations"],"description":"List the members of an organization with their user profile, oldest first by default. Any member may list.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"take","schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"skip","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},{"in":"query","name":"sort","schema":{"type":"string"}}]}},"/api/v1/organizations/{id}/invitations":{"get":{"operationId":"getApiV1OrganizationsByIdInvitations","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"invitations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"email":{"type":"string"},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string","description":"`pending`, `accepted`, `rejected` or `canceled`. A pending invitation past `expiresAt` can no longer be accepted."},"inviterId":{"type":"string"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","organizationId","email","role","status","inviterId","expiresAt","createdAt"]}}},"required":["invitations"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Organizations"],"description":"List every invitation of an organization (all statuses), newest first. Any member may list.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]},"post":{"operationId":"postApiV1OrganizationsByIdInvitations","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"email":{"type":"string"},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string","description":"`pending`, `accepted`, `rejected` or `canceled`. A pending invitation past `expiresAt` can no longer be accepted."},"inviterId":{"type":"string"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","organizationId","email","role","status","inviterId","expiresAt","createdAt"]}}}},"400":{"description":"Validation error, or a Better Auth rejection such as `USER_IS_ALREADY_A_MEMBER_OF_THIS_ORGANIZATION`, `USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION` (retry with `resend: true`), `ROLE_NOT_FOUND` or `INVALID_EMAIL`.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Not a member, missing `invitation:create`, role not assignable by the caller, `INVITATION_LIMIT_REACHED`, or `PLAN_LIMIT_TEAM_MEMBERS` (body carries the paywall fields of `PlanLimitErrorResponse`).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Organizations"],"description":"Invite someone to an organization by email and send the invitation email. Requires the `invitation:create` permission. Callers cannot invite above their own role (only owners invite owners), and custom roles need the Enterprise plan. With `resend`, an existing pending invitation is extended and its email sent again.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"role":{"default":"member","description":"One role: `member`, `admin`, `owner` or a custom role of the organization.","type":"string","minLength":1,"maxLength":128,"pattern":"^[^,]+$"},"resend":{"default":false,"description":"When the email already has a pending invitation, extend it and send the email again instead of failing.","type":"boolean"}},"required":["email"],"additionalProperties":false}}}}}},"/api/v1/organizations/{id}/invitations/{invitationId}/cancel":{"post":{"operationId":"postApiV1OrganizationsByIdInvitationsByInvitationIdCancel","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"email":{"type":"string"},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string","description":"`pending`, `accepted`, `rejected` or `canceled`. A pending invitation past `expiresAt` can no longer be accepted."},"inviterId":{"type":"string"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","organizationId","email","role","status","inviterId","expiresAt","createdAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Organizations"],"description":"Cancel an invitation of the organization. Requires the `invitation:cancel` permission. Returns the canceled invitation.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"invitationId","schema":{"type":"string","minLength":1,"maxLength":128},"required":true}]}},"/api/v1/organizations/{id}/logo":{"post":{"operationId":"postApiV1OrganizationsByIdLogo","responses":{"200":{"description":"Logo uploaded","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Organizations"],"description":"Upload or replace the organization logo. Accepts multipart/form-data with a single `file` field (PNG, JPEG, WebP, GIF; max 2 MB). Returns the public URL of the uploaded image.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary"}}}}}}}},"/api/v1/billing/{id}":{"get":{"operationId":"getApiV1BillingById","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"plan":{"type":"object","properties":{"name":{"type":"string"},"tier":{"type":"string","enum":["free","hobby","startup","enterprise","custom"]},"displayName":{"type":"string"},"interval":{"anyOf":[{"type":"string","enum":["monthly","yearly"]},{"type":"null"}]},"limits":{"type":"object","properties":{"projects":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string","const":"unlimited"}]},"requestsPerMonth":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string","const":"unlimited"}]},"analyticsDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string","const":"unlimited"}]},"regions":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"string","const":"all"}]},"previewDeploys":{"type":"boolean"},"githubOrgDeployAllowed":{"type":"boolean"},"coldStart":{"type":"boolean"},"teamMembers":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string","const":"unlimited"}]},"support":{"type":"string","enum":["community","email","slack","priority"]}},"required":["projects","requestsPerMonth","analyticsDays","regions","previewDeploys","githubOrgDeployAllowed","coldStart","teamMembers","support"]},"features":{"type":"array","items":{"type":"string"}}},"required":["name","tier","displayName","interval","limits","features"]},"effectiveLimits":{"type":"object","properties":{"projects":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string","const":"unlimited"}]},"requestsPerMonth":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string","const":"unlimited"}]},"analyticsDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string","const":"unlimited"}]},"regions":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"string","const":"all"}]},"previewDeploys":{"type":"boolean"},"githubOrgDeployAllowed":{"type":"boolean"},"coldStart":{"type":"boolean"},"teamMembers":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string","const":"unlimited"}]},"support":{"type":"string","enum":["community","email","slack","priority"]}},"required":["projects","requestsPerMonth","analyticsDays","regions","previewDeploys","githubOrgDeployAllowed","coldStart","teamMembers","support"]},"features":{"type":"array","items":{"type":"string"}},"subscription":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"periodStart":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"periodEnd":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"cancelAtPeriodEnd":{"type":"boolean"},"cancelAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"billingInterval":{"anyOf":[{"type":"string"},{"type":"null"}]},"stripeSubscriptionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status","periodStart","periodEnd","cancelAtPeriodEnd","cancelAt","billingInterval","stripeSubscriptionId"]},{"type":"null"}]},"usage":{"type":"object","properties":{"projects":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requestsThisPeriod":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"periodStart":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"periodEnd":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]}},"required":["projects","requestsThisPeriod","periodStart","periodEnd"]},"creditBalance":{"anyOf":[{"type":"object","properties":{"granted":{"anyOf":[{"type":"number"},{"type":"null"}]},"remaining":{"anyOf":[{"type":"number"},{"type":"null"}]},"usage":{"anyOf":[{"type":"number"},{"type":"null"}]},"unlimited":{"type":"boolean"}},"required":["granted","remaining","usage","unlimited"]},{"type":"null"}]},"platformCredits":{"anyOf":[{"type":"object","properties":{"remainingCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["remainingCents"]},{"type":"null"}]}},"required":["plan","effectiveLimits","features","subscription","usage","creditBalance","platformCredits"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Billing"],"description":"Summary of the org's current plan, effective entitlements (base plan + active add-ons), subscription state, and current-period usage.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/billing/{id}/portal":{"post":{"operationId":"postApiV1BillingByIdPortal","responses":{"200":{"description":"Portal session created","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Billing"],"description":"Create a Stripe Billing Portal session for the org and return its redirect URL. Requires org membership.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"returnUrl":{"type":"string","format":"uri"}},"required":["returnUrl"]}}}}}},"/api/v1/billing/{id}/cancel-subscription":{"post":{"operationId":"postApiV1BillingByIdCancelSubscription","responses":{"200":{"description":"Subscription cancellation scheduled","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"cancelAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]}},"required":["ok","cancelAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Billing"],"description":"Schedule cancellation at period end and record the customer's reason.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","enum":["too_expensive","missing_features","unused","switched_service","too_complex"]},"comment":{"type":"string","maxLength":500}},"required":["reason"]}}}}}},"/api/v1/billing/{id}/spend-limit":{"post":{"operationId":"postApiV1BillingByIdSpendLimit","responses":{"200":{"description":"Spend limit updated","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true}},"required":["ok"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Billing"],"description":"Set or clear the org's overage spend limit (USD) on the credit pool. Admin/owner only.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"limitUsd":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]}},"required":["limitUsd"]}}}}},"get":{"operationId":"getApiV1BillingByIdSpendLimit","responses":{"200":{"description":"Current spend limit","content":{"application/json":{"schema":{"type":"object","properties":{"limitUsd":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]}},"required":["limitUsd"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Billing"],"description":"Get the org's current overage spend limit (USD) on the credit pool. Admin/owner only.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/plan-catalog":{"get":{"operationId":"getApiV1PlanCatalog","tags":["Billing"],"description":"Public catalog of available plans. Returns two views of the same data: `plans` is a flat array (one row per active Price; convenient for monthly/yearly toggle UIs) and `catalog` is a Plan-grouped array (one entry per Plan with all of its prices + entitlement keys nested).","responses":{"200":{"description":"Public plan catalog","content":{"application/json":{"schema":{"type":"object","properties":{"plans":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"tier":{"type":"string","enum":["free","hobby","startup","enterprise","custom"]},"displayName":{"type":"string"},"interval":{"anyOf":[{"type":"string","enum":["monthly","yearly"]},{"type":"null"}]},"priceId":{"anyOf":[{"type":"string"},{"type":"null"}]},"limits":{"type":"object","properties":{"projects":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string","const":"unlimited"}]},"requestsPerMonth":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string","const":"unlimited"}]},"analyticsDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string","const":"unlimited"}]},"regions":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"string","const":"all"}]},"previewDeploys":{"type":"boolean"},"githubOrgDeployAllowed":{"type":"boolean"},"coldStart":{"type":"boolean"},"teamMembers":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string","const":"unlimited"}]},"support":{"type":"string","enum":["community","email","slack","priority"]}},"required":["projects","requestsPerMonth","analyticsDays","regions","previewDeploys","githubOrgDeployAllowed","coldStart","teamMembers","support"]},"features":{"type":"array","items":{"type":"string"}}},"required":["name","tier","displayName","interval","priceId","limits","features"]}},"catalog":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"lookupKey":{"type":"string"},"displayName":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"tier":{"type":"string","enum":["free","hobby","startup","enterprise","custom"]},"isPublic":{"type":"boolean"},"limits":{"type":"object","properties":{"projects":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string","const":"unlimited"}]},"requestsPerMonth":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string","const":"unlimited"}]},"analyticsDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string","const":"unlimited"}]},"regions":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"string","const":"all"}]},"previewDeploys":{"type":"boolean"},"githubOrgDeployAllowed":{"type":"boolean"},"coldStart":{"type":"boolean"},"teamMembers":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string","const":"unlimited"}]},"support":{"type":"string","enum":["community","email","slack","priority"]}},"required":["projects","requestsPerMonth","analyticsDays","regions","previewDeploys","githubOrgDeployAllowed","coldStart","teamMembers","support"]},"features":{"type":"array","items":{"type":"object","properties":{"lookupKey":{"type":"string"},"name":{"type":"string"},"metadata":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"boolean"}},"required":["kind"]},{"type":"object","properties":{"kind":{"type":"string","const":"limit"},"limit":{"type":"string","enum":["projects","requestsPerMonth","analyticsDays","teamMembers"]},"value":{"anyOf":[{"type":"number"},{"type":"string","const":"unlimited"}]}},"required":["kind","limit","value"]},{"type":"object","properties":{"kind":{"type":"string","const":"region"},"region":{"type":"string"}},"required":["kind","region"]},{"type":"object","properties":{"kind":{"type":"string","const":"scalar"},"scalar":{"type":"string","const":"support"},"value":{"type":"string","enum":["community","email","slack","priority"]}},"required":["kind","scalar","value"]}]}},"required":["lookupKey","name","metadata"]}},"prices":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"lookupKey":{"anyOf":[{"type":"string"},{"type":"null"}]},"currency":{"type":"string"},"unitAmount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"interval":{"anyOf":[{"type":"string","enum":["monthly","yearly"]},{"type":"null"}]}},"required":["id","lookupKey","currency","unitAmount","interval"]}},"display":{"anyOf":[{"type":"object","properties":{"subtitle":{"anyOf":[{"type":"string"},{"type":"null"}]},"highlighted":{"type":"boolean"},"priceNote":{"anyOf":[{"type":"string"},{"type":"null"}]},"cardFeatures":{"type":"array","items":{"type":"string"}},"prices":{"type":"object","properties":{"monthly":{"anyOf":[{"type":"number"},{"type":"string","const":"Custom"}]},"yearly":{"anyOf":[{"type":"number"},{"type":"string","const":"Custom"}]}},"required":["monthly","yearly"]},"usage":{"anyOf":[{"type":"object","properties":{"includedCredits":{"type":"string"},"payAsYouGo":{"type":"boolean"},"summary":{"type":"string"}},"required":["includedCredits","payAsYouGo","summary"]},{"type":"null"}]}},"required":["subtitle","highlighted","priceNote","cardFeatures","prices","usage"]},{"type":"null"}]}},"required":["id","lookupKey","displayName","description","tier","isPublic","limits","features","prices","display"]}},"comparisonSections":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"features":{"type":"array","items":{"type":"object","properties":{"feature":{"type":"string"},"free":{"anyOf":[{"type":"string"},{"type":"boolean"}]},"hobby":{"anyOf":[{"type":"string"},{"type":"boolean"}]},"startup":{"anyOf":[{"type":"string"},{"type":"boolean"}]},"enterprise":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"required":["feature","free","hobby","startup","enterprise"]}}},"required":["title","features"]}},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["plans","catalog","comparisonSections","generatedAt"]}}}}}}},"/api/v1/permissions/catalog":{"get":{"operationId":"getApiV1PermissionsCatalog","tags":["Permissions"],"description":"Permission resources and default org role grants","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","items":{"type":"object","properties":{"resource":{"type":"string"},"label":{"type":"string"},"group":{"type":"string"},"description":{"type":"string"},"internal":{"type":"boolean"},"actions":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"}},"required":["key","label"]}}},"required":["resource","label","group","actions"]}},"defaultRoles":{"type":"object","properties":{"member":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"admin":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"owner":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}}},"required":["member","admin","owner"]}},"required":["resources","defaultRoles"]}}}}}}},"/api/v1/models":{"get":{"operationId":"getApiV1Models","tags":["Models"],"description":"List available tool-capable LLM models from OpenRouter, ordered by weekly popularity.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"models":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"provider":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"contextLength":{"anyOf":[{"type":"number"},{"type":"null"}]},"supportsTools":{"type":"boolean"},"pricing":{"anyOf":[{"type":"object","properties":{"prompt":{"anyOf":[{"type":"number"},{"type":"null"}]},"completion":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["prompt","completion"]},{"type":"null"}]}},"required":["id","name","provider","description","contextLength","supportsTools","pricing"]}},"cachedAt":{"type":"string"},"defaultModelId":{"type":"string"}},"required":["models","cachedAt","defaultModelId"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}}}},"/api/v1/server-evals/{serverId}/suites":{"get":{"operationId":"getApiV1ServerEvalsByServerIdSuites","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"createdBy":{"type":"string"},"name":{"type":"string"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"flow":{},"rubric":{"anyOf":[{"type":"string"},{"type":"null"}]},"threshold":{"type":"number","minimum":-140737488355328,"maximum":140737488355327},"requiredTools":{},"disallowedTools":{},"models":{},"toolNames":{},"runOn":{},"enabled":{"type":"boolean"},"clientTargets":{},"clientSettings":{},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"runs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"suiteId":{"type":"string"},"serverId":{"type":"string"},"createdBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"serverUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"environmentBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"impersonated":{"type":"boolean"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"flow":{},"messages":{},"requiredTools":{},"toolNames":{},"score":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pass":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"scenarios":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"runId":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"flow":{},"messages":{},"requiredTools":{},"toolNames":{},"inputArgs":{},"assertions":{},"sortOrder":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"executions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"scenarioId":{"type":"string"},"client":{"type":"string"},"modelName":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"durationMs":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"screenshots":{},"videoUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"screenshotUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"agentResponse":{},"toolCalls":{},"conversation":{},"assertionResults":{},"score":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pass":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"rubricPassed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"toolsPassed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"judgement":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgeModel":{"anyOf":[{"type":"string"},{"type":"null"}]},"executorRunId":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgeRunId":{"anyOf":[{"type":"string"},{"type":"null"}]},"executionStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgingStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"runtimeConfig":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"usage":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"traceManifest":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"judgeVerdict":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"runtimeDiagnostics":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"toolAssertions":{},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","scenarioId","client","modelName","status","startedAt","completedAt","durationMs","error","screenshots","videoUrl","screenshotUrl","agentResponse","toolCalls","conversation","assertionResults","score","pass","rubricPassed","toolsPassed","judgement","judgeModel","executorRunId","judgeRunId","executionStatus","judgingStatus","runtimeConfig","usage","traceManifest","judgeVerdict","runtimeDiagnostics","toolAssertions","createdAt","updatedAt"]}}},"required":["id","runId","type","name","description","prompt","flow","messages","requiredTools","toolNames","inputArgs","assertions","sortOrder","createdAt","updatedAt"]}}},"required":["id","suiteId","serverId","createdBy","status","serverUrl","environmentBranch","impersonated","prompt","flow","messages","requiredTools","toolNames","score","pass","startedAt","completedAt","createdAt","updatedAt"]}}},"required":["id","serverId","createdBy","name","prompt","flow","rubric","threshold","requiredTools","disallowedTools","models","toolNames","runOn","enabled","clientTargets","clientSettings","createdAt","updatedAt"]}}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerEvals"],"description":"List all eval suites for a server, each with its latest run.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string","minLength":1},"required":true}]},"post":{"operationId":"postApiV1ServerEvalsByServerIdSuites","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"createdBy":{"type":"string"},"name":{"type":"string"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"flow":{},"rubric":{"anyOf":[{"type":"string"},{"type":"null"}]},"threshold":{"type":"number","minimum":-140737488355328,"maximum":140737488355327},"requiredTools":{},"disallowedTools":{},"models":{},"toolNames":{},"runOn":{},"enabled":{"type":"boolean"},"clientTargets":{},"clientSettings":{},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"runs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"suiteId":{"type":"string"},"serverId":{"type":"string"},"createdBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"serverUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"environmentBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"impersonated":{"type":"boolean"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"flow":{},"messages":{},"requiredTools":{},"toolNames":{},"score":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pass":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"scenarios":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"runId":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"flow":{},"messages":{},"requiredTools":{},"toolNames":{},"inputArgs":{},"assertions":{},"sortOrder":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"executions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"scenarioId":{"type":"string"},"client":{"type":"string"},"modelName":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"durationMs":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"screenshots":{},"videoUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"screenshotUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"agentResponse":{},"toolCalls":{},"conversation":{},"assertionResults":{},"score":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pass":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"rubricPassed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"toolsPassed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"judgement":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgeModel":{"anyOf":[{"type":"string"},{"type":"null"}]},"executorRunId":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgeRunId":{"anyOf":[{"type":"string"},{"type":"null"}]},"executionStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgingStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"runtimeConfig":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"usage":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"traceManifest":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"judgeVerdict":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"runtimeDiagnostics":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"toolAssertions":{},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","scenarioId","client","modelName","status","startedAt","completedAt","durationMs","error","screenshots","videoUrl","screenshotUrl","agentResponse","toolCalls","conversation","assertionResults","score","pass","rubricPassed","toolsPassed","judgement","judgeModel","executorRunId","judgeRunId","executionStatus","judgingStatus","runtimeConfig","usage","traceManifest","judgeVerdict","runtimeDiagnostics","toolAssertions","createdAt","updatedAt"]}}},"required":["id","runId","type","name","description","prompt","flow","messages","requiredTools","toolNames","inputArgs","assertions","sortOrder","createdAt","updatedAt"]}}},"required":["id","suiteId","serverId","createdBy","status","serverUrl","environmentBranch","impersonated","prompt","flow","messages","requiredTools","toolNames","score","pass","startedAt","completedAt","createdAt","updatedAt"]}}},"required":["id","serverId","createdBy","name","prompt","flow","rubric","threshold","requiredTools","disallowedTools","models","toolNames","runOn","enabled","clientTargets","clientSettings","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerEvals"],"description":"Create a new eval suite for a server.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string","minLength":1},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"prompt":{"type":"string","maxLength":10000},"flow":{"default":[],"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"user"},"content":{"type":"string"}},"required":["kind","content"]},{"type":"object","properties":{"kind":{"type":"string","const":"tool_call"},"name":{"type":"string"},"args":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["kind","name"]},{"type":"object","properties":{"kind":{"type":"string","const":"assistant_text"},"note":{"type":"string"}},"required":["kind"]}]}},"rubric":{"type":"string","maxLength":10000},"threshold":{"default":0.7,"type":"number","minimum":0,"maximum":1},"requiredTools":{"default":[],"type":"array","items":{}},"disallowedTools":{"default":[],"type":"array","items":{"type":"string"}},"models":{"default":["openai/gpt-4o"],"type":"array","items":{"type":"string"}},"toolNames":{"default":[],"type":"array","items":{"type":"string"}},"runOn":{"default":["manual"],"type":"array","items":{"type":"string","enum":["manual","ci","cron"]}},"clientTargets":{"default":["inspector"],"type":"array","items":{"type":"string"}},"clientSettings":{}},"required":["name"]}}}}}},"/api/v1/server-evals/{serverId}/suites/{suiteId}":{"get":{"operationId":"getApiV1ServerEvalsByServerIdSuitesBySuiteId","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"createdBy":{"type":"string"},"name":{"type":"string"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"flow":{},"rubric":{"anyOf":[{"type":"string"},{"type":"null"}]},"threshold":{"type":"number","minimum":-140737488355328,"maximum":140737488355327},"requiredTools":{},"disallowedTools":{},"models":{},"toolNames":{},"runOn":{},"enabled":{"type":"boolean"},"clientTargets":{},"clientSettings":{},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"runs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"suiteId":{"type":"string"},"serverId":{"type":"string"},"createdBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"serverUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"environmentBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"impersonated":{"type":"boolean"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"flow":{},"messages":{},"requiredTools":{},"toolNames":{},"score":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pass":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"scenarios":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"runId":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"flow":{},"messages":{},"requiredTools":{},"toolNames":{},"inputArgs":{},"assertions":{},"sortOrder":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"executions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"scenarioId":{"type":"string"},"client":{"type":"string"},"modelName":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"durationMs":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"screenshots":{},"videoUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"screenshotUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"agentResponse":{},"toolCalls":{},"conversation":{},"assertionResults":{},"score":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pass":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"rubricPassed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"toolsPassed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"judgement":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgeModel":{"anyOf":[{"type":"string"},{"type":"null"}]},"executorRunId":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgeRunId":{"anyOf":[{"type":"string"},{"type":"null"}]},"executionStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgingStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"runtimeConfig":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"usage":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"traceManifest":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"judgeVerdict":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"runtimeDiagnostics":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"toolAssertions":{},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","scenarioId","client","modelName","status","startedAt","completedAt","durationMs","error","screenshots","videoUrl","screenshotUrl","agentResponse","toolCalls","conversation","assertionResults","score","pass","rubricPassed","toolsPassed","judgement","judgeModel","executorRunId","judgeRunId","executionStatus","judgingStatus","runtimeConfig","usage","traceManifest","judgeVerdict","runtimeDiagnostics","toolAssertions","createdAt","updatedAt"]}}},"required":["id","runId","type","name","description","prompt","flow","messages","requiredTools","toolNames","inputArgs","assertions","sortOrder","createdAt","updatedAt"]}}},"required":["id","suiteId","serverId","createdBy","status","serverUrl","environmentBranch","impersonated","prompt","flow","messages","requiredTools","toolNames","score","pass","startedAt","completedAt","createdAt","updatedAt"]}}},"required":["id","serverId","createdBy","name","prompt","flow","rubric","threshold","requiredTools","disallowedTools","models","toolNames","runOn","enabled","clientTargets","clientSettings","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerEvals"],"description":"Get one eval suite for a server, with its latest run.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"suiteId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]},"patch":{"operationId":"patchApiV1ServerEvalsByServerIdSuitesBySuiteId","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"createdBy":{"type":"string"},"name":{"type":"string"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"flow":{},"rubric":{"anyOf":[{"type":"string"},{"type":"null"}]},"threshold":{"type":"number","minimum":-140737488355328,"maximum":140737488355327},"requiredTools":{},"disallowedTools":{},"models":{},"toolNames":{},"runOn":{},"enabled":{"type":"boolean"},"clientTargets":{},"clientSettings":{},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"runs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"suiteId":{"type":"string"},"serverId":{"type":"string"},"createdBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"serverUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"environmentBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"impersonated":{"type":"boolean"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"flow":{},"messages":{},"requiredTools":{},"toolNames":{},"score":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pass":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"scenarios":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"runId":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"flow":{},"messages":{},"requiredTools":{},"toolNames":{},"inputArgs":{},"assertions":{},"sortOrder":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"executions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"scenarioId":{"type":"string"},"client":{"type":"string"},"modelName":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"durationMs":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"screenshots":{},"videoUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"screenshotUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"agentResponse":{},"toolCalls":{},"conversation":{},"assertionResults":{},"score":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pass":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"rubricPassed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"toolsPassed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"judgement":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgeModel":{"anyOf":[{"type":"string"},{"type":"null"}]},"executorRunId":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgeRunId":{"anyOf":[{"type":"string"},{"type":"null"}]},"executionStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgingStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"runtimeConfig":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"usage":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"traceManifest":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"judgeVerdict":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"runtimeDiagnostics":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"toolAssertions":{},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","scenarioId","client","modelName","status","startedAt","completedAt","durationMs","error","screenshots","videoUrl","screenshotUrl","agentResponse","toolCalls","conversation","assertionResults","score","pass","rubricPassed","toolsPassed","judgement","judgeModel","executorRunId","judgeRunId","executionStatus","judgingStatus","runtimeConfig","usage","traceManifest","judgeVerdict","runtimeDiagnostics","toolAssertions","createdAt","updatedAt"]}}},"required":["id","runId","type","name","description","prompt","flow","messages","requiredTools","toolNames","inputArgs","assertions","sortOrder","createdAt","updatedAt"]}}},"required":["id","suiteId","serverId","createdBy","status","serverUrl","environmentBranch","impersonated","prompt","flow","messages","requiredTools","toolNames","score","pass","startedAt","completedAt","createdAt","updatedAt"]}}},"required":["id","serverId","createdBy","name","prompt","flow","rubric","threshold","requiredTools","disallowedTools","models","toolNames","runOn","enabled","clientTargets","clientSettings","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerEvals"],"description":"Update an eval suite.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"suiteId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"prompt":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}]},"flow":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"user"},"content":{"type":"string"}},"required":["kind","content"]},{"type":"object","properties":{"kind":{"type":"string","const":"tool_call"},"name":{"type":"string"},"args":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["kind","name"]},{"type":"object","properties":{"kind":{"type":"string","const":"assistant_text"},"note":{"type":"string"}},"required":["kind"]}]}},"rubric":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}]},"threshold":{"type":"number","minimum":0,"maximum":1},"requiredTools":{"type":"array","items":{}},"disallowedTools":{"type":"array","items":{"type":"string"}},"models":{"type":"array","items":{"type":"string"}},"toolNames":{"type":"array","items":{"type":"string"}},"runOn":{"type":"array","items":{"type":"string","enum":["manual","ci","cron"]}},"clientTargets":{"type":"array","items":{"type":"string"}},"clientSettings":{},"enabled":{"type":"boolean"}}}}}}},"delete":{"operationId":"deleteApiV1ServerEvalsByServerIdSuitesBySuiteId","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerEvals"],"description":"Delete an eval suite, its runs, and cancel any in-flight BullMQ eval jobs.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"suiteId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/server-evals/{serverId}/suites/bulk-delete":{"post":{"operationId":"postApiV1ServerEvalsByServerIdSuitesBulkDelete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"integer","minimum":0,"maximum":9007199254740991},"killedJobs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["deleted","killedJobs"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerEvals"],"description":"Delete many eval suites at once. Cascade-removes their runs/scenarios/executions and cancels any in-flight BullMQ eval jobs.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string","minLength":1},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["ids"]}}}}}},"/api/v1/server-evals/{serverId}/suites/{suiteId}/runs":{"post":{"operationId":"postApiV1ServerEvalsByServerIdSuitesBySuiteIdRuns","responses":{"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"suiteId":{"type":"string"},"serverId":{"type":"string"},"createdBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"serverUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"environmentBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"impersonated":{"type":"boolean"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"flow":{},"messages":{},"requiredTools":{},"toolNames":{},"score":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pass":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"scenarios":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"runId":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"flow":{},"messages":{},"requiredTools":{},"toolNames":{},"inputArgs":{},"assertions":{},"sortOrder":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"executions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"scenarioId":{"type":"string"},"client":{"type":"string"},"modelName":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"durationMs":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"screenshots":{},"videoUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"screenshotUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"agentResponse":{},"toolCalls":{},"conversation":{},"assertionResults":{},"score":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pass":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"rubricPassed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"toolsPassed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"judgement":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgeModel":{"anyOf":[{"type":"string"},{"type":"null"}]},"executorRunId":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgeRunId":{"anyOf":[{"type":"string"},{"type":"null"}]},"executionStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgingStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"runtimeConfig":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"usage":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"traceManifest":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"judgeVerdict":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"runtimeDiagnostics":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"toolAssertions":{},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","scenarioId","client","modelName","status","startedAt","completedAt","durationMs","error","screenshots","videoUrl","screenshotUrl","agentResponse","toolCalls","conversation","assertionResults","score","pass","rubricPassed","toolsPassed","judgement","judgeModel","executorRunId","judgeRunId","executionStatus","judgingStatus","runtimeConfig","usage","traceManifest","judgeVerdict","runtimeDiagnostics","toolAssertions","createdAt","updatedAt"]}}},"required":["id","runId","type","name","description","prompt","flow","messages","requiredTools","toolNames","inputArgs","assertions","sortOrder","createdAt","updatedAt"]}}},"required":["id","suiteId","serverId","createdBy","status","serverUrl","environmentBranch","impersonated","prompt","flow","messages","requiredTools","toolNames","score","pass","startedAt","completedAt","createdAt","updatedAt"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerEvals"],"description":"Trigger a new eval run for a suite. Returns 202 while the run executes in the background.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"suiteId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"branch","schema":{"type":"string","maxLength":255}},{"in":"query","name":"client","schema":{"type":"string","enum":["chatgpt","codex","both"]}}]}},"/api/v1/server-evals/{serverId}/runs":{"get":{"operationId":"getApiV1ServerEvalsByServerIdRuns","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"suiteId":{"type":"string"},"serverId":{"type":"string"},"createdBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"serverUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"environmentBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"impersonated":{"type":"boolean"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"flow":{},"messages":{},"requiredTools":{},"toolNames":{},"score":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pass":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"scenarios":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"runId":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"flow":{},"messages":{},"requiredTools":{},"toolNames":{},"inputArgs":{},"assertions":{},"sortOrder":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"executions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"scenarioId":{"type":"string"},"client":{"type":"string"},"modelName":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"durationMs":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"screenshots":{},"videoUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"screenshotUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"agentResponse":{},"toolCalls":{},"conversation":{},"assertionResults":{},"score":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pass":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"rubricPassed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"toolsPassed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"judgement":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgeModel":{"anyOf":[{"type":"string"},{"type":"null"}]},"executorRunId":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgeRunId":{"anyOf":[{"type":"string"},{"type":"null"}]},"executionStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgingStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"runtimeConfig":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"usage":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"traceManifest":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"judgeVerdict":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"runtimeDiagnostics":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"toolAssertions":{},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","scenarioId","client","modelName","status","startedAt","completedAt","durationMs","error","screenshots","videoUrl","screenshotUrl","agentResponse","toolCalls","conversation","assertionResults","score","pass","rubricPassed","toolsPassed","judgement","judgeModel","executorRunId","judgeRunId","executionStatus","judgingStatus","runtimeConfig","usage","traceManifest","judgeVerdict","runtimeDiagnostics","toolAssertions","createdAt","updatedAt"]}}},"required":["id","runId","type","name","description","prompt","flow","messages","requiredTools","toolNames","inputArgs","assertions","sortOrder","createdAt","updatedAt"]}}},"required":["id","suiteId","serverId","createdBy","status","serverUrl","environmentBranch","impersonated","prompt","flow","messages","requiredTools","toolNames","score","pass","startedAt","completedAt","createdAt","updatedAt"]}},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"skip":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","total","limit","skip"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerEvals"],"description":"List eval runs for a server. Optional filter by suiteId.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string","minLength":1},"required":true},{"in":"query","name":"activeOnly","schema":{"type":"string","enum":["true","false"]}},{"in":"query","name":"suiteId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"take","schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"skip","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},{"in":"query","name":"sort","schema":{"type":"string"}}]}},"/api/v1/server-evals/{serverId}/runs/{runId}":{"get":{"operationId":"getApiV1ServerEvalsByServerIdRunsByRunId","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"suiteId":{"type":"string"},"serverId":{"type":"string"},"createdBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"serverUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"environmentBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"impersonated":{"type":"boolean"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"flow":{},"messages":{},"requiredTools":{},"toolNames":{},"score":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pass":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"scenarios":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"runId":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"flow":{},"messages":{},"requiredTools":{},"toolNames":{},"inputArgs":{},"assertions":{},"sortOrder":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"executions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"scenarioId":{"type":"string"},"client":{"type":"string"},"modelName":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"durationMs":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"screenshots":{},"videoUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"screenshotUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"agentResponse":{},"toolCalls":{},"conversation":{},"assertionResults":{},"score":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"pass":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"rubricPassed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"toolsPassed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"judgement":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgeModel":{"anyOf":[{"type":"string"},{"type":"null"}]},"executorRunId":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgeRunId":{"anyOf":[{"type":"string"},{"type":"null"}]},"executionStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgingStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"runtimeConfig":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"usage":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"traceManifest":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"judgeVerdict":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"runtimeDiagnostics":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"toolAssertions":{},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","scenarioId","client","modelName","status","startedAt","completedAt","durationMs","error","screenshots","videoUrl","screenshotUrl","agentResponse","toolCalls","conversation","assertionResults","score","pass","rubricPassed","toolsPassed","judgement","judgeModel","executorRunId","judgeRunId","executionStatus","judgingStatus","runtimeConfig","usage","traceManifest","judgeVerdict","runtimeDiagnostics","toolAssertions","createdAt","updatedAt"]}}},"required":["id","runId","type","name","description","prompt","flow","messages","requiredTools","toolNames","inputArgs","assertions","sortOrder","createdAt","updatedAt"]}}},"required":["id","suiteId","serverId","createdBy","status","serverUrl","environmentBranch","impersonated","prompt","flow","messages","requiredTools","toolNames","score","pass","startedAt","completedAt","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerEvals"],"description":"Get a single eval run with all scenarios and executions.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"runId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]},"delete":{"operationId":"deleteApiV1ServerEvalsByServerIdRunsByRunId","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerEvals"],"description":"Delete an eval run and cancel its BullMQ job if still in-flight.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"runId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/server-evals/{serverId}/runs/bulk-delete":{"post":{"operationId":"postApiV1ServerEvalsByServerIdRunsBulkDelete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"integer","minimum":0,"maximum":9007199254740991},"killedJobs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["deleted","killedJobs"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerEvals"],"description":"Delete many eval runs at once. Also cancels any in-flight BullMQ jobs attached to them.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string","minLength":1},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["ids"]}}}}}},"/api/v1/server-evals/{serverId}/executions/bulk-delete":{"post":{"operationId":"postApiV1ServerEvalsByServerIdExecutionsBulkDelete","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"integer","minimum":0,"maximum":9007199254740991},"killedJobs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["deleted","killedJobs"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerEvals"],"description":"Delete selected executions and cancel only their jobs.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string","minLength":1},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["ids"]}}}}}},"/api/v1/server-evals/{serverId}/runs/{runId}/cancel":{"post":{"operationId":"postApiV1ServerEvalsByServerIdRunsByRunIdCancel","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"jobExisted":{"type":"boolean"},"previousJobState":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["success","jobExisted","previousJobState"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerEvals"],"description":"Cancel unfinished eval executions: remove queued jobs, signal active browser and agent jobs, and preserve completed results.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"runId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/server-evals/{serverId}/runtime-options":{"get":{"operationId":"getApiV1ServerEvalsByServerIdRuntimeOptions","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"defaultJudge":{"type":"object","properties":{"harness":{"type":"string","enum":["pi","codex","claude-code","cursor"]},"model":{"type":"string","minLength":1,"maxLength":200},"label":{"type":"string"},"provider":{"type":"string","enum":["openrouter","openai","anthropic","cursor"]},"settings":{"type":"object","properties":{"toolSearch":{"type":"boolean"}},"additionalProperties":false}},"required":["harness","model"],"additionalProperties":false},"harnesses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["pi","codex","claude-code","cursor"]},"label":{"type":"string"},"available":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"models":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string","enum":["openrouter","openai","anthropic","cursor"]},"model":{"type":"string"},"label":{"type":"string"}},"required":["provider","model","label"]}},"capabilities":{"type":"object","properties":{"mcp":{"type":"boolean"},"multiTurn":{"type":"boolean"},"traces":{"type":"boolean"},"sandbox":{"type":"boolean"}},"required":["mcp","multiTurn","traces","sandbox"]},"limitations":{"type":"array","items":{"type":"string"}}},"required":["id","label","available","reason","models","capabilities","limitations"]}}},"required":["defaultJudge","harnesses"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerEvals"],"description":"Sandbox harness compatibility and credential readiness.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string","minLength":1},"required":true}]}},"/api/v1/server-evals/{serverId}/executions/{executionId}/runtime":{"get":{"operationId":"getApiV1ServerEvalsByServerIdExecutionsByExecutionIdRuntime","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"browserCapture":{"anyOf":[{"type":"object","properties":{"events":{"type":"array","items":{"type":"object","properties":{"schemaVersion":{"type":"number","const":1},"id":{"type":"string"},"sequence":{"type":"number"},"runId":{"type":"string"},"turnIndex":{"type":"number"},"timestamp":{"type":"string"},"type":{"type":"string","enum":["run_started","turn_started","session_started","message","message_delta","tool_call","tool_result","usage","error","turn_completed","run_completed","mcp_catalog"]},"nativeRecordId":{"type":"string"},"nativeSessionId":{"type":"string"},"role":{"type":"string","enum":["user","assistant","system"]},"text":{"type":"string"},"toolCallId":{"type":"string"},"toolName":{"type":"string"},"serverName":{"type":"string"},"args":{},"result":{},"isError":{"type":"boolean"},"usage":{"type":"object","properties":{"inputTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"outputTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"cacheReadTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"cacheWriteTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"reasoningTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"costUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"source":{"type":"string","enum":["harness","provider","estimated","unknown"]},"costSource":{"type":"string","enum":["harness","provider","estimated","unknown"]},"pricing":{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"currency":{"type":"string","const":"USD"},"sourceUrl":{"type":"string"},"verifiedAt":{"type":"string"},"inputUsdPerMillion":{"type":"number"},"cachedInputUsdPerMillion":{"type":"number"},"outputUsdPerMillion":{"type":"number"},"assumptions":{"type":"array","items":{"type":"string"}}},"required":["provider","model","currency","sourceUrl","verifiedAt","inputUsdPerMillion","cachedInputUsdPerMillion","outputUsdPerMillion","assumptions"]},"coverage":{"type":"string","enum":["complete","partial","unknown"]},"scope":{"type":"string","enum":["call","turn","session"]},"aggregation":{"type":"string","enum":["delta","cumulative"]},"observationId":{"type":"string"},"model":{"type":"string"},"provider":{"type":"string"}},"required":["inputTokens","outputTokens","cacheReadTokens","cacheWriteTokens","reasoningTokens","costUsd","source","coverage","scope","aggregation","observationId"]},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["schemaVersion","id","sequence","runId","turnIndex","timestamp","type"]}},"coverage":{"type":"string"}},"required":["events","coverage"]},{"type":"null"}]},"diagnostics":{"anyOf":[{"type":"object","properties":{"origin":{"type":"string","enum":["test_infrastructure","target_mcp","agent_behavior","unknown"]},"stage":{"type":"string","enum":["setup","connection","execution","verification","judging","capture"]},"category":{"type":"string","enum":["none","cancelled","trace_capture","sandbox_setup","model_auth","model_capacity","mcp_auth","mcp_connection","mcp_tool_error","recovered_tool_error","timeout","missing_tool_result","tool_expectation","task_expectation","assessment_failure","unknown_failure"]},"severity":{"type":"string","enum":["info","warning","error"]},"confidence":{"type":"string","enum":["high","medium","low"]},"observed":{"type":"string"},"likelyCauses":{"type":"array","items":{"type":"string"}},"suggestedChecks":{"type":"array","items":{"type":"string"}},"evidenceIds":{"type":"array","items":{"type":"string"}},"traceComplete":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"outcome":{"type":"string","enum":["passed","failed","inconclusive","pending"]},"executionCompleted":{"type":"boolean"},"toolCallCount":{"type":"number"},"failedToolCallCount":{"type":"number"},"unansweredToolCallCount":{"type":"number"},"toolFailures":{"type":"array","items":{"type":"object","properties":{"toolName":{"type":"string"},"totalCalls":{"type":"number"},"failedCalls":{"type":"number"},"unansweredCalls":{"type":"number"},"firstAttemptFailed":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"recovered":{"type":"boolean"},"turnIndexes":{"type":"array","items":{"type":"number"}},"errors":{"type":"array","items":{"type":"object","properties":{"summary":{"type":"string"},"signature":{"type":"string"},"count":{"type":"number"},"evidenceIds":{"type":"array","items":{"type":"string"}}},"required":["summary","signature","count","evidenceIds"]}}},"required":["toolName","totalCalls","failedCalls","unansweredCalls","firstAttemptFailed","recovered","turnIndexes","errors"]}}},"required":["origin","stage","category","severity","confidence","observed","likelyCauses","suggestedChecks","evidenceIds","traceComplete","outcome","executionCompleted","toolCallCount","failedToolCallCount","unansweredToolCallCount","toolFailures"]},{"type":"null"}]},"executionError":{"anyOf":[{"type":"string"},{"type":"null"}]},"executionStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"judgingStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"canRetryJudge":{"type":"boolean"},"executor":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"purpose":{"type":"string"},"executionId":{"anyOf":[{"type":"string"},{"type":"null"}]},"harness":{"type":"string"},"model":{"type":"string"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"attempt":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"config":{"type":"object","properties":{"harness":{"type":"string","enum":["pi","codex","claude-code","cursor"]},"model":{"type":"string","minLength":1,"maxLength":200},"label":{"type":"string"},"provider":{"type":"string","enum":["openrouter","openai","anthropic","cursor"]},"settings":{"type":"object","properties":{"toolSearch":{"type":"boolean"}},"additionalProperties":false}},"required":["harness","model"],"additionalProperties":false},"sandboxId":{"anyOf":[{"type":"string"},{"type":"null"}]},"manifest":{"anyOf":[{"type":"object","properties":{"harness":{"type":"string","enum":["pi","codex","claude-code","cursor"]},"harnessVersion":{"type":"string"},"observedModels":{"type":"array","items":{"type":"string"}},"model":{"type":"string"},"provider":{"type":"string"},"nativeSessionId":{"type":"string"},"sandboxProvider":{"type":"string","const":"vercel"}},"required":["harness","harnessVersion","model","sandboxProvider"]},{"type":"null"}]},"traceManifest":{"anyOf":[{"type":"object","properties":{"schemaVersion":{"type":"number","const":1},"runId":{"type":"string"},"chunks":{"type":"number"},"eventCount":{"type":"number"},"nativeRecordCount":{"type":"number"},"complete":{"type":"boolean"},"errors":{"type":"array","items":{"type":"string"}}},"required":["schemaVersion","runId","chunks","eventCount","nativeRecordCount","complete","errors"]},{"type":"null"}]},"usage":{"anyOf":[{"type":"object","properties":{"inputTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"outputTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"cacheReadTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"cacheWriteTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"reasoningTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"costUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"source":{"type":"string","enum":["harness","provider","estimated","unknown"]},"costSource":{"type":"string","enum":["harness","provider","estimated","unknown"]},"pricing":{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"currency":{"type":"string","const":"USD"},"sourceUrl":{"type":"string"},"verifiedAt":{"type":"string"},"inputUsdPerMillion":{"type":"number"},"cachedInputUsdPerMillion":{"type":"number"},"outputUsdPerMillion":{"type":"number"},"assumptions":{"type":"array","items":{"type":"string"}}},"required":["provider","model","currency","sourceUrl","verifiedAt","inputUsdPerMillion","cachedInputUsdPerMillion","outputUsdPerMillion","assumptions"]},"coverage":{"type":"string","enum":["complete","partial","unknown"]}},"required":["inputTokens","outputTokens","cacheReadTokens","cacheWriteTokens","reasoningTokens","costUsd","source","coverage"]},{"type":"null"}]},"sandboxUsage":{"anyOf":[{"type":"object","properties":{"durationMs":{"type":"number"},"costUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"source":{"type":"string","enum":["estimated","provider","unknown"]}},"required":["durationMs","costUsd","source"]},{"type":"null"}]},"finalResponse":{"anyOf":[{"type":"string"},{"type":"null"}]},"outputs":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"deadlineAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"turns":{"type":"array","items":{"type":"object","properties":{"turnIndex":{"type":"number"},"status":{"type":"string","enum":["completed","failed","cancelled","timed_out","interrupted"]},"nativeSessionId":{"type":"string"},"observedModels":{"type":"array","items":{"type":"string"}},"startedAt":{"type":"string"},"completedAt":{"type":"string"},"durationMs":{"type":"number"},"finalResponse":{"type":"string"},"usage":{"type":"object","properties":{"inputTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"outputTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"cacheReadTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"cacheWriteTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"reasoningTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"costUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"source":{"type":"string","enum":["harness","provider","estimated","unknown"]},"costSource":{"type":"string","enum":["harness","provider","estimated","unknown"]},"pricing":{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"currency":{"type":"string","const":"USD"},"sourceUrl":{"type":"string"},"verifiedAt":{"type":"string"},"inputUsdPerMillion":{"type":"number"},"cachedInputUsdPerMillion":{"type":"number"},"outputUsdPerMillion":{"type":"number"},"assumptions":{"type":"array","items":{"type":"string"}}},"required":["provider","model","currency","sourceUrl","verifiedAt","inputUsdPerMillion","cachedInputUsdPerMillion","outputUsdPerMillion","assumptions"]},"coverage":{"type":"string","enum":["complete","partial","unknown"]}},"required":["inputTokens","outputTokens","cacheReadTokens","cacheWriteTokens","reasoningTokens","costUsd","source","coverage"]},"error":{"type":"string"}},"required":["turnIndex","status","startedAt","completedAt","durationMs","finalResponse","usage"]}},"events":{"type":"array","items":{"type":"object","properties":{"schemaVersion":{"type":"number","const":1},"id":{"type":"string"},"sequence":{"type":"number"},"runId":{"type":"string"},"turnIndex":{"type":"number"},"timestamp":{"type":"string"},"type":{"type":"string","enum":["run_started","turn_started","session_started","message","message_delta","tool_call","tool_result","usage","error","turn_completed","run_completed","mcp_catalog"]},"nativeRecordId":{"type":"string"},"nativeSessionId":{"type":"string"},"role":{"type":"string","enum":["user","assistant","system"]},"text":{"type":"string"},"toolCallId":{"type":"string"},"toolName":{"type":"string"},"serverName":{"type":"string"},"args":{},"result":{},"isError":{"type":"boolean"},"usage":{"type":"object","properties":{"inputTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"outputTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"cacheReadTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"cacheWriteTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"reasoningTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"costUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"source":{"type":"string","enum":["harness","provider","estimated","unknown"]},"costSource":{"type":"string","enum":["harness","provider","estimated","unknown"]},"pricing":{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"currency":{"type":"string","const":"USD"},"sourceUrl":{"type":"string"},"verifiedAt":{"type":"string"},"inputUsdPerMillion":{"type":"number"},"cachedInputUsdPerMillion":{"type":"number"},"outputUsdPerMillion":{"type":"number"},"assumptions":{"type":"array","items":{"type":"string"}}},"required":["provider","model","currency","sourceUrl","verifiedAt","inputUsdPerMillion","cachedInputUsdPerMillion","outputUsdPerMillion","assumptions"]},"coverage":{"type":"string","enum":["complete","partial","unknown"]},"scope":{"type":"string","enum":["call","turn","session"]},"aggregation":{"type":"string","enum":["delta","cumulative"]},"observationId":{"type":"string"},"model":{"type":"string"},"provider":{"type":"string"}},"required":["inputTokens","outputTokens","cacheReadTokens","cacheWriteTokens","reasoningTokens","costUsd","source","coverage","scope","aggregation","observationId"]},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["schemaVersion","id","sequence","runId","turnIndex","timestamp","type"]}},"eventCount":{"type":"number"},"eventsTruncated":{"type":"boolean"}},"required":["id","organizationId","purpose","executionId","harness","model","provider","status","attempt","config","sandboxId","manifest","traceManifest","usage","sandboxUsage","finalResponse","outputs","error","deadlineAt","startedAt","completedAt","createdAt","turns","events","eventCount","eventsTruncated"]},{"type":"null"}]},"judgeVerdict":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","enum":["assessed","inconclusive"]},"score":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"majorProblems":{"default":[],"maxItems":5,"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160},"description":{"type":"string","minLength":1,"maxLength":1200},"fixPrompt":{"type":"string","minLength":1,"maxLength":4000}},"required":["title","description","fixPrompt"],"additionalProperties":false}},"reportMarkdown":{"type":"string","minLength":1}},"required":["status","score","reportMarkdown"]},{"type":"null"}]}},"required":["browserCapture","diagnostics","executionError","executionStatus","judgingStatus","canRetryJudge","executor","judgeVerdict"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerEvals"],"description":"Executor runtime metadata, turns and usage, evaluation status and verdict, with an optional normalized executor timeline. Judge internals are available only through the restricted judge-trace endpoint.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string"},"required":true},{"in":"path","name":"executionId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"includeEvents","schema":{"default":"false","type":"string","enum":["true","false"]},"description":"Include the bounded executor conversation. Status polling omits trace events by default."}]}},"/api/v1/server-evals/{serverId}/executions/{executionId}/judge-trace":{"get":{"operationId":"getApiV1ServerEvalsByServerIdExecutionsByExecutionIdJudgeTrace","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"judge":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"purpose":{"type":"string"},"executionId":{"anyOf":[{"type":"string"},{"type":"null"}]},"harness":{"type":"string"},"model":{"type":"string"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"attempt":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"config":{"type":"object","properties":{"harness":{"type":"string","enum":["pi","codex","claude-code","cursor"]},"model":{"type":"string","minLength":1,"maxLength":200},"label":{"type":"string"},"provider":{"type":"string","enum":["openrouter","openai","anthropic","cursor"]},"settings":{"type":"object","properties":{"toolSearch":{"type":"boolean"}},"additionalProperties":false}},"required":["harness","model"],"additionalProperties":false},"sandboxId":{"anyOf":[{"type":"string"},{"type":"null"}]},"manifest":{"anyOf":[{"type":"object","properties":{"harness":{"type":"string","enum":["pi","codex","claude-code","cursor"]},"harnessVersion":{"type":"string"},"observedModels":{"type":"array","items":{"type":"string"}},"model":{"type":"string"},"provider":{"type":"string"},"nativeSessionId":{"type":"string"},"sandboxProvider":{"type":"string","const":"vercel"}},"required":["harness","harnessVersion","model","sandboxProvider"]},{"type":"null"}]},"traceManifest":{"anyOf":[{"type":"object","properties":{"schemaVersion":{"type":"number","const":1},"runId":{"type":"string"},"chunks":{"type":"number"},"eventCount":{"type":"number"},"nativeRecordCount":{"type":"number"},"complete":{"type":"boolean"},"errors":{"type":"array","items":{"type":"string"}}},"required":["schemaVersion","runId","chunks","eventCount","nativeRecordCount","complete","errors"]},{"type":"null"}]},"usage":{"anyOf":[{"type":"object","properties":{"inputTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"outputTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"cacheReadTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"cacheWriteTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"reasoningTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"costUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"source":{"type":"string","enum":["harness","provider","estimated","unknown"]},"costSource":{"type":"string","enum":["harness","provider","estimated","unknown"]},"pricing":{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"currency":{"type":"string","const":"USD"},"sourceUrl":{"type":"string"},"verifiedAt":{"type":"string"},"inputUsdPerMillion":{"type":"number"},"cachedInputUsdPerMillion":{"type":"number"},"outputUsdPerMillion":{"type":"number"},"assumptions":{"type":"array","items":{"type":"string"}}},"required":["provider","model","currency","sourceUrl","verifiedAt","inputUsdPerMillion","cachedInputUsdPerMillion","outputUsdPerMillion","assumptions"]},"coverage":{"type":"string","enum":["complete","partial","unknown"]}},"required":["inputTokens","outputTokens","cacheReadTokens","cacheWriteTokens","reasoningTokens","costUsd","source","coverage"]},{"type":"null"}]},"sandboxUsage":{"anyOf":[{"type":"object","properties":{"durationMs":{"type":"number"},"costUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"source":{"type":"string","enum":["estimated","provider","unknown"]}},"required":["durationMs","costUsd","source"]},{"type":"null"}]},"finalResponse":{"anyOf":[{"type":"string"},{"type":"null"}]},"outputs":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"deadlineAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"turns":{"type":"array","items":{"type":"object","properties":{"turnIndex":{"type":"number"},"status":{"type":"string","enum":["completed","failed","cancelled","timed_out","interrupted"]},"nativeSessionId":{"type":"string"},"observedModels":{"type":"array","items":{"type":"string"}},"startedAt":{"type":"string"},"completedAt":{"type":"string"},"durationMs":{"type":"number"},"finalResponse":{"type":"string"},"usage":{"type":"object","properties":{"inputTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"outputTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"cacheReadTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"cacheWriteTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"reasoningTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"costUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"source":{"type":"string","enum":["harness","provider","estimated","unknown"]},"costSource":{"type":"string","enum":["harness","provider","estimated","unknown"]},"pricing":{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"currency":{"type":"string","const":"USD"},"sourceUrl":{"type":"string"},"verifiedAt":{"type":"string"},"inputUsdPerMillion":{"type":"number"},"cachedInputUsdPerMillion":{"type":"number"},"outputUsdPerMillion":{"type":"number"},"assumptions":{"type":"array","items":{"type":"string"}}},"required":["provider","model","currency","sourceUrl","verifiedAt","inputUsdPerMillion","cachedInputUsdPerMillion","outputUsdPerMillion","assumptions"]},"coverage":{"type":"string","enum":["complete","partial","unknown"]}},"required":["inputTokens","outputTokens","cacheReadTokens","cacheWriteTokens","reasoningTokens","costUsd","source","coverage"]},"error":{"type":"string"}},"required":["turnIndex","status","startedAt","completedAt","durationMs","finalResponse","usage"]}},"events":{"type":"array","items":{"type":"object","properties":{"schemaVersion":{"type":"number","const":1},"id":{"type":"string"},"sequence":{"type":"number"},"runId":{"type":"string"},"turnIndex":{"type":"number"},"timestamp":{"type":"string"},"type":{"type":"string","enum":["run_started","turn_started","session_started","message","message_delta","tool_call","tool_result","usage","error","turn_completed","run_completed","mcp_catalog"]},"nativeRecordId":{"type":"string"},"nativeSessionId":{"type":"string"},"role":{"type":"string","enum":["user","assistant","system"]},"text":{"type":"string"},"toolCallId":{"type":"string"},"toolName":{"type":"string"},"serverName":{"type":"string"},"args":{},"result":{},"isError":{"type":"boolean"},"usage":{"type":"object","properties":{"inputTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"outputTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"cacheReadTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"cacheWriteTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"reasoningTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"costUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"source":{"type":"string","enum":["harness","provider","estimated","unknown"]},"costSource":{"type":"string","enum":["harness","provider","estimated","unknown"]},"pricing":{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"currency":{"type":"string","const":"USD"},"sourceUrl":{"type":"string"},"verifiedAt":{"type":"string"},"inputUsdPerMillion":{"type":"number"},"cachedInputUsdPerMillion":{"type":"number"},"outputUsdPerMillion":{"type":"number"},"assumptions":{"type":"array","items":{"type":"string"}}},"required":["provider","model","currency","sourceUrl","verifiedAt","inputUsdPerMillion","cachedInputUsdPerMillion","outputUsdPerMillion","assumptions"]},"coverage":{"type":"string","enum":["complete","partial","unknown"]},"scope":{"type":"string","enum":["call","turn","session"]},"aggregation":{"type":"string","enum":["delta","cumulative"]},"observationId":{"type":"string"},"model":{"type":"string"},"provider":{"type":"string"}},"required":["inputTokens","outputTokens","cacheReadTokens","cacheWriteTokens","reasoningTokens","costUsd","source","coverage","scope","aggregation","observationId"]},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["schemaVersion","id","sequence","runId","turnIndex","timestamp","type"]}},"eventCount":{"type":"number"},"eventsTruncated":{"type":"boolean"}},"required":["id","organizationId","purpose","executionId","harness","model","provider","status","attempt","config","sandboxId","manifest","traceManifest","usage","sandboxUsage","finalResponse","outputs","error","deadlineAt","startedAt","completedAt","createdAt","turns","events","eventCount","eventsTruncated"]},{"type":"null"}]},"attempts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"attempt":{"type":"number"},"harness":{"type":"string"},"model":{"type":"string"},"status":{"type":"string"},"usage":{"anyOf":[{"type":"object","properties":{"inputTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"outputTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"cacheReadTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"cacheWriteTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"reasoningTokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"costUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"source":{"type":"string","enum":["harness","provider","estimated","unknown"]},"costSource":{"type":"string","enum":["harness","provider","estimated","unknown"]},"pricing":{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"currency":{"type":"string","const":"USD"},"sourceUrl":{"type":"string"},"verifiedAt":{"type":"string"},"inputUsdPerMillion":{"type":"number"},"cachedInputUsdPerMillion":{"type":"number"},"outputUsdPerMillion":{"type":"number"},"assumptions":{"type":"array","items":{"type":"string"}}},"required":["provider","model","currency","sourceUrl","verifiedAt","inputUsdPerMillion","cachedInputUsdPerMillion","outputUsdPerMillion","assumptions"]},"coverage":{"type":"string","enum":["complete","partial","unknown"]}},"required":["inputTokens","outputTokens","cacheReadTokens","cacheWriteTokens","reasoningTokens","costUsd","source","coverage"]},{"type":"null"}]},"sandboxUsage":{"anyOf":[{"type":"object","properties":{"durationMs":{"type":"number"},"costUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"source":{"type":"string","enum":["estimated","provider","unknown"]}},"required":["durationMs","costUsd","source"]},{"type":"null"}]}},"required":["id","attempt","harness","model","status","usage","sandboxUsage"]}},"limits":{"anyOf":[{"type":"object","properties":{"timeoutMs":{"anyOf":[{"type":"number"},{"type":"null"}]},"turnTimeoutMs":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["timeoutMs","turnTimeoutMs"]},{"type":"null"}]}},"required":["judge","attempts","limits"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerEvals"],"description":"Judge conversation and attempts, scoped to an authorized server and execution.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string"},"required":true},{"in":"path","name":"executionId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"judgeRunId","schema":{"type":"string","minLength":1}}]}},"/api/v1/server-evals/{serverId}/executions/{executionId}/artifacts/{artifactId}":{"get":{"operationId":"getApiV1ServerEvalsByServerIdExecutionsByExecutionIdArtifactsByArtifactId","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerEvals"],"description":"Download private complete runtime evidence after server permission checks.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string"},"required":true},{"in":"path","name":"executionId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"artifactId","schema":{"type":"string","enum":["normalized-trace","native-trace","manifest","outputs"]},"required":true},{"in":"query","name":"role","schema":{"default":"executor","type":"string","enum":["executor","judge"]}},{"in":"query","name":"judgeRunId","schema":{"type":"string","minLength":1}}]}},"/api/v1/server-evals/{serverId}/executions/{executionId}/retry-judge":{"post":{"operationId":"postApiV1ServerEvalsByServerIdExecutionsByExecutionIdRetryJudge","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerEvals"],"description":"Run a new judge attempt against the same immutable execution evidence.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string"},"required":true},{"in":"path","name":"executionId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/server-audits/{serverId}/audits":{"post":{"operationId":"postApiV1ServerAuditsByServerIdAudits","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["pending","running","completed","failed"]}},"required":["id","status"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerAudits"],"description":"Trigger a new MCP server audit.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string","minLength":1},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"deploymentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"runE2E":{"type":"boolean"},"runPolicyReview":{"type":"boolean"},"branch":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]}}}}}}},"get":{"operationId":"getApiV1ServerAuditsByServerIdAudits","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"deploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"organizationId":{"type":"string"},"targetUrl":{"type":"string"},"gitBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string","enum":["pending","running","completed","failed"]},"durationMs":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"isReadyForChatgpt":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"isReadyForClaudeai":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"initiatedByUserId":{"anyOf":[{"type":"string"},{"type":"null"}]},"trigger":{"anyOf":[{"type":"string"},{"type":"null"}]},"impersonated":{"type":"boolean"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"checks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"auditId":{"type":"string"},"checkId":{"type":"string"},"checkName":{"type":"string"},"status":{"type":"string","enum":["pass","fail","skip","pending"]},"severity":{"type":"string"},"category":{"type":"string"},"scope":{"type":"string"},"platforms":{"type":"array","items":{"type":"string"}},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"details":{"anyOf":[{},{"type":"null"}]},"hint":{"anyOf":[{},{"type":"null"}]},"durationMs":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"notApplicable":{"type":"boolean"}},"required":["id","auditId","checkId","checkName","status","severity","category","scope","platforms","message","details","hint","durationMs","createdAt"]}}},"required":["id","serverId","deploymentId","organizationId","targetUrl","gitBranch","status","durationMs","errorMessage","isReadyForChatgpt","isReadyForClaudeai","initiatedByUserId","trigger","impersonated","startedAt","completedAt","createdAt"]}},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"skip":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","total","limit","skip"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerAudits"],"description":"List audits for a server.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string","minLength":1},"required":true},{"in":"query","name":"branch","schema":{"type":"string","maxLength":255}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"take","schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"skip","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},{"in":"query","name":"sort","schema":{"type":"string"}}]}},"/api/v1/server-audits/{serverId}/audits/{auditId}":{"get":{"operationId":"getApiV1ServerAuditsByServerIdAuditsByAuditId","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"deploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"organizationId":{"type":"string"},"targetUrl":{"type":"string"},"gitBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string","enum":["pending","running","completed","failed"]},"durationMs":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"isReadyForChatgpt":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"isReadyForClaudeai":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"initiatedByUserId":{"anyOf":[{"type":"string"},{"type":"null"}]},"trigger":{"anyOf":[{"type":"string"},{"type":"null"}]},"impersonated":{"type":"boolean"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"checks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"auditId":{"type":"string"},"checkId":{"type":"string"},"checkName":{"type":"string"},"status":{"type":"string","enum":["pass","fail","skip","pending"]},"severity":{"type":"string"},"category":{"type":"string"},"scope":{"type":"string"},"platforms":{"type":"array","items":{"type":"string"}},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"details":{"anyOf":[{},{"type":"null"}]},"hint":{"anyOf":[{},{"type":"null"}]},"durationMs":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"notApplicable":{"type":"boolean"}},"required":["id","auditId","checkId","checkName","status","severity","category","scope","platforms","message","details","hint","durationMs","createdAt"]}}},"required":["id","serverId","deploymentId","organizationId","targetUrl","gitBranch","status","durationMs","errorMessage","isReadyForChatgpt","isReadyForClaudeai","initiatedByUserId","trigger","impersonated","startedAt","completedAt","createdAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerAudits"],"description":"Get a single audit with all its checks.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"auditId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/server-audits/{serverId}/audits/{auditId}/cancel":{"post":{"operationId":"postApiV1ServerAuditsByServerIdAuditsByAuditIdCancel","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"deploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"organizationId":{"type":"string"},"targetUrl":{"type":"string"},"gitBranch":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string","enum":["pending","running","completed","failed"]},"durationMs":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"isReadyForChatgpt":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"isReadyForClaudeai":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"initiatedByUserId":{"anyOf":[{"type":"string"},{"type":"null"}]},"trigger":{"anyOf":[{"type":"string"},{"type":"null"}]},"impersonated":{"type":"boolean"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"checks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"auditId":{"type":"string"},"checkId":{"type":"string"},"checkName":{"type":"string"},"status":{"type":"string","enum":["pass","fail","skip","pending"]},"severity":{"type":"string"},"category":{"type":"string"},"scope":{"type":"string"},"platforms":{"type":"array","items":{"type":"string"}},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"details":{"anyOf":[{},{"type":"null"}]},"hint":{"anyOf":[{},{"type":"null"}]},"durationMs":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"notApplicable":{"type":"boolean"}},"required":["id","auditId","checkId","checkName","status","severity","category","scope","platforms","message","details","hint","durationMs","createdAt"]}}},"required":["id","serverId","deploymentId","organizationId","targetUrl","gitBranch","status","durationMs","errorMessage","isReadyForChatgpt","isReadyForClaudeai","initiatedByUserId","trigger","impersonated","startedAt","completedAt","createdAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerAudits"],"description":"Cancel an in-flight checklist run. Removes the BullMQ job and marks the audit as failed. Partial check results streamed so far are kept. The worker may continue briefly in the background.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"auditId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/server-audits/{serverId}/audits/{auditId}/autofix":{"post":{"operationId":"postApiV1ServerAuditsByServerIdAuditsByAuditIdAutofix","responses":{"200":{"description":"Autofix job enqueued or existing PR returned","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"auditId":{"type":"string"},"status":{"type":"string","enum":["pending","running","completed","failed"]},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"prUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"prNumber":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"filesChanged":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"jobMeta":{"anyOf":[{"type":"object","properties":{"phase":{"anyOf":[{"type":"string"},{"type":"null"}]},"phaseLabel":{"anyOf":[{"type":"string"},{"type":"null"}]},"percent":{"anyOf":[{"type":"number"},{"type":"null"}]},"logsTail":{"anyOf":[{"type":"string"},{"type":"null"}]},"validationPassed":{"anyOf":[{"type":"boolean"},{"type":"null"}]}}},{"type":"null"}]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","auditId","status","branch","prUrl","prNumber","filesChanged","errorMessage","jobMeta","startedAt","completedAt","createdAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"409":{"description":"Autofix already running"},"422":{"description":"No connected repository or audit not fixable"}},"tags":["ServerAudits"],"description":"Trigger an automated autofix for a completed audit. Clones the connected GitHub repo in a sandbox, runs a Claude agent to fix failing checks, pushes a branch, and opens a pull request.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"auditId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]},"get":{"operationId":"getApiV1ServerAuditsByServerIdAuditsByAuditIdAutofix","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"auditId":{"type":"string"},"status":{"type":"string","enum":["pending","running","completed","failed"]},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"prUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"prNumber":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"filesChanged":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"jobMeta":{"anyOf":[{"type":"object","properties":{"phase":{"anyOf":[{"type":"string"},{"type":"null"}]},"phaseLabel":{"anyOf":[{"type":"string"},{"type":"null"}]},"percent":{"anyOf":[{"type":"number"},{"type":"null"}]},"logsTail":{"anyOf":[{"type":"string"},{"type":"null"}]},"validationPassed":{"anyOf":[{"type":"boolean"},{"type":"null"}]}}},{"type":"null"}]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","auditId","status","branch","prUrl","prNumber","filesChanged","errorMessage","jobMeta","startedAt","completedAt","createdAt"]},{"type":"null"}]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerAudits"],"description":"Get autofix status for an audit (PR link when complete).","parameters":[{"in":"path","name":"serverId","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"auditId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/server-audits/{serverId}/audits/{auditId}/autofix/cancel":{"post":{"operationId":"postApiV1ServerAuditsByServerIdAuditsByAuditIdAutofixCancel","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"auditId":{"type":"string"},"status":{"type":"string","enum":["pending","running","completed","failed"]},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"prUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"prNumber":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"filesChanged":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"jobMeta":{"anyOf":[{"type":"object","properties":{"phase":{"anyOf":[{"type":"string"},{"type":"null"}]},"phaseLabel":{"anyOf":[{"type":"string"},{"type":"null"}]},"percent":{"anyOf":[{"type":"number"},{"type":"null"}]},"logsTail":{"anyOf":[{"type":"string"},{"type":"null"}]},"validationPassed":{"anyOf":[{"type":"boolean"},{"type":"null"}]}}},{"type":"null"}]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","auditId","status","branch","prUrl","prNumber","filesChanged","errorMessage","jobMeta","startedAt","completedAt","createdAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["ServerAudits"],"description":"Cancel an in-flight autofix job. Removes the BullMQ job and marks the autofix as failed.","parameters":[{"in":"path","name":"serverId","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"auditId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/polls/options":{"get":{"operationId":"getApiV1PollsOptions","tags":["Polls"],"description":"List poll options with offset pagination.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"votes":{"type":"number"},"createdAt":{"type":"string"},"solved":{"type":"boolean"},"implementationComment":{"anyOf":[{"type":"string"},{"type":"null"}]},"link":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","text","votes"]}},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"skip":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","total","limit","skip"]}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"parameters":[{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"take","schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"skip","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},{"in":"query","name":"sort","schema":{"type":"string"}}]},"post":{"operationId":"postApiV1PollsOptions","tags":["Polls"],"description":"Create a new poll option and auto-vote for it.","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"votes":{"type":"number"},"createdAt":{"type":"string"},"solved":{"type":"boolean"},"implementationComment":{"anyOf":[{"type":"string"},{"type":"null"}]},"link":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","text","votes"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":500}},"required":["text"]}}}}}},"/api/v1/polls/options/{id}/vote":{"post":{"operationId":"postApiV1PollsOptionsByIdVote","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"votes":{"type":"number"}},"required":["id","text","votes"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Polls"],"description":"Increment the vote count for a poll option (authenticated users only).","parameters":[{"in":"path","name":"id","schema":{"type":"string","minLength":1},"required":true}]}},"/api/v1/public-chat/{id}/metadata":{"get":{"operationId":"getApiV1PublicChatByIdMetadata","tags":["PublicChat"],"description":"Fresh public-chat landing metadata from Postgres for gateway SSR hydration. Callable only with X-Gateway-API-Key (same-origin browser requests use GET /chat/metadata on the gateway worker).","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"suggestedQuestions":{"type":"array","items":{"type":"string"}},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"showSecurityWarningBanner":{"type":"boolean"},"isOAuthServer":{"type":"boolean"}},"required":["suggestedQuestions","title","description","showSecurityWarningBanner","isOAuthServer"]}}}},"401":{"description":"Missing or invalid gateway API key"}},"parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/public-chat/{id}/stream":{"post":{"operationId":"postApiV1PublicChatByIdStream","tags":["PublicChat"],"description":"Public stream endpoint for gateway-hosted server chat. Persists one transcript per request in Chat + ChatEvent using the server's PublicChatConfig agent.","responses":{"200":{"description":"Vercel AI data-stream format"},"400":{"description":"Bad request"},"429":{"description":"Rate limited"},"500":{"description":"Internal error"}},"parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mcpServerUrl":{"type":"string","format":"uri"},"messages":{"minItems":1,"type":"array","items":{}},"mcpAuthHeaders":{"type":"object","properties":{"authorization":{"type":"string","minLength":1,"maxLength":8192}},"required":["authorization"],"additionalProperties":false},"clientId":{"type":"string","minLength":1,"maxLength":200}},"required":["mcpServerUrl","messages"]}}}}}},"/api/v1/servers/{id}/gateway/ip-access":{"get":{"operationId":"allApiV1Servers","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"config":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"enabled":{"type":"boolean"},"customCidrs":{"type":"array","items":{"type":"string"}},"chatgptPreset":{"type":"boolean"},"anthropicPreset":{"type":"boolean"},"manufactPreset":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","enabled","customCidrs","chatgptPreset","anthropicPreset","manufactPreset","createdAt","updatedAt"]},{"type":"null"}]},"hasConfig":{"type":"boolean"}},"required":["config","hasConfig"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Get IP access config for a server (owner/org access).","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]},"patch":{"operationId":"allApiV1Servers","responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","properties":{"config":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"enabled":{"type":"boolean"},"customCidrs":{"type":"array","items":{"type":"string"}},"chatgptPreset":{"type":"boolean"},"anthropicPreset":{"type":"boolean"},"manufactPreset":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","enabled","customCidrs","chatgptPreset","anthropicPreset","manufactPreset","createdAt","updatedAt"]},{"type":"null"}]},"hasConfig":{"type":"boolean"}},"required":["config","hasConfig"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Servers"],"description":"Create/update IP access config for a server. Pushes changes to the gateway KV immediately.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"customCidrs":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":50,"pattern":"^(?:(?:\\d{1,3}\\.){3}\\d{1,3}(?:\\/(?:\\d|[12]\\d|3[012]))?|(?:[0-9a-fA-F:]+)(?:\\/(?:\\d{1,3}))?)$"}},"chatgptPreset":{"type":"boolean"},"anthropicPreset":{"type":"boolean"},"manufactPreset":{"type":"boolean"}}}}}}}},"/api/v1/servers/{id}/app-submissions":{"get":{"operationId":"allApiV1Servers","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"version":{"type":"string"},"openaiVerificationToken":{"anyOf":[{"type":"string"},{"type":"null"}]},"openaiSubmissionJson":{"anyOf":[{},{"type":"null"}]},"openaiDemoVideoUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"openaiScreenshotUrls":{"type":"array","items":{"type":"string"}},"openaiSubmissionJobMeta":{"anyOf":[{},{"type":"null"}]},"openaiDemoVideoJobMeta":{"anyOf":[{},{"type":"null"}]},"openaiScreenshotJobMeta":{"anyOf":[{},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","version","openaiVerificationToken","openaiSubmissionJson","openaiDemoVideoUrl","openaiScreenshotUrls","openaiSubmissionJobMeta","openaiDemoVideoJobMeta","openaiScreenshotJobMeta","createdAt","updatedAt"]}}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["AppSubmission"],"description":"List all app submissions for a server, ordered by semver descending.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]},"post":{"operationId":"allApiV1Servers","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"version":{"type":"string"},"openaiVerificationToken":{"anyOf":[{"type":"string"},{"type":"null"}]},"openaiSubmissionJson":{"anyOf":[{},{"type":"null"}]},"openaiDemoVideoUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"openaiScreenshotUrls":{"type":"array","items":{"type":"string"}},"openaiSubmissionJobMeta":{"anyOf":[{},{"type":"null"}]},"openaiDemoVideoJobMeta":{"anyOf":[{},{"type":"null"}]},"openaiScreenshotJobMeta":{"anyOf":[{},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","version","openaiVerificationToken","openaiSubmissionJson","openaiDemoVideoUrl","openaiScreenshotUrls","openaiSubmissionJobMeta","openaiDemoVideoJobMeta","openaiScreenshotJobMeta","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"409":{"description":"Version already exists for this server"}},"tags":["AppSubmission"],"description":"Create a new app submission for a server. Version defaults to 1.0.0 when no submissions exist, or next-patch of the current latest.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"openaiVerificationToken":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"openaiSubmissionJson":{},"openaiDemoVideoUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"openaiScreenshotUrls":{"type":"array","items":{"type":"string"}},"version":{"type":"string","pattern":"^\\d+\\.\\d+\\.\\d+$"}}}}}}}},"/api/v1/servers/{id}/app-submissions/{submissionId}":{"get":{"operationId":"allApiV1Servers","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"version":{"type":"string"},"openaiVerificationToken":{"anyOf":[{"type":"string"},{"type":"null"}]},"openaiSubmissionJson":{"anyOf":[{},{"type":"null"}]},"openaiDemoVideoUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"openaiScreenshotUrls":{"type":"array","items":{"type":"string"}},"openaiSubmissionJobMeta":{"anyOf":[{},{"type":"null"}]},"openaiDemoVideoJobMeta":{"anyOf":[{},{"type":"null"}]},"openaiScreenshotJobMeta":{"anyOf":[{},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","version","openaiVerificationToken","openaiSubmissionJson","openaiDemoVideoUrl","openaiScreenshotUrls","openaiSubmissionJobMeta","openaiDemoVideoJobMeta","openaiScreenshotJobMeta","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["AppSubmission"],"description":"Get a single app submission by id.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"submissionId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]},"patch":{"operationId":"allApiV1Servers","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"version":{"type":"string"},"openaiVerificationToken":{"anyOf":[{"type":"string"},{"type":"null"}]},"openaiSubmissionJson":{"anyOf":[{},{"type":"null"}]},"openaiDemoVideoUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"openaiScreenshotUrls":{"type":"array","items":{"type":"string"}},"openaiSubmissionJobMeta":{"anyOf":[{},{"type":"null"}]},"openaiDemoVideoJobMeta":{"anyOf":[{},{"type":"null"}]},"openaiScreenshotJobMeta":{"anyOf":[{},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","version","openaiVerificationToken","openaiSubmissionJson","openaiDemoVideoUrl","openaiScreenshotUrls","openaiSubmissionJobMeta","openaiDemoVideoJobMeta","openaiScreenshotJobMeta","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["AppSubmission"],"description":"Update mutable fields of an app submission. Syncs the latest verification token to the gateway KV.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"submissionId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"openaiVerificationToken":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"openaiSubmissionJson":{},"openaiDemoVideoUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"openaiScreenshotUrls":{"type":"array","items":{"type":"string"}}}}}}}}},"/api/v1/servers/{id}/app-submissions/{submissionId}/generate-openai-json":{"post":{"operationId":"allApiV1Servers","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"version":{"type":"string"},"openaiVerificationToken":{"anyOf":[{"type":"string"},{"type":"null"}]},"openaiSubmissionJson":{"anyOf":[{},{"type":"null"}]},"openaiDemoVideoUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"openaiScreenshotUrls":{"type":"array","items":{"type":"string"}},"openaiSubmissionJobMeta":{"anyOf":[{},{"type":"null"}]},"openaiDemoVideoJobMeta":{"anyOf":[{},{"type":"null"}]},"openaiScreenshotJobMeta":{"anyOf":[{},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","version","openaiVerificationToken","openaiSubmissionJson","openaiDemoVideoUrl","openaiScreenshotUrls","openaiSubmissionJobMeta","openaiDemoVideoJobMeta","openaiScreenshotJobMeta","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"409":{"description":"Job already queued or running"},"422":{"description":"No connected repository or production deployment"},"502":{"description":"Submission generation could not be prepared"}},"tags":["AppSubmission"],"description":"Trigger AI-powered generation of the chatgpt-app-submission.json for this submission. Enqueues a background job that runs a Pi agent in a Vercel snapshot sandbox against the live MCP server, with GitHub source when available. Returns 409 if a job is already running. Returns 422 if no connected repo/deployment exists.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"submissionId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/servers/{id}/app-submissions/{submissionId}/generate-demo-video":{"post":{"operationId":"allApiV1Servers","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"version":{"type":"string"},"openaiVerificationToken":{"anyOf":[{"type":"string"},{"type":"null"}]},"openaiSubmissionJson":{"anyOf":[{},{"type":"null"}]},"openaiDemoVideoUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"openaiScreenshotUrls":{"type":"array","items":{"type":"string"}},"openaiSubmissionJobMeta":{"anyOf":[{},{"type":"null"}]},"openaiDemoVideoJobMeta":{"anyOf":[{},{"type":"null"}]},"openaiScreenshotJobMeta":{"anyOf":[{},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","version","openaiVerificationToken","openaiSubmissionJson","openaiDemoVideoUrl","openaiScreenshotUrls","openaiSubmissionJobMeta","openaiDemoVideoJobMeta","openaiScreenshotJobMeta","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"409":{"description":"Job already queued or running"},"422":{"description":"No connected repository or production deployment"},"501":{"description":"Mobile viewport not yet supported"}},"tags":["AppSubmission"],"description":"Trigger AI-powered demo video generation for this submission. Runs a director agent in a sandbox to write a ChatGPT script, then records the session via Notte, and trims/encodes the result with ffmpeg. Optional customInstructions can steer what the demo should show. Returns 409 if a job is already running. Returns 422 if no connected repo/deployment exists. Returns 501 if viewport != 'desktop' (mobile not yet supported).","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"submissionId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"viewport":{"default":"desktop","type":"string","enum":["desktop","mobile"]},"branch":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"customInstructions":{"description":"Optional instructions for the asset-generation agent. Use this to steer content or emphasis; generation constraints such as screenshot dimensions still apply.","type":"string","maxLength":4000},"provider":{"type":"string","maxLength":64}}}}}}}},"/api/v1/servers/{id}/app-submissions/{submissionId}/generate-screenshots":{"post":{"operationId":"allApiV1Servers","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"version":{"type":"string"},"openaiVerificationToken":{"anyOf":[{"type":"string"},{"type":"null"}]},"openaiSubmissionJson":{"anyOf":[{},{"type":"null"}]},"openaiDemoVideoUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"openaiScreenshotUrls":{"type":"array","items":{"type":"string"}},"openaiSubmissionJobMeta":{"anyOf":[{},{"type":"null"}]},"openaiDemoVideoJobMeta":{"anyOf":[{},{"type":"null"}]},"openaiScreenshotJobMeta":{"anyOf":[{},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","version","openaiVerificationToken","openaiSubmissionJson","openaiDemoVideoUrl","openaiScreenshotUrls","openaiSubmissionJobMeta","openaiDemoVideoJobMeta","openaiScreenshotJobMeta","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"409":{"description":"Job already queued or running"},"422":{"description":"No production deployment"}},"tags":["AppSubmission"],"description":"Trigger screenshot asset generation for this submission. The worker discovers tools, proposes concise trigger messages and sample args, captures mobile-sized PNGs via the mcp-use screenshot CLI using a remote Notte CDP browser, uploads the images to S3, and stores URLs on the AppSubmission row. Optional customInstructions steer screenshot content; selectedToolNames limits output to specific tools. Returns 409 if a screenshot job is already running.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"submissionId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"query","name":"branch","schema":{"type":"string","maxLength":255}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"customInstructions":{"description":"Optional instructions for the asset-generation agent. Use this to steer content or emphasis; generation constraints such as screenshot dimensions still apply.","type":"string","maxLength":4000},"selectedToolNames":{"description":"Optional ordered list of MCP tool names to screenshot. When omitted, the generator chooses up to four representative tools.","maxItems":4,"type":"array","items":{"type":"string","minLength":1,"maxLength":255}}}}}}}}},"/api/v1/servers/{id}/app-submissions/{submissionId}/screenshots.tar.gz":{"get":{"operationId":"allApiV1Servers","responses":{"200":{"description":"application/gzip"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"502":{"description":"Failed to fetch an image or build the archive"}},"tags":["AppSubmission"],"description":"Download a single tar.gz archive of all PNG screenshots stored on this submission (server-side fetch from stored URLs).","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"submissionId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/servers/{id}/app-submissions/{submissionId}/cancel-generation":{"post":{"operationId":"allApiV1Servers","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"serverId":{"type":"string"},"version":{"type":"string"},"openaiVerificationToken":{"anyOf":[{"type":"string"},{"type":"null"}]},"openaiSubmissionJson":{"anyOf":[{},{"type":"null"}]},"openaiDemoVideoUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"openaiScreenshotUrls":{"type":"array","items":{"type":"string"}},"openaiSubmissionJobMeta":{"anyOf":[{},{"type":"null"}]},"openaiDemoVideoJobMeta":{"anyOf":[{},{"type":"null"}]},"openaiScreenshotJobMeta":{"anyOf":[{},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","version","openaiVerificationToken","openaiSubmissionJson","openaiDemoVideoUrl","openaiScreenshotUrls","openaiSubmissionJobMeta","openaiDemoVideoJobMeta","openaiScreenshotJobMeta","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["AppSubmission"],"description":"Cancel an in-flight generation job (openai_submission_json, openai_demo_video, or openai_screenshots). Signals active submission agents to stop, removes queued jobs, and marks the generation as cancelled.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"submissionId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","enum":["openai_submission_json","openai_demo_video","openai_screenshots"]}},"required":["kind"]}}}}}},"/api/v1/admin/monitoring/user-orgs":{"get":{"operationId":"getApiV1AdminMonitoringUserOrgs","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"object","properties":{"orgId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"slug":{"type":"string"},"role":{"type":"string"},"serverCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["orgId","name","slug","role","serverCount"]}}}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["AdminMonitoring"],"description":"Organization memberships and server counts for a set of user ids (admin impersonate table).","parameters":[{"in":"query","name":"userIds","schema":{"type":"string","minLength":1},"required":true}]}},"/api/v1/admin/browser-ops":{"get":{"operationId":"getApiV1AdminBrowserOps","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"defaultProvider":{"type":"string","enum":["notte","browser-use"]},"providers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","enum":["notte","browser-use"]},"isDefault":{"type":"boolean"},"configured":{"type":"boolean"},"healthyProfileCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"availableProfileCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"profiles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"inChatgptPool":{"type":"boolean"},"inClaudePool":{"type":"boolean"},"disabled":{"type":"boolean"},"disabledReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"available":{"type":"boolean"},"chatgpt":{"type":"object","properties":{"healthy":{"type":"boolean"},"cooldown":{"type":"boolean"},"cooldownReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"cooldownTtlSec":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["healthy","cooldown","cooldownReason","cooldownTtlSec"]},"claude":{"type":"object","properties":{"healthy":{"type":"boolean"},"cooldown":{"type":"boolean"},"cooldownReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"cooldownTtlSec":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["healthy","cooldown","cooldownReason","cooldownTtlSec"]},"healthyFor":{"type":"string","enum":["both","chatgpt","claude","none"]}},"required":["id","inChatgptPool","inClaudePool","disabled","disabledReason","available","chatgpt","claude","healthyFor"]}}},"required":["name","isDefault","configured","healthyProfileCount","availableProfileCount","profiles"]}}},"required":["defaultProvider","providers"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["AdminBrowserOps"],"description":"Browser provider pools with per-platform (ChatGPT / Claude) profile health for ops."}},"/api/v1/admin/browser-ops/profiles/{profileId}/cooldown":{"delete":{"operationId":"deleteApiV1AdminBrowserOpsProfilesByProfileIdCooldown","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"profileId":{"type":"string"},"cleared":{"type":"object","properties":{"chatgpt":{"type":"boolean"},"claude":{"type":"boolean"}},"required":["chatgpt","claude"]}},"required":["profileId","cleared"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["AdminBrowserOps"],"description":"Clear automatic profile cooldown(s). Query platform=chatgpt|claude|all (default all).","parameters":[{"in":"path","name":"profileId","schema":{"type":"string","minLength":1},"required":true},{"in":"query","name":"platform","schema":{"default":"all","type":"string","enum":["chatgpt","claude","all"]}}]}},"/api/v1/admin/browser-ops/profiles/{profileId}":{"patch":{"operationId":"patchApiV1AdminBrowserOpsProfilesByProfileId","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"profileId":{"type":"string"},"disabled":{"type":"boolean"}},"required":["profileId","disabled"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["AdminBrowserOps"],"description":"Enable or disable a profile for all browser jobs (ChatGPT + Claude). Redis allowlist.","parameters":[{"in":"path","name":"profileId","schema":{"type":"string","minLength":1},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"disabled":{"type":"boolean"},"reason":{"type":"string","maxLength":300}},"required":["disabled"]}}}}}},"/api/v1/admin/tunnels":{"get":{"operationId":"getApiV1AdminTunnels","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"tunnels":{"type":"array","items":{"type":"object","properties":{"subdomain":{"type":"string"},"port":{"type":"number"},"url":{"type":"string"},"https_url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["subdomain","port","url","https_url"]}},"count":{"type":"number"}},"required":["tunnels","count"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["AdminTunnels"],"description":"List active tunnels."}},"/api/v1/admin/tunnels/stats":{"get":{"operationId":"getApiV1AdminTunnelsStats","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"active_tunnels":{"type":"number"},"active_tokens":{"type":"number"},"ip_tunnel_counts":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"number"}},"tunnel_metadata":{"type":"array","items":{"type":"object","properties":{"subdomain":{"type":"string"},"created_at":{"type":"string"},"last_activity":{"type":"string"},"connection_count":{"type":"number"},"ip":{"type":"string"}},"required":["subdomain","created_at","last_activity","connection_count"]}},"timestamp":{"type":"string"}},"required":["active_tunnels","active_tokens","ip_tunnel_counts","tunnel_metadata","timestamp"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["AdminTunnels"],"description":"Tunnel aggregate stats."}},"/api/v1/admin/tunnels/{subdomain}":{"delete":{"operationId":"deleteApiV1AdminTunnelsBySubdomain","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"subdomain":{"type":"string"},"port":{"type":"number"}},"required":["message","subdomain","port"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["AdminTunnels"],"description":"Remove a tunnel.","parameters":[{"schema":{"type":"string"},"in":"path","name":"subdomain","required":true}]}},"/api/v1/admin/audit-logs":{"get":{"operationId":"getApiV1AdminAuditLogs","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"actorId":{"anyOf":[{"type":"string"},{"type":"null"}]},"actorEmail":{"anyOf":[{"type":"string"},{"type":"null"}]},"actorRole":{"anyOf":[{"type":"string"},{"type":"null"}]},"action":{"type":"string"},"resourceType":{"type":"string"},"resourceId":{"anyOf":[{"type":"string"},{"type":"null"}]},"organizationId":{"anyOf":[{"type":"string"},{"type":"null"}]},"metadata":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},{"type":"null"}]},"ipAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"userAgent":{"anyOf":[{"type":"string"},{"type":"null"}]},"traceId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","actorId","actorEmail","actorRole","action","resourceType","resourceId","organizationId","metadata","ipAddress","userAgent","traceId","createdAt"]}},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"skip":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","total","limit","skip"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["AdminAuditLogs"],"description":"List system audit logs. Supports offset list params: limit (default 50, max 100), skip, sort=field:asc|desc (fields: createdAt, action). Optional filters: actorId, action, resourceType, resourceId, organizationId, since, until.","parameters":[{"in":"query","name":"actorId","schema":{"type":"string"}},{"in":"query","name":"action","schema":{"type":"string"}},{"in":"query","name":"resourceType","schema":{"type":"string"}},{"in":"query","name":"resourceId","schema":{"type":"string"}},{"in":"query","name":"organizationId","schema":{"type":"string"}},{"in":"query","name":"since","schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},{"in":"query","name":"until","schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"take","schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"skip","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},{"in":"query","name":"sort","schema":{"type":"string"}}]}},"/api/v1/vibe/projects":{"get":{"operationId":"getApiV1VibeProjects","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"sandboxId":{"anyOf":[{"type":"string"},{"type":"null"}]},"devServerUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"quickQuestions":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"userId":{"type":"string"},"organizationId":{"type":"string"},"serverId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","title","sandboxId","devServerUrl","quickQuestions","createdAt","updatedAt","userId","organizationId","serverId"]}},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"skip":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","total","limit","skip"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"List Vibe projects visible to the current user (org members). Optionally filter by organizationId.","parameters":[{"in":"query","name":"organizationId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":200}},{"in":"query","name":"take","schema":{"type":"integer","minimum":1,"maximum":200}},{"in":"query","name":"skip","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},{"in":"query","name":"sort","schema":{"type":"string"}}]},"post":{"operationId":"postApiV1VibeProjects","responses":{"201":{"description":"Created"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Create a new Vibe project scoped to an organization.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"sandboxId":{"anyOf":[{"type":"string"},{"type":"null"}]},"devServerUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["organizationId"]}}}}}},"/api/v1/vibe/projects/{id}":{"get":{"operationId":"getApiV1VibeProjectsById","responses":{"200":{"description":"OK"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Get a single Vibe project with its sessions","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]},"patch":{"operationId":"patchApiV1VibeProjectsById","responses":{"200":{"description":"Updated"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Update a Vibe project","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"organizationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sandboxId":{"anyOf":[{"type":"string"},{"type":"null"}]},"devServerUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"quickQuestions":{},"serverId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}}}}}}},"delete":{"operationId":"deleteApiV1VibeProjectsById","responses":{"200":{"description":"Deleted"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Delete a Vibe project (cascades to sessions)","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/vibe/sessions":{"get":{"operationId":"getApiV1VibeSessions","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"organizationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"projectId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"status":{"type":"string"},"sandboxId":{"anyOf":[{"type":"string"},{"type":"null"}]},"devServerUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"model":{"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"messageCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lastMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","organizationId","projectId","status","sandboxId","devServerUrl","model","title","messageCount","lastMessage","createdAt","updatedAt"]}},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"skip":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["items","total","limit","skip"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"List Vibe sessions visible to the current user (filter by organizationId and/or projectId).","parameters":[{"in":"query","name":"organizationId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"in":"query","name":"projectId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":200}},{"in":"query","name":"take","schema":{"type":"integer","minimum":1,"maximum":200}},{"in":"query","name":"skip","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},{"in":"query","name":"sort","schema":{"type":"string"}}]},"post":{"operationId":"postApiV1VibeSessions","responses":{"200":{"description":"OK"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Upsert (create or update) a Vibe session","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"organizationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"projectId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"status":{"type":"string"},"sandboxId":{"anyOf":[{"type":"string"},{"type":"null"}]},"devServerUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"messages":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"content":{"type":"string"}},"required":["type","content"]}},"canvasResults":{},"title":{"type":"string"},"messageCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastMessage":{"type":"string"}},"required":["id"]}}}}}},"/api/v1/vibe/sessions/init":{"post":{"operationId":"postApiV1VibeSessionsInit","responses":{"200":{"description":"OK"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Initialize a new Vibe session with a server-generated UUID. Auto-creates a project if no projectId is provided.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"projectId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}}}}}}}},"/api/v1/vibe/sessions/{id}":{"get":{"operationId":"getApiV1VibeSessionsById","responses":{"200":{"description":"OK"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Get a single Vibe session by ID","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]},"delete":{"operationId":"deleteApiV1VibeSessionsById","responses":{"200":{"description":"Deleted"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Delete a Vibe session by ID","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/vibe/projects/{id}/generate-title":{"post":{"operationId":"postApiV1VibeProjectsByIdGenerateTitle","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"}},"required":["title"]}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"500":{"description":"Internal error"}},"tags":["Vibe"],"description":"Generate a short project title (2–5 words) from the user's first message and persist it on the project.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","minLength":1}},"required":["message"]}}}}}},"/api/v1/vibe/projects/{id}/generate-quick-questions":{"post":{"operationId":"postApiV1VibeProjectsByIdGenerateQuickQuestions","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"quickQuestions":{"type":"array","items":{"type":"string"}},"toolCount":{"type":"number"},"skipped":{"type":"boolean"},"reason":{"type":"string"},"commandId":{"type":"string"}},"required":["ok","quickQuestions"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"500":{"description":"Internal error"}},"tags":["Vibe"],"description":"Generate 3–6 quick-start prompts for the inspector landing state from the sandbox server's tool list. Persists on the project and pushes a `set_quick_questions` bridge command.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/vibe/sandbox/status/{projectId}":{"get":{"operationId":"getApiV1VibeSandboxStatusByProjectId","responses":{"200":{"description":"OK"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Sandbox status for a project (alive, sandboxId, devServerUrl).","parameters":[{"schema":{"type":"string"},"in":"path","name":"projectId","required":true}]}},"/api/v1/vibe/sandbox/reconnect":{"post":{"operationId":"postApiV1VibeSandboxReconnect","responses":{"200":{"description":"OK"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Re-acquire a sandbox for a project. Uses in-memory cache first, then reconnects to the sandboxId stored on MangoProject, then falls back to the idle pool or creating fresh.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sandboxId":{"type":"string","minLength":1},"devServerUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["projectId","sandboxId"]}}}}}},"/api/v1/vibe/sandbox/keep-alive/{projectId}":{"post":{"operationId":"postApiV1VibeSandboxKeepAliveByProjectId","responses":{"200":{"description":"OK"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Reset the E2B auto-pause timer and refresh the sandbox's API key expiry.","parameters":[{"schema":{"type":"string"},"in":"path","name":"projectId","required":true}]}},"/api/v1/vibe/sandbox/keep-alive":{"post":{"operationId":"postApiV1VibeSandboxKeepAlive","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"alive":{"type":"boolean"}}}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Body-based keep-alive (accepts `{projectId}`). Same semantics as `POST /keep-alive/:projectId`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["projectId"]}}}}}},"/api/v1/vibe/sandbox/kill/{projectId}":{"post":{"operationId":"postApiV1VibeSandboxKillByProjectId","responses":{"200":{"description":"OK"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Terminate the sandbox for a project, revoke its API key, and clear sandboxId on MangoProject.","parameters":[{"schema":{"type":"string"},"in":"path","name":"projectId","required":true}]}},"/api/v1/vibe/sandbox/files":{"get":{"operationId":"getApiV1VibeSandboxFiles","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"available":{"type":"boolean"},"files":{}}}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Recursive project file tree (rooted at /home/user/mcp_project).","parameters":[{"in":"query","name":"projectId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]},"post":{"operationId":"postApiV1VibeSandboxFiles","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string"}},"required":["content"]}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"filePath":{"type":"string","minLength":1}},"required":["projectId","filePath"]}}}}},"put":{"operationId":"putApiV1VibeSandboxFiles","responses":{"200":{"description":"OK"},"400":{"description":"Bad request"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"filePath":{"type":"string","minLength":1},"content":{"type":"string"}},"required":["projectId","filePath","content"]}}}}}},"/api/v1/vibe/sandbox/files/read":{"post":{"operationId":"postApiV1VibeSandboxFilesRead","responses":{"200":{"description":"OK"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Read a single file from the sandbox (UTF-8 text only).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"path":{"type":"string","minLength":1}},"required":["projectId","path"]}}}}}},"/api/v1/vibe/sandbox/files/write":{"post":{"operationId":"postApiV1VibeSandboxFilesWrite","responses":{"200":{"description":"OK"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Write a file into the sandbox (overwrites).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"path":{"type":"string","minLength":1},"content":{"type":"string"}},"required":["projectId","path","content"]}}}}}},"/api/v1/vibe/sandbox/poll":{"post":{"operationId":"postApiV1VibeSandboxPoll","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"ready":{"type":"boolean"},"reason":{"type":"string"},"sandboxId":{"anyOf":[{"type":"string"},{"type":"null"}]},"tools":{"type":"array","items":{}}},"required":["ready"]}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Poll the sandbox MCP server by sending an `initialize` request. Returns readiness + tools info.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["projectId"]}}}}}},"/api/v1/vibe/sandbox/terminal/stream":{"get":{"operationId":"getApiV1VibeSandboxTerminalStream","responses":{"200":{"description":"text/event-stream"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"SSE stream of PTY output (creates a PTY on first connect)."}},"/api/v1/vibe/sandbox/terminal/input":{"post":{"operationId":"postApiV1VibeSandboxTerminalInput","responses":{"200":{"description":"OK"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"data":{"type":"string"}},"required":["projectId","data"]}}}}}},"/api/v1/vibe/sandbox/terminal/resize":{"post":{"operationId":"postApiV1VibeSandboxTerminalResize","responses":{"200":{"description":"OK"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"cols":{"type":"integer","minimum":1,"maximum":500},"rows":{"type":"integer","minimum":1,"maximum":500}},"required":["projectId","cols","rows"]}}}}}},"/api/v1/vibe/sandbox/check":{"get":{"operationId":"getApiV1VibeSandboxCheck","responses":{"200":{"description":"OK"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"]}},"/api/v1/vibe/sandbox/logs/{projectId}":{"get":{"operationId":"getApiV1VibeSandboxLogsByProjectId","responses":{"200":{"description":"OK"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Tail of the dev server log file (last 500 lines).","parameters":[{"schema":{"type":"string"},"in":"path","name":"projectId","required":true}]}},"/api/v1/vibe/sandbox/env":{"get":{"operationId":"getApiV1VibeSandboxEnv","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"envVars":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}},"exampleKeys":{"type":"array","items":{"type":"string"}}},"required":["envVars","exampleKeys"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Read the project's current `.env` vars (and any `.env.example` keys) from the sandbox.","parameters":[{"in":"query","name":"projectId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]},"post":{"operationId":"postApiV1VibeSandboxEnv","responses":{"200":{"description":"OK"},"400":{"description":"Bad request"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Bulk-replace the project's `.env` file with the supplied list. Any key omitted from the payload is removed. Triggers HMR on the sandbox dev server and feeds the publish pipeline when the user deploys.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"envVars":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z_][A-Za-z0-9_]*$"},"value":{"type":"string","maxLength":100000}},"required":["key","value"]}}},"required":["projectId","envVars"]}}}}}},"/api/v1/vibe/sandbox/files/tarball":{"get":{"operationId":"getApiV1VibeSandboxFilesTarball","responses":{"200":{"description":"application/gzip"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Download project files as a gzip tarball.","parameters":[{"in":"query","name":"projectId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/vibe/sandbox/inspector/{projectId}":{"get":{"operationId":"getApiV1VibeSandboxInspectorByProjectId","responses":{"200":{"description":"OK"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Build the embedded Inspector iframe URL for a project's sandbox.","parameters":[{"schema":{"type":"string"},"in":"path","name":"projectId","required":true}]}},"/api/v1/vibe/chat/stream":{"post":{"operationId":"postApiV1VibeChatStream","responses":{"200":{"description":"text/event-stream"},"400":{"description":"Bad request"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Run the Vibe agent against the user's sandbox and stream token/tool/status events as SSE. Use JSON (application/json) or multipart/form-data with field `body` (JSON string, VibeChatStreamBody) and optional file field `attachments`."}},"/api/v1/vibe/chat/cancel":{"post":{"operationId":"postApiV1VibeChatCancel","responses":{"200":{"description":"OK"},"400":{"description":"Bad request"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"Cancel the active Vibe chat stream for a project. Aborts the in-flight agent run if any, which triggers SIGKILL on the sandbox process and the post-abort pkill cleanup. Idempotent: returns ok with cancelled=false if no run is active.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["projectId"]}}}}}},"/api/v1/vibe/chat/mcp/stream":{"post":{"operationId":"postApiV1VibeChatMcpStream","responses":{"200":{"description":"text/event-stream"},"400":{"description":"Bad request"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"429":{"description":"Too many requests"},"500":{"description":"Internal error"}},"tags":["Vibe"],"description":"Right-pane MCP chat: connects to the sandbox MCP server, drives a tool-using LUNA agent loop server-side, and streams inspector-compatible events. Public (no session) because it's called from the inspector iframe served on an ephemeral sandbox origin; per-IP rate-limited."}},"/api/v1/vibe/chat/bridge/command":{"post":{"operationId":"postApiV1VibeChatBridgeCommand","responses":{"200":{"description":"OK"},"400":{"description":"Bad request"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"command":{"type":"string","minLength":1},"payload":{}},"required":["projectId","command"]}}}}}},"/api/v1/vibe/chat/bridge/state":{"post":{"operationId":"postApiV1VibeChatBridgeState","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"state":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"chatList":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"required":["state"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"chatId":{"type":"string"}},"required":["projectId"]}}}}}},"/api/v1/vibe/chat/bridge/event":{"post":{"operationId":"postApiV1VibeChatBridgeEvent","responses":{"200":{"description":"OK"},"400":{"description":"Bad request"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"event":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["projectId","event"]}}}}}},"/api/v1/vibe/chat/bridge/commands":{"post":{"operationId":"postApiV1VibeChatBridgeCommands","responses":{"200":{"description":"OK"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"]}},"/api/v1/vibe/chat/bridge/clear-widget-errors":{"post":{"operationId":"postApiV1VibeChatBridgeClearWidgetErrors","responses":{"200":{"description":"OK"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["projectId"]}}}}}},"/api/v1/vibe/chat/bridge/stream":{"get":{"operationId":"getApiV1VibeChatBridgeStream","responses":{"200":{"description":"text/event-stream"},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"description":"SSE stream of bridge commands + state events for a project."}},"/api/v1/vibe/publish":{"post":{"operationId":"allApiV1Vibe","responses":{"200":{"description":"Deployment queued","content":{"application/json":{"schema":{"type":"object","properties":{"deploymentId":{"type":"string"},"repoUrl":{"type":"string"},"serverId":{"type":"string"},"status":{"type":"string"}},"required":["deploymentId","repoUrl","serverId","status"]}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"409":{"description":"Repo mismatch with linked server"}},"tags":["Vibe"],"description":"Publish a Vibe project: tar the sandbox, push to GitHub, deploy via server pipeline. First publish creates a Server; subsequent publishes trigger a redeploy on the linked server.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"repoName":{"type":"string","minLength":1},"isPrivate":{"type":"boolean"},"org":{"type":"string"},"sandboxId":{"anyOf":[{"type":"string"},{"type":"null"}]},"organizationId":{"type":"string"},"installationId":{"type":"string"}},"required":["projectId","repoName"]}}}}}},"/api/v1/vibe/publish/status":{"get":{"operationId":"allApiV1Vibe","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string"},"serverId":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"deploymentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"mcpUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"serverSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"domain":{"anyOf":[{"type":"string"},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["serverId","status","deploymentId","mcpUrl"]}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"parameters":[{"in":"query","name":"deploymentId","schema":{"type":"string","minLength":1}},{"in":"query","name":"projectId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}]}},"/api/v1/vibe/publish/mcp-ready":{"post":{"operationId":"allApiV1Vibe","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"ready":{"type":"boolean"}},"required":["ready"]}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Vibe"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mcpUrl":{"type":"string"}},"required":["mcpUrl"]}}}}}},"/api/v1/chat/completions":{"post":{"operationId":"postApiV1ChatCompletions","tags":["Chat"],"description":"OpenAI-compatible LLM passthrough (org Autumn llm_tokens credits).","responses":{"200":{"description":"OpenAI chat/completions SSE stream"},"400":{"description":"Bad request"},"402":{"description":"Organization LLM credits exhausted"},"429":{"description":"Login required or rate limited"},"502":{"description":"Upstream LLM error"}}}},"/api/v1/responses":{"post":{"operationId":"postApiV1Responses","tags":["Chat"],"description":"Responses API passthrough through OpenRouter (org llm_tokens credits).","responses":{"200":{"description":"Native model response or SSE stream"},"400":{"description":"Bad request"},"402":{"description":"Organization LLM credits exhausted"},"429":{"description":"Login required or rate limited"},"502":{"description":"Upstream LLM error"}}}},"/api/v1/messages":{"post":{"operationId":"postApiV1Messages","tags":["Chat"],"description":"Anthropic Messages API passthrough through OpenRouter (org llm_tokens credits).","responses":{"200":{"description":"Native model response or SSE stream"},"400":{"description":"Bad request"},"402":{"description":"Organization LLM credits exhausted"},"429":{"description":"Login required or rate limited"},"502":{"description":"Upstream LLM error"}}}},"/api/v1/inspector/chat/stream":{"post":{"operationId":"postApiV1InspectorChatStream","tags":["Inspector"],"description":"Server-side MCP chat for hosted inspector (remote MCP servers). Authenticated callers use org credits; legacy anonymous callers use temporary per-IP limits.","responses":{"200":{"description":"Vercel AI data-stream format"},"400":{"description":"Bad request"},"401":{"description":"Upstream MCP server rejected token — mcpServerUrl in body"},"429":{"description":"Login required or credits exhausted"},"500":{"description":"Internal error"}}}},"/api/v1/inspector/llm/stream":{"post":{"operationId":"postApiV1InspectorLlmStream","tags":["Inspector"],"description":"Alias of POST /api/v1/chat/completions for localhost managed inspector chat.","responses":{"200":{"description":"OpenAI chat/completions SSE stream"},"400":{"description":"Bad request"},"429":{"description":"Login required or credits exhausted"},"502":{"description":"Upstream LLM error"}}}},"/api/v1/inspector/llm/chat/completions":{"post":{"operationId":"postApiV1InspectorLlmChatCompletions","tags":["Inspector"],"description":"Alias of POST /api/v1/chat/completions for localhost managed inspector chat.","responses":{"200":{"description":"OpenAI chat/completions SSE stream"},"400":{"description":"Bad request"},"429":{"description":"Login required or credits exhausted"},"502":{"description":"Upstream LLM error"}}}},"/api/v1/integration-destinations":{"get":{"operationId":"getApiV1IntegrationDestinations","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"destinations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"organizationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"kind":{"type":"string","const":"otlp"},"config":{"type":"object","properties":{"endpoint":{"type":"string"},"headerNames":{"type":"array","items":{"type":"string"}},"protocol":{"type":"string","const":"http/protobuf"},"compression":{"type":"string","enum":["none","gzip"]},"resourceAttributeKeys":{"type":"array","items":{"type":"string"}}},"required":["endpoint","headerNames","protocol","compression","resourceAttributeKeys"]},"enabled":{"type":"boolean"},"verificationStatus":{"type":"string","enum":["pending","verified","failed"]},"lastVerifiedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"lastVerificationError":{"anyOf":[{"type":"string"},{"type":"null"}]},"routes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serverId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"signals":{"type":"array","items":{"type":"string","enum":["mcp_requests","runtime_logs","build_logs"]}},"includeHttpRequests":{"type":"boolean"},"checkpoints":{"type":"array","items":{"type":"object","properties":{"signal":{"type":"string","enum":["mcp_requests","runtime_logs","build_logs"]},"cursorTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"lastAttemptAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"nextAttemptAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"lastSuccessAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"lastError":{"anyOf":[{"type":"string"},{"type":"null"}]},"consecutiveFailures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["signal","cursorTime","lastAttemptAt","nextAttemptAt","lastSuccessAt","lastError","consecutiveFailures"]}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","signals","includeHttpRequests","checkpoints","createdAt","updatedAt"]}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","organizationId","name","kind","config","enabled","verificationStatus","lastVerifiedAt","lastVerificationError","routes","createdAt","updatedAt"]}}},"required":["destinations"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Integration Destinations"],"description":"List reusable organization OTLP integrations and per-server log routes.","parameters":[{"in":"query","name":"organizationId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]},"post":{"operationId":"postApiV1IntegrationDestinations","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"organizationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"kind":{"type":"string","const":"otlp"},"config":{"type":"object","properties":{"endpoint":{"type":"string"},"headerNames":{"type":"array","items":{"type":"string"}},"protocol":{"type":"string","const":"http/protobuf"},"compression":{"type":"string","enum":["none","gzip"]},"resourceAttributeKeys":{"type":"array","items":{"type":"string"}}},"required":["endpoint","headerNames","protocol","compression","resourceAttributeKeys"]},"enabled":{"type":"boolean"},"verificationStatus":{"type":"string","enum":["pending","verified","failed"]},"lastVerifiedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"lastVerificationError":{"anyOf":[{"type":"string"},{"type":"null"}]},"routes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serverId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"signals":{"type":"array","items":{"type":"string","enum":["mcp_requests","runtime_logs","build_logs"]}},"includeHttpRequests":{"type":"boolean"},"checkpoints":{"type":"array","items":{"type":"object","properties":{"signal":{"type":"string","enum":["mcp_requests","runtime_logs","build_logs"]},"cursorTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"lastAttemptAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"nextAttemptAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"lastSuccessAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"lastError":{"anyOf":[{"type":"string"},{"type":"null"}]},"consecutiveFailures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["signal","cursorTime","lastAttemptAt","nextAttemptAt","lastSuccessAt","lastError","consecutiveFailures"]}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","signals","includeHttpRequests","checkpoints","createdAt","updatedAt"]}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","organizationId","name","kind","config","enabled","verificationStatus","lastVerifiedAt","lastVerificationError","routes","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Integration Destinations"],"description":"Verify and create an organization-owned OTLP/HTTP protobuf logs destination. The destination is persisted only after the verification record is accepted.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":1,"maxLength":120},"enabled":{"default":true,"type":"boolean"},"kind":{"type":"string","const":"otlp"},"config":{"type":"object","properties":{"endpoint":{"type":"string","maxLength":2048,"format":"uri"},"headers":{"default":{},"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!#$%&'*+.^_`|~0-9A-Za-z-]+$"},"additionalProperties":{"type":"string","maxLength":2048}},"protocol":{"default":"http/protobuf","type":"string","const":"http/protobuf"},"compression":{"default":"gzip","type":"string","enum":["none","gzip"]},"resourceAttributes":{"default":{},"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z][A-Za-z0-9_.-]*$"},"additionalProperties":{"type":"string","maxLength":2048}}},"required":["endpoint"],"additionalProperties":false}},"required":["organizationId","name","kind","config"],"additionalProperties":false}}}}}},"/api/v1/integration-destinations/{id}":{"patch":{"operationId":"patchApiV1IntegrationDestinationsById","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"organizationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"kind":{"type":"string","const":"otlp"},"config":{"type":"object","properties":{"endpoint":{"type":"string"},"headerNames":{"type":"array","items":{"type":"string"}},"protocol":{"type":"string","const":"http/protobuf"},"compression":{"type":"string","enum":["none","gzip"]},"resourceAttributeKeys":{"type":"array","items":{"type":"string"}}},"required":["endpoint","headerNames","protocol","compression","resourceAttributeKeys"]},"enabled":{"type":"boolean"},"verificationStatus":{"type":"string","enum":["pending","verified","failed"]},"lastVerifiedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"lastVerificationError":{"anyOf":[{"type":"string"},{"type":"null"}]},"routes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serverId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"signals":{"type":"array","items":{"type":"string","enum":["mcp_requests","runtime_logs","build_logs"]}},"includeHttpRequests":{"type":"boolean"},"checkpoints":{"type":"array","items":{"type":"object","properties":{"signal":{"type":"string","enum":["mcp_requests","runtime_logs","build_logs"]},"cursorTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"lastAttemptAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"nextAttemptAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"lastSuccessAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"lastError":{"anyOf":[{"type":"string"},{"type":"null"}]},"consecutiveFailures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["signal","cursorTime","lastAttemptAt","nextAttemptAt","lastSuccessAt","lastError","consecutiveFailures"]}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","signals","includeHttpRequests","checkpoints","createdAt","updatedAt"]}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","organizationId","name","kind","config","enabled","verificationStatus","lastVerifiedAt","lastVerificationError","routes","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Integration Destinations"],"description":"Update an OTLP integration. Replacing its config requires re-verification.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"enabled":{"type":"boolean"},"config":{"type":"object","properties":{"endpoint":{"type":"string","maxLength":2048,"format":"uri"},"headers":{"default":{},"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!#$%&'*+.^_`|~0-9A-Za-z-]+$"},"additionalProperties":{"type":"string","maxLength":2048}},"protocol":{"default":"http/protobuf","type":"string","const":"http/protobuf"},"compression":{"default":"gzip","type":"string","enum":["none","gzip"]},"resourceAttributes":{"default":{},"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z][A-Za-z0-9_.-]*$"},"additionalProperties":{"type":"string","maxLength":2048}}},"required":["endpoint"],"additionalProperties":false}},"additionalProperties":false}}}}},"delete":{"operationId":"deleteApiV1IntegrationDestinationsById","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Integration Destinations"],"description":"Delete an OTLP destination and all of its server routes and checkpoints.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/integration-destinations/{id}/routes/{serverId}":{"put":{"operationId":"putApiV1IntegrationDestinationsByIdRoutesByServerId","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"organizationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"kind":{"type":"string","const":"otlp"},"config":{"type":"object","properties":{"endpoint":{"type":"string"},"headerNames":{"type":"array","items":{"type":"string"}},"protocol":{"type":"string","const":"http/protobuf"},"compression":{"type":"string","enum":["none","gzip"]},"resourceAttributeKeys":{"type":"array","items":{"type":"string"}}},"required":["endpoint","headerNames","protocol","compression","resourceAttributeKeys"]},"enabled":{"type":"boolean"},"verificationStatus":{"type":"string","enum":["pending","verified","failed"]},"lastVerifiedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"lastVerificationError":{"anyOf":[{"type":"string"},{"type":"null"}]},"routes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"serverId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"signals":{"type":"array","items":{"type":"string","enum":["mcp_requests","runtime_logs","build_logs"]}},"includeHttpRequests":{"type":"boolean"},"checkpoints":{"type":"array","items":{"type":"object","properties":{"signal":{"type":"string","enum":["mcp_requests","runtime_logs","build_logs"]},"cursorTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"lastAttemptAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"nextAttemptAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"lastSuccessAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"lastError":{"anyOf":[{"type":"string"},{"type":"null"}]},"consecutiveFailures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["signal","cursorTime","lastAttemptAt","nextAttemptAt","lastSuccessAt","lastError","consecutiveFailures"]}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","serverId","signals","includeHttpRequests","checkpoints","createdAt","updatedAt"]}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","organizationId","name","kind","config","enabled","verificationStatus","lastVerifiedAt","lastVerificationError","routes","createdAt","updatedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Integration Destinations"],"description":"Create or replace one server's selected OTLP log signals.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"serverId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"signals":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"string","enum":["mcp_requests","runtime_logs","build_logs"]}},"includeHttpRequests":{"default":false,"type":"boolean"}},"required":["signals"],"additionalProperties":false}}}}},"delete":{"operationId":"deleteApiV1IntegrationDestinationsByIdRoutesByServerId","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Integration Destinations"],"description":"Stop exporting one server without deleting the organization destination.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true},{"in":"path","name":"serverId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/integration-destinations/{id}/verify":{"post":{"operationId":"postApiV1IntegrationDestinationsByIdVerify","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"verifiedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["ok","verifiedAt"]}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","const":"VALIDATION_ERROR"},"details":{}},"required":["error","code","details"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"tags":["Integration Destinations"],"description":"Send one synthetic log record before background export is enabled.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}]}},"/api/v1/public/book-call":{"post":{"operationId":"postApiV1PublicBookCall","tags":["Public"],"description":"Forward a /book-call form submission to the configured Item webhook. Public — IP rate-limited.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"429":{"description":"Rate limited"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","minLength":1,"maxLength":200},"country":{"type":"string","minLength":1,"maxLength":100},"companyWebsite":{"type":"string","minLength":1,"maxLength":500},"companySize":{"type":"string","enum":["1-10","11-50","51-200","201-500","500+"]},"message":{"type":"string","maxLength":2000}},"required":["email","name","country","companyWebsite","companySize"]}}}}}},"/api/v1/public/catalog/search":{"get":{"operationId":"getApiV1PublicCatalogSearch","tags":["Public"],"description":"Search public-catalog servers by name/URL/slug, optionally filtered by category. Offset-paginated, ranked by Manufact documentation score. Public.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}]},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"categories":{"type":"array","items":{"type":"string"}},"curated":{"type":"boolean"},"documentationScoreChange":{"anyOf":[{"type":"number"},{"type":"null"}]},"lastReviewedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["slug","name","url","icon","score","categories","curated","documentationScoreChange","lastReviewedAt"]}},"total":{"type":"number"},"limit":{"type":"number"},"skip":{"type":"number"}},"required":["items","total","limit","skip"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"parameters":[{"in":"query","name":"q","schema":{"type":"string","maxLength":200}},{"in":"query","name":"category","schema":{"type":"string","maxLength":100}},{"in":"query","name":"limit","schema":{"default":50,"type":"integer","minimum":1,"maximum":3000}},{"in":"query","name":"skip","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}}]}},"/api/v1/public/catalog":{"post":{"operationId":"postApiV1PublicCatalog","tags":["Public"],"description":"Find or create an external server in the public catalog. Metadata is set on creation only. Submissions start core publishing checks and a documentation review unless audit=false, or return the current review if either is still running. Poll the catalog entry for progress. No end-to-end or premium semantic policy review. Public — IP rate-limited.","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"catalog":{"anyOf":[{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}},{"type":"null"}]},"protocolMetadata":{"anyOf":[{"type":"object","properties":{"protocolVersion":{"type":"string","minLength":1,"maxLength":200},"server":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"title":{"type":"string","minLength":1,"maxLength":200},"version":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":1000},"websiteUrl":{"type":"string","maxLength":2048,"format":"uri"},"icons":{"type":"object","properties":{"count":{"type":"integer","minimum":1,"maximum":16},"hasHighResolution":{"type":"boolean"}},"required":["count","hasHighResolution"]}},"required":["name"]},"capabilities":{"type":"object","properties":{"tools":{"type":"object","properties":{"listChanged":{"type":"boolean"}}},"resources":{"type":"object","properties":{"subscribe":{"type":"boolean"},"listChanged":{"type":"boolean"}}},"prompts":{"type":"object","properties":{"listChanged":{"type":"boolean"}}},"logging":{"type":"boolean","const":true},"completions":{"type":"boolean","const":true}}},"extensions":{"maxItems":16,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"instructions":{"type":"string","minLength":1,"maxLength":2000},"metadataScore":{"type":"object","properties":{"score":{"type":"integer","minimum":0,"maximum":100},"checks":{"minItems":8,"maxItems":8,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["identity","title","description","version","website","icon","instructions","capabilities"]},"label":{"type":"string","minLength":1,"maxLength":200},"points":{"type":"integer","minimum":1,"maximum":100},"status":{"type":"string","enum":["pass","missing"]},"hint":{"type":"string","minLength":1,"maxLength":240}},"required":["key","label","points","status"]}}},"required":["score","checks"]}},"required":["protocolVersion","metadataScore"]},{"type":"null"}]},"categoryClassification":{"anyOf":[{"type":"object","properties":{"category":{"anyOf":[{"type":"string","enum":["developer-tools","data-analytics","productivity","sales-and-marketing","marketing-seo","financial-services","communication","search-research","design-creative","automation-workflows","customer-support","commerce-shopping"]},{"type":"null"}]},"probabilities":{"type":"object","propertyNames":{"type":"string","enum":["developer-tools","data-analytics","productivity","sales-and-marketing","marketing-seo","financial-services","communication","search-research","design-creative","automation-workflows","customer-support","commerce-shopping","none"]},"additionalProperties":{"type":"number","minimum":0,"maximum":1},"required":["developer-tools","data-analytics","productivity","sales-and-marketing","marketing-seo","financial-services","communication","search-research","design-creative","automation-workflows","customer-support","commerce-shopping","none"]},"confidence":{"type":"number","minimum":0,"maximum":1},"model":{"type":"string","minLength":1,"maxLength":100},"classifiedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["category","probabilities","confidence","model","classifiedAt"]},{"type":"null"}]},"reviewUsedAuth":{"type":"boolean"},"quality":{"type":"object","properties":{"imported":{"type":"boolean","const":true},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"displayScore":{"anyOf":[{"type":"number"},{"type":"null"}]},"sections":{"type":"object","properties":{"protocol":{"type":"object","properties":{"checkIds":{"type":"array","items":{"type":"string"}},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"points":{"type":"number"},"maxPoints":{"type":"number"},"applicable":{"type":"boolean"}},"required":["checkIds","score","points","maxPoints","applicable"]},"tools":{"type":"object","properties":{"checkIds":{"type":"array","items":{"type":"string"}},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"points":{"type":"number"},"maxPoints":{"type":"number"},"applicable":{"type":"boolean"}},"required":["checkIds","score","points","maxPoints","applicable"]},"apps":{"type":"object","properties":{"checkIds":{"type":"array","items":{"type":"string"}},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"points":{"type":"number"},"maxPoints":{"type":"number"},"applicable":{"type":"boolean"}},"required":["checkIds","score","points","maxPoints","applicable"]},"metadata":{"type":"object","properties":{"checkIds":{"type":"array","items":{"type":"string"}},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"points":{"type":"number"},"maxPoints":{"type":"number"},"applicable":{"type":"boolean"}},"required":["checkIds","score","points","maxPoints","applicable"]},"documentation":{"type":"object","properties":{"checkIds":{"type":"array","items":{"type":"string"}},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"points":{"type":"number"},"maxPoints":{"type":"number"},"applicable":{"type":"boolean"}},"required":["checkIds","score","points","maxPoints","applicable"]}},"required":["protocol","tools","apps","metadata","documentation"]}},"required":["score","displayScore","sections"]},"audit":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","enum":["pending","running","completed","failed"]},"targetUrl":{"type":"string"},"durationMs":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"isReadyForChatgpt":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"isReadyForClaudeai":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"checks":{"type":"array","items":{"type":"object","properties":{"checkId":{"type":"string"},"checkName":{"type":"string"},"status":{"type":"string","enum":["pass","fail","skip","pending"]},"severity":{"type":"string"},"category":{"type":"string"},"scope":{"type":"string"},"platforms":{"type":"array","items":{"type":"string"}},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"details":{"anyOf":[{},{"type":"null"}]},"hint":{"anyOf":[{},{"type":"null"}]},"durationMs":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]}},"required":["checkId","checkName","status","severity","category","scope","platforms","message","details","hint","durationMs"]}}},"required":["status","targetUrl","durationMs","errorMessage","isReadyForChatgpt","isReadyForClaudeai","startedAt","completedAt","createdAt"]},{"type":"null"}]},"reviewAttempt":{"type":"object","properties":{"status":{"type":"string","const":"failed"},"error":{"type":"string"},"errorCode":{"type":"string"},"startedAt":{"type":"string"},"completedAt":{"type":"string"}},"required":["status","error"]},"documentationReview":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","enum":["running","completed","failed"]},"score":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"totalTools":{"type":"integer","minimum":0,"maximum":9007199254740991},"tools":{"type":"array","items":{"type":"object","properties":{"tool":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":256},"title":{"type":"string","maxLength":1000},"description":{"type":"string","maxLength":100000},"inputSchema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"outputSchema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"annotations":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["name","inputSchema"]},"result":{"type":"object","properties":{"displayName":{"type":"string"},"displayNameConfidence":{"type":"number","minimum":0,"maximum":1},"testSuitability":{"type":"number","minimum":0,"maximum":100},"score":{"type":"number","minimum":0,"maximum":100},"dimensions":{"type":"object","properties":{"title":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100},"confidence":{"type":"number","minimum":0,"maximum":1},"feedback":{"type":"string"}},"required":["score","confidence","feedback"]},"description":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100},"confidence":{"type":"number","minimum":0,"maximum":1},"feedback":{"type":"string"}},"required":["score","confidence","feedback"]},"schema":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100},"confidence":{"type":"number","minimum":0,"maximum":1},"feedback":{"type":"string"}},"required":["score","confidence","feedback"]},"annotations":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100},"confidence":{"type":"number","minimum":0,"maximum":1},"feedback":{"type":"string"}},"required":["score","confidence","feedback"]},"output":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100},"confidence":{"type":"number","minimum":0,"maximum":1},"feedback":{"type":"string"}},"required":["score","confidence","feedback"]}},"required":["title","description","schema"]},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"description":{"type":"string"},"feedback":{"type":"string"}},"required":["path","description","feedback"]}},"model":{"type":"string"},"inputTokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"durationMs":{"type":"number","minimum":0},"questionCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["displayName","displayNameConfidence","score","dimensions","fields","model","inputTokens","durationMs","questionCount"]},"error":{"type":"string"}},"required":["tool"]}},"startedAt":{"type":"string"},"completedAt":{"type":"string"},"error":{"type":"string"},"errorCode":{"type":"string"},"hasScoreHistory":{"type":"boolean"}},"required":["status","score","totalTools","tools","hasScoreHistory"]},{"type":"null"}]}},"required":["slug","name","url","icon","description","catalog","protocolMetadata","categoryClassification","reviewUsedAuth","quality","audit","documentationReview"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"429":{"description":"Rate limited"},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048},"auth":{"type":"object","properties":{"type":{"type":"string","const":"oauth2"},"access_token":{"type":"string","minLength":1,"maxLength":8192},"token_type":{"type":"string","maxLength":32},"expires_at":{"type":"number"},"refresh_token":{"type":"string","maxLength":8192},"scope":{"type":"string","maxLength":4096},"token_endpoint":{"type":"string","maxLength":2048},"client_id":{"type":"string","maxLength":512},"client_secret":{"type":"string","maxLength":8192},"resource":{"type":"string","maxLength":2048},"updated_at":{"type":"string"}},"required":["type","access_token"]},"icon":{"type":"string","minLength":1,"maxLength":65536},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":2000},"catalog":{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}},"audit":{"default":true,"type":"boolean"}},"required":["url"]}}}}}},"/api/v1/public/catalog/{slug}/score-history":{"get":{"operationId":"getApiV1PublicCatalogBySlugScoreHistory","tags":["Public"],"description":"Read score history for one public-catalog server. Authentication required.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"history":{"maxItems":30,"type":"array","items":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["score","completedAt"]}}},"required":["history"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"parameters":[{"in":"path","name":"slug","schema":{"type":"string","minLength":1,"maxLength":160},"required":true}]}},"/api/v1/public/catalog/{slug}":{"get":{"operationId":"getApiV1PublicCatalogBySlug","tags":["Public"],"description":"Read one public-catalog server, its core publishing checks, and its documentation review. Public.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"catalog":{"anyOf":[{"type":"object","properties":{"source":{"type":"string","maxLength":100},"categories":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"curated":{"type":"boolean"},"tools":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"prompts":{"maxItems":200,"type":"array","items":{"type":"string","maxLength":200}},"authorName":{"type":"string","maxLength":200},"authorUrl":{"type":"string","maxLength":2048},"verifiedTier":{"type":"string","maxLength":50},"worksWith":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":50}},"documentation":{"type":"string","maxLength":2048},"authPosture":{"type":"string","maxLength":50}}},{"type":"null"}]},"protocolMetadata":{"anyOf":[{"type":"object","properties":{"protocolVersion":{"type":"string","minLength":1,"maxLength":200},"server":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"title":{"type":"string","minLength":1,"maxLength":200},"version":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":1000},"websiteUrl":{"type":"string","maxLength":2048,"format":"uri"},"icons":{"type":"object","properties":{"count":{"type":"integer","minimum":1,"maximum":16},"hasHighResolution":{"type":"boolean"}},"required":["count","hasHighResolution"]}},"required":["name"]},"capabilities":{"type":"object","properties":{"tools":{"type":"object","properties":{"listChanged":{"type":"boolean"}}},"resources":{"type":"object","properties":{"subscribe":{"type":"boolean"},"listChanged":{"type":"boolean"}}},"prompts":{"type":"object","properties":{"listChanged":{"type":"boolean"}}},"logging":{"type":"boolean","const":true},"completions":{"type":"boolean","const":true}}},"extensions":{"maxItems":16,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"instructions":{"type":"string","minLength":1,"maxLength":2000},"metadataScore":{"type":"object","properties":{"score":{"type":"integer","minimum":0,"maximum":100},"checks":{"minItems":8,"maxItems":8,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["identity","title","description","version","website","icon","instructions","capabilities"]},"label":{"type":"string","minLength":1,"maxLength":200},"points":{"type":"integer","minimum":1,"maximum":100},"status":{"type":"string","enum":["pass","missing"]},"hint":{"type":"string","minLength":1,"maxLength":240}},"required":["key","label","points","status"]}}},"required":["score","checks"]}},"required":["protocolVersion","metadataScore"]},{"type":"null"}]},"categoryClassification":{"anyOf":[{"type":"object","properties":{"category":{"anyOf":[{"type":"string","enum":["developer-tools","data-analytics","productivity","sales-and-marketing","marketing-seo","financial-services","communication","search-research","design-creative","automation-workflows","customer-support","commerce-shopping"]},{"type":"null"}]},"probabilities":{"type":"object","propertyNames":{"type":"string","enum":["developer-tools","data-analytics","productivity","sales-and-marketing","marketing-seo","financial-services","communication","search-research","design-creative","automation-workflows","customer-support","commerce-shopping","none"]},"additionalProperties":{"type":"number","minimum":0,"maximum":1},"required":["developer-tools","data-analytics","productivity","sales-and-marketing","marketing-seo","financial-services","communication","search-research","design-creative","automation-workflows","customer-support","commerce-shopping","none"]},"confidence":{"type":"number","minimum":0,"maximum":1},"model":{"type":"string","minLength":1,"maxLength":100},"classifiedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["category","probabilities","confidence","model","classifiedAt"]},{"type":"null"}]},"reviewUsedAuth":{"type":"boolean"},"quality":{"type":"object","properties":{"imported":{"type":"boolean","const":true},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"displayScore":{"anyOf":[{"type":"number"},{"type":"null"}]},"sections":{"type":"object","properties":{"protocol":{"type":"object","properties":{"checkIds":{"type":"array","items":{"type":"string"}},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"points":{"type":"number"},"maxPoints":{"type":"number"},"applicable":{"type":"boolean"}},"required":["checkIds","score","points","maxPoints","applicable"]},"tools":{"type":"object","properties":{"checkIds":{"type":"array","items":{"type":"string"}},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"points":{"type":"number"},"maxPoints":{"type":"number"},"applicable":{"type":"boolean"}},"required":["checkIds","score","points","maxPoints","applicable"]},"apps":{"type":"object","properties":{"checkIds":{"type":"array","items":{"type":"string"}},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"points":{"type":"number"},"maxPoints":{"type":"number"},"applicable":{"type":"boolean"}},"required":["checkIds","score","points","maxPoints","applicable"]},"metadata":{"type":"object","properties":{"checkIds":{"type":"array","items":{"type":"string"}},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"points":{"type":"number"},"maxPoints":{"type":"number"},"applicable":{"type":"boolean"}},"required":["checkIds","score","points","maxPoints","applicable"]},"documentation":{"type":"object","properties":{"checkIds":{"type":"array","items":{"type":"string"}},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"points":{"type":"number"},"maxPoints":{"type":"number"},"applicable":{"type":"boolean"}},"required":["checkIds","score","points","maxPoints","applicable"]}},"required":["protocol","tools","apps","metadata","documentation"]}},"required":["score","displayScore","sections"]},"audit":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","enum":["pending","running","completed","failed"]},"targetUrl":{"type":"string"},"durationMs":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"isReadyForChatgpt":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"isReadyForClaudeai":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"checks":{"type":"array","items":{"type":"object","properties":{"checkId":{"type":"string"},"checkName":{"type":"string"},"status":{"type":"string","enum":["pass","fail","skip","pending"]},"severity":{"type":"string"},"category":{"type":"string"},"scope":{"type":"string"},"platforms":{"type":"array","items":{"type":"string"}},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"details":{"anyOf":[{},{"type":"null"}]},"hint":{"anyOf":[{},{"type":"null"}]},"durationMs":{"anyOf":[{"type":"integer","minimum":-2147483648,"maximum":2147483647},{"type":"null"}]}},"required":["checkId","checkName","status","severity","category","scope","platforms","message","details","hint","durationMs"]}}},"required":["status","targetUrl","durationMs","errorMessage","isReadyForChatgpt","isReadyForClaudeai","startedAt","completedAt","createdAt"]},{"type":"null"}]},"reviewAttempt":{"type":"object","properties":{"status":{"type":"string","const":"failed"},"error":{"type":"string"},"errorCode":{"type":"string"},"startedAt":{"type":"string"},"completedAt":{"type":"string"}},"required":["status","error"]},"documentationReview":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","enum":["running","completed","failed"]},"score":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"totalTools":{"type":"integer","minimum":0,"maximum":9007199254740991},"tools":{"type":"array","items":{"type":"object","properties":{"tool":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":256},"title":{"type":"string","maxLength":1000},"description":{"type":"string","maxLength":100000},"inputSchema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"outputSchema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"annotations":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["name","inputSchema"]},"result":{"type":"object","properties":{"displayName":{"type":"string"},"displayNameConfidence":{"type":"number","minimum":0,"maximum":1},"testSuitability":{"type":"number","minimum":0,"maximum":100},"score":{"type":"number","minimum":0,"maximum":100},"dimensions":{"type":"object","properties":{"title":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100},"confidence":{"type":"number","minimum":0,"maximum":1},"feedback":{"type":"string"}},"required":["score","confidence","feedback"]},"description":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100},"confidence":{"type":"number","minimum":0,"maximum":1},"feedback":{"type":"string"}},"required":["score","confidence","feedback"]},"schema":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100},"confidence":{"type":"number","minimum":0,"maximum":1},"feedback":{"type":"string"}},"required":["score","confidence","feedback"]},"annotations":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100},"confidence":{"type":"number","minimum":0,"maximum":1},"feedback":{"type":"string"}},"required":["score","confidence","feedback"]},"output":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100},"confidence":{"type":"number","minimum":0,"maximum":1},"feedback":{"type":"string"}},"required":["score","confidence","feedback"]}},"required":["title","description","schema"]},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"description":{"type":"string"},"feedback":{"type":"string"}},"required":["path","description","feedback"]}},"model":{"type":"string"},"inputTokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"durationMs":{"type":"number","minimum":0},"questionCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["displayName","displayNameConfidence","score","dimensions","fields","model","inputTokens","durationMs","questionCount"]},"error":{"type":"string"}},"required":["tool"]}},"startedAt":{"type":"string"},"completedAt":{"type":"string"},"error":{"type":"string"},"errorCode":{"type":"string"},"hasScoreHistory":{"type":"boolean"}},"required":["status","score","totalTools","tools","hasScoreHistory"]},{"type":"null"}]}},"required":["slug","name","url","icon","description","catalog","protocolMetadata","categoryClassification","reviewUsedAuth","quality","audit","documentationReview"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"description":"Stable application error code, when available.","type":"string"},"details":{}},"required":["error"]}}}}},"parameters":[{"in":"path","name":"slug","schema":{"type":"string","minLength":1,"maxLength":160},"required":true}]}},"/api/auth/sign-in/social":{"post":{"tags":["Auth"],"description":"Sign in with a social provider","operationId":"socialSignIn","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"callbackURL":{"type":"string","description":"Callback URL to redirect to after the user has signed in"},"newUserCallbackURL":{"type":"string"},"errorCallbackURL":{"type":"string","description":"Callback URL to redirect to if an error happens"},"provider":{"anyOf":[{"type":"string","enum":["apple","atlassian","cloudflare","cognito","discord","facebook","figma","github","microsoft","google","huggingface","slack","spotify","twitch","twitter","dropbox","kick","linear","linkedin","gitlab","tiktok","reddit","roblox","salesforce","vk","zoom","notion","kakao","naver","line","paybin","paypal","polar","railway","vercel","wechat"]},{"type":"string"}]},"disableRedirect":{"type":"boolean","description":"Disable automatic redirection to the provider. Useful for handling the redirection yourself"},"idToken":{"type":"object","properties":{"token":{"type":"string","description":"ID token from the provider"},"nonce":{"type":"string","description":"Nonce used to generate the token"},"accessToken":{"type":"string","description":"Access token from the provider"},"refreshToken":{"type":"string","description":"Refresh token from the provider"},"expiresAt":{"type":"number","description":"Expiry date of the token"},"user":{"type":"object","properties":{"name":{"type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"}}},"email":{"type":"string"}},"description":"The user object from the provider. Only available for some providers like Apple."}},"required":["token"]},"scopes":{"type":"array","items":{"type":"string"},"description":"Array of scopes to request from the provider. This will override the default scopes passed."},"requestSignUp":{"type":"boolean","description":"Explicitly request sign-up. Useful when disableImplicitSignUp is true for this provider"},"loginHint":{"type":"string","description":"The login hint to use for the authorization code request"},"additionalParams":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"},"description":"Extra query parameters to append to the provider authorization URL (e.g. Cognito identity_provider, Google hd)."},"additionalData":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["provider"]}}}},"responses":{"200":{"description":"Success - Returns session details (idToken branch) or an authorize URL (redirect branch)","content":{"application/json":{"schema":{"type":"object","description":"Returns session details when idToken is provided, or an authorize URL otherwise","properties":{"token":{"type":"string"},"user":{"type":"object","$ref":"#/components/schemas/User"},"url":{"type":"string"},"redirect":{"type":"boolean"}},"required":["redirect"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/callback/{id}":{"get":{"tags":["Auth"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}},"post":{"tags":["Auth"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"error":{"type":"string"},"device_id":{"type":"string"},"error_description":{"type":"string"},"state":{"type":"string"},"user":{"type":"string"},"iss":{"type":"string"}}}}}},"responses":{"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/get-session":{"get":{"tags":["Auth"],"description":"Get the current session","operationId":"getSession","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":["object","null"],"properties":{"session":{"$ref":"#/components/schemas/Session"},"user":{"$ref":"#/components/schemas/User"}},"required":["session","user"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}},"post":{"tags":["Auth"],"description":"Get the current session","operationId":"getSessionPost","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":["object","null"],"properties":{"session":{"$ref":"#/components/schemas/Session"},"user":{"$ref":"#/components/schemas/User"}},"required":["session","user"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/sign-out":{"post":{"tags":["Auth"],"description":"Sign out the current user","operationId":"signOut","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"callbackURL":{"type":"string","description":"The URL to redirect to after provider logout"},"disableRedirect":{"type":"boolean","description":"Return the provider logout URL without redirecting"},"state":{"type":"string","description":"State to pass to the provider logout endpoint"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"url":{"type":"string","description":"Provider logout URL when RP-initiated logout is available"},"redirect":{"type":"boolean","description":"Whether the client should redirect to the provider logout URL"}}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/sign-up/email":{"post":{"tags":["Auth"],"description":"Sign up a user using email and password","operationId":"signUpWithEmailAndPassword","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the user"},"email":{"type":"string","description":"The email of the user"},"password":{"type":"string","description":"The password of the user"},"image":{"type":"string","description":"The profile image URL of the user"},"callbackURL":{"type":"string","description":"The URL to use for email verification callback"},"rememberMe":{"type":"boolean","description":"If this is false, the session will not be remembered. Default is `true`."}},"required":["name","email","password"]}}}},"responses":{"200":{"description":"Successfully created user","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","nullable":true,"description":"Authentication token for the session"},"user":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier of the user"},"email":{"type":"string","format":"email","description":"The email address of the user"},"name":{"type":"string","description":"The name of the user"},"image":{"type":"string","format":"uri","nullable":true,"description":"The profile image URL of the user"},"emailVerified":{"type":"boolean","description":"Whether the email has been verified"},"createdAt":{"type":"string","format":"date-time","description":"When the user was created"},"updatedAt":{"type":"string","format":"date-time","description":"When the user was last updated"}},"required":["id","email","name","emailVerified","createdAt","updatedAt"]}},"required":["user"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"422":{"description":"Unprocessable Entity. User already exists or failed to create user.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/sign-in/email":{"post":{"tags":["Auth"],"description":"Sign in with email and password","operationId":"signInEmail","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email of the user"},"password":{"type":"string","description":"Password of the user"},"callbackURL":{"type":"string","description":"Callback URL to use as a redirect for email verification"},"rememberMe":{"type":"boolean","description":"If this is false, the session will not be remembered. Default is `true`."}},"required":["email","password"]}}}},"responses":{"200":{"description":"Success - Returns either session details or redirect URL","content":{"application/json":{"schema":{"type":"object","description":"Session response when idToken is provided","properties":{"redirect":{"type":"boolean","enum":[false]},"token":{"type":"string","description":"Session token"},"url":{"type":"string","nullable":true},"user":{"type":"object","$ref":"#/components/schemas/User"}},"required":["redirect","token","user"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/reset-password":{"post":{"tags":["Auth"],"description":"Reset the password for a user","operationId":"resetPassword","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"newPassword":{"type":"string","description":"The new password to set"},"token":{"type":"string","description":"The token to reset the password"}},"required":["newPassword"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean"}}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/verify-password":{"post":{"tags":["Auth"],"description":"Verify the current user's password","operationId":"verifyPassword","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"The password to verify"}},"required":["password"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean"}}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/verify-email":{"get":{"tags":["Auth"],"description":"Verify the email of the user","security":[{"bearerAuth":[]}],"parameters":[{"name":"token","in":"query","description":"The token to verify the email","required":true,"schema":{"type":"string"}},{"name":"callbackURL","in":"query","description":"The URL to redirect to after email verification","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","$ref":"#/components/schemas/User"},"status":{"type":"boolean","description":"Indicates if the email was verified successfully"}},"required":["user","status"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/send-verification-email":{"post":{"tags":["Auth"],"description":"Send a verification email to the user","operationId":"sendVerificationEmail","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"The email to send the verification email to","example":"user@example.com"},"callbackURL":{"type":"string","description":"The URL to use for email verification callback","example":"https://example.com/callback","nullable":true}},"required":["email"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Indicates if the email was sent successfully","example":true}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Verification email isn't enabled"}}}}}},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/change-email":{"post":{"tags":["Auth"],"operationId":"changeEmail","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"newEmail":{"type":"string","description":"The new email address to set must be a valid email address"},"callbackURL":{"type":"string","description":"The URL to redirect to after email verification"}},"required":["newEmail"]}}}},"responses":{"200":{"description":"Email change request processed successfully","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","$ref":"#/components/schemas/User"},"status":{"type":"boolean","description":"Indicates if the request was successful"},"message":{"type":"string","enum":["Email updated","Verification email sent"],"description":"Status message of the email change process","nullable":true}},"required":["status"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/change-password":{"post":{"tags":["Auth"],"description":"Change the password of the user","operationId":"changePassword","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"newPassword":{"type":"string","description":"The new password to set"},"currentPassword":{"type":"string","description":"The current password is required"},"revokeOtherSessions":{"type":"boolean","description":"Must be a boolean value"}},"required":["newPassword","currentPassword"]}}}},"responses":{"200":{"description":"Password successfully changed","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","nullable":true,"description":"New session token if other sessions were revoked"},"user":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier of the user"},"email":{"type":"string","format":"email","description":"The email address of the user"},"name":{"type":"string","description":"The name of the user"},"image":{"type":"string","format":"uri","nullable":true,"description":"The profile image URL of the user"},"emailVerified":{"type":"boolean","description":"Whether the email has been verified"},"createdAt":{"type":"string","format":"date-time","description":"When the user was created"},"updatedAt":{"type":"string","format":"date-time","description":"When the user was last updated"}},"required":["id","email","name","emailVerified","createdAt","updatedAt"]}},"required":["user"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/update-session":{"post":{"tags":["Auth"],"description":"Update the current session","operationId":"updateSession","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","propertyNames":{"type":"string","description":"Field name must be a string"},"additionalProperties":{}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"type":"object","$ref":"#/components/schemas/Session"}}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/update-user":{"post":{"tags":["Auth"],"description":"Update the current user","operationId":"updateUser","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the user"},"image":{"type":"string","description":"The image of the user","nullable":true}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","$ref":"#/components/schemas/User"}}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/delete-user":{"post":{"tags":["Auth"],"description":"Delete the user","operationId":"deleteUser","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"callbackURL":{"type":"string","description":"The callback URL to redirect to after the user is deleted"},"password":{"type":"string","description":"The user's password. Required if session is not fresh"},"token":{"type":"string","description":"The deletion verification token"}}}}}},"responses":{"200":{"description":"User deletion processed successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Indicates if the operation was successful"},"message":{"type":"string","enum":["User deleted","Verification email sent"],"description":"Status message of the deletion process"}},"required":["success","message"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/request-password-reset":{"post":{"tags":["Auth"],"description":"Send a password reset email to the user","operationId":"requestPasswordReset","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"The email address of the user to send a password reset email to"},"redirectTo":{"type":"string","description":"The URL to redirect the user to reset their password. If the token isn't valid or expired, it'll be redirected with a query parameter `?error=INVALID_TOKEN`. If the token is valid, it'll be redirected with a query parameter `?token=VALID_TOKEN"}},"required":["email"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean"},"message":{"type":"string"}}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/reset-password/{token}":{"get":{"tags":["Auth"],"description":"Redirects the user to the callback URL with the token","operationId":"resetPasswordCallback","security":[{"bearerAuth":[]}],"parameters":[{"name":"token","in":"path","required":true,"description":"The token to reset the password","schema":{"type":"string"}},{"name":"callbackURL","in":"query","required":true,"description":"The URL to redirect the user to reset their password","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string"}}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/list-sessions":{"get":{"tags":["Auth"],"description":"List all active sessions for the user","operationId":"listUserSessions","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Session"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/revoke-session":{"post":{"tags":["Auth"],"description":"Revoke a single session","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"The token to revoke"}},"required":["token"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Indicates if the session was revoked successfully"}},"required":["status"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/revoke-sessions":{"post":{"tags":["Auth"],"description":"Revoke all sessions for the user","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Indicates if all sessions were revoked successfully"}},"required":["status"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/revoke-other-sessions":{"post":{"tags":["Auth"],"description":"Revoke all other sessions for the user except the current one","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean","description":"Indicates if all other sessions were revoked successfully"}},"required":["status"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/link-social":{"post":{"tags":["Auth"],"description":"Link a social account to the user","operationId":"linkSocialAccount","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"callbackURL":{"type":"string","description":"The URL to redirect to after the user has signed in"},"provider":{"anyOf":[{"type":"string","enum":["apple","atlassian","cloudflare","cognito","discord","facebook","figma","github","microsoft","google","huggingface","slack","spotify","twitch","twitter","dropbox","kick","linear","linkedin","gitlab","tiktok","reddit","roblox","salesforce","vk","zoom","notion","kakao","naver","line","paybin","paypal","polar","railway","vercel","wechat"]},{"type":"string"}]},"idToken":{"type":"object","properties":{"token":{"type":"string"},"nonce":{"type":"string"},"accessToken":{"type":"string"},"refreshToken":{"type":"string"}},"required":["token"]},"requestSignUp":{"type":"boolean"},"scopes":{"type":"array","items":{"type":"string"},"description":"Additional scopes to request from the provider"},"errorCallbackURL":{"type":"string","description":"The URL to redirect to if there is an error during the link process"},"disableRedirect":{"type":"boolean","description":"Disable automatic redirection to the provider. Useful for handling the redirection yourself"},"loginHint":{"type":"string","description":"The login hint to use for the authorization code request"},"additionalParams":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"},"description":"Extra query parameters to append to the provider authorization URL (e.g. Cognito identity_provider, Google hd)."},"additionalData":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["provider"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"The authorization URL to redirect the user to"},"redirect":{"type":"boolean","description":"Indicates if the user should be redirected to the authorization URL"},"status":{"type":"boolean"}},"required":["redirect"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/list-accounts":{"get":{"tags":["Auth"],"description":"List all accounts linked to the user","operationId":"listUserAccounts","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"providerId":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"accountId":{"type":"string"},"userId":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}}},"required":["id","providerId","createdAt","updatedAt","accountId","userId","scopes"]}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/delete-user/callback":{"get":{"tags":["Auth"],"description":"Callback to complete user deletion with verification token","security":[{"bearerAuth":[]}],"parameters":[{"name":"token","in":"query","schema":{"type":"string","description":"The token to verify the deletion request"}},{"name":"callbackURL","in":"query","schema":{"type":"string","description":"The URL to redirect to after deletion"}}],"responses":{"200":{"description":"User successfully deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Indicates if the deletion was successful"},"message":{"type":"string","enum":["User deleted"],"description":"Confirmation message"}},"required":["success","message"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/unlink-account":{"post":{"tags":["Auth"],"description":"Unlink an account","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","description":"The Better Auth account ID to unlink"}},"required":["accountId"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean"}}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/refresh-token":{"post":{"tags":["Auth"],"description":"Refresh the access token using a refresh token","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"The Better Auth account ID"},"userId":{"type":"string","description":"The user ID associated with the account"}},"required":["accountId"]},{"type":"object","properties":{"useAccountCookie":{"enum":[true],"description":"Select the current OAuth account from its signed cookie"},"userId":{"type":"string","description":"The user ID associated with the account"}},"required":["useAccountCookie"]}]}}}},"responses":{"200":{"description":"Access token refreshed successfully","content":{"application/json":{"schema":{"type":"object","properties":{"tokenType":{"type":"string"},"idToken":{"type":"string"},"accessToken":{"type":"string"},"refreshToken":{"type":"string"},"accessTokenExpiresAt":{"type":"string","format":"date-time"},"refreshTokenExpiresAt":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Invalid refresh token or provider configuration"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/get-access-token":{"post":{"tags":["Auth"],"description":"Get a valid access token, doing a refresh if needed","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"The Better Auth account ID"},"userId":{"type":"string","description":"The user ID associated with the account"}},"required":["accountId"]},{"type":"object","properties":{"useAccountCookie":{"enum":[true],"description":"Select the current OAuth account from its signed cookie"},"userId":{"type":"string","description":"The user ID associated with the account"}},"required":["useAccountCookie"]}]}}}},"responses":{"200":{"description":"A Valid access token","content":{"application/json":{"schema":{"type":"object","properties":{"tokenType":{"type":"string"},"idToken":{"type":"string"},"accessToken":{"type":"string"},"accessTokenExpiresAt":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Invalid refresh token or provider configuration"},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/account-info":{"get":{"tags":["Auth"],"description":"Get the account info provided by the provider","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string","nullable":true},"image":{"type":"string"},"emailVerified":{"type":"boolean"}},"required":["emailVerified"]},"account":{"type":"object","properties":{"id":{"type":"string"},"providerId":{"type":"string"},"accountId":{"type":"string"}},"required":["id","providerId","accountId"],"additionalProperties":false},"data":{"type":"object","properties":{},"additionalProperties":true}},"required":["user","data","account"],"additionalProperties":false}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/ok":{"get":{"tags":["Auth"],"description":"Check if the API is working","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"API is working","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Indicates if the API is working"}},"required":["ok"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/error":{"get":{"tags":["Auth"],"description":"Displays an error page","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"Success","content":{"text/html":{"schema":{"type":"string","description":"The HTML content of the error page"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/sign-in/magic-link":{"post":{"tags":["Magic-link"],"description":"Sign in with magic link","operationId":"signInWithMagicLink","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email address to send the magic link"},"name":{"type":"string","description":"User display name. Only used if the user is registering for the first time. Eg: \"my-name\""},"callbackURL":{"type":"string","description":"URL to redirect after magic link verification"},"newUserCallbackURL":{"type":"string","description":"URL to redirect after new user signup. Only used if the user is registering for the first time."},"errorCallbackURL":{"type":"string","description":"URL to redirect after error."},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Additional metadata to pass to sendMagicLink."}},"required":["email"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean"}}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/magic-link/verify":{"get":{"tags":["Magic-link"],"description":"Verify magic link","operationId":"verifyMagicLink","security":[{"bearerAuth":[]}],"parameters":[{"name":"token","in":"query","schema":{"type":"string","description":"Verification token"}},{"name":"callbackURL","in":"query","schema":{"type":"string","description":"URL to redirect after magic link verification, if not provided the user will be redirected to the root URL. Eg: \"/dashboard\""}},{"name":"errorCallbackURL","in":"query","schema":{"type":"string","description":"URL to redirect after error."}},{"name":"newUserCallbackURL","in":"query","schema":{"type":"string","description":"URL to redirect after new user signup. Only used if the user is registering for the first time."}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"$ref":"#/components/schemas/Session"},"user":{"$ref":"#/components/schemas/User"}}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/create":{"post":{"tags":["Organizations"],"description":"Create an organization","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The name of the organization"},"slug":{"type":"string","minLength":1,"description":"The slug of the organization"},"logo":{"type":["string","null"],"description":"The logo of the organization"},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"The metadata of the organization"},"keepCurrentActiveOrganization":{"type":"boolean","description":"Whether to keep the current active organization active after creating a new one. Eg: true"},"description":{"type":["string","null"]},"companyWebsite":{"type":["string","null"]}},"required":["name","slug"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","description":"The organization that was created","$ref":"#/components/schemas/Organization"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/update":{"post":{"tags":["Organizations"],"description":"Update an organization","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"description":{"type":["string","null"]},"companyWebsite":{"type":["string","null"]},"name":{"type":"string","minLength":1,"description":"The name of the organization"},"slug":{"type":"string","minLength":1,"description":"The slug of the organization"},"logo":{"type":["string","null"],"description":"The logo of the organization"},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"The metadata of the organization"}}},"organizationId":{"type":"string","description":"The organization ID. Eg: \"org-id\""}},"required":["data"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","description":"The updated organization","$ref":"#/components/schemas/Organization"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/delete":{"post":{"tags":["Organizations"],"description":"Delete an organization","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","description":"The organization id to delete"}},"required":["organizationId"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"string","description":"The organization id that was deleted"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/set-active":{"post":{"tags":["Organizations"],"description":"Set the active organization","operationId":"setActiveOrganization","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":["string","null"],"description":"The organization id to set as active. It can be null to unset the active organization. Eg: \"org-id\""},"organizationSlug":{"type":"string","description":"The organization slug to set as active. It can be null to unset the active organization if organizationId is not provided. Eg: \"org-slug\""}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","description":"The organization","$ref":"#/components/schemas/Organization"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/get-organization":{"get":{"tags":["Organizations"],"description":"Get the organization metadata","operationId":"getOrganization","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","description":"The organization","$ref":"#/components/schemas/Organization"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/get-full-organization":{"get":{"tags":["Organizations"],"description":"Get the full organization","operationId":"getFullOrganization","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","description":"The organization","$ref":"#/components/schemas/Organization"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/list":{"get":{"tags":["Organizations"],"description":"List all organizations","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Organization"}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/invite-member":{"post":{"tags":["Organizations"],"description":"Create an invitation to an organization","operationId":"createOrganizationInvitation","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"The email address of the user to invite"},"role":{"anyOf":[{"type":"string","description":"The role to assign to the user"},{"type":"array","items":{"type":"string","description":"The roles to assign to the user"}}],"description":"The role(s) to assign to the user. It can be `admin`, `member`, owner. Eg: \"member\""},"organizationId":{"type":"string","description":"The organization ID to invite the user to"},"resend":{"type":"boolean","description":"Resend the invitation email, if the user is already invited. Eg: true"},"teamId":{"anyOf":[{"type":"string","description":"The team ID to invite the user to"},{"type":"array","items":{"type":"string"},"description":"The team IDs to invite the user to"}]}},"required":["email","role"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"role":{"type":"string"},"organizationId":{"type":"string"},"inviterId":{"type":"string"},"status":{"type":"string"},"expiresAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","email","role","organizationId","inviterId","status","expiresAt","createdAt"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/cancel-invitation":{"post":{"tags":["Organizations"],"security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"invitationId":{"type":"string","description":"The ID of the invitation to cancel"}},"required":["invitationId"]}}}},"responses":{"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/accept-invitation":{"post":{"tags":["Organizations"],"description":"Accept an invitation to an organization","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"invitationId":{"type":"string","description":"The ID of the invitation to accept"}},"required":["invitationId"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"invitation":{"type":"object"},"member":{"type":"object"}}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/get-invitation":{"get":{"tags":["Organizations"],"description":"Get an invitation by ID","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"query","schema":{"type":"string","description":"The ID of the invitation to get"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"role":{"type":"string"},"organizationId":{"type":"string"},"inviterId":{"type":"string"},"status":{"type":"string"},"expiresAt":{"type":"string"},"organizationName":{"type":"string"},"organizationSlug":{"type":"string"},"inviterEmail":{"type":"string"}},"required":["id","email","role","organizationId","inviterId","status","expiresAt","organizationName","organizationSlug","inviterEmail"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/reject-invitation":{"post":{"tags":["Organizations"],"description":"Reject an invitation to an organization","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"invitationId":{"type":"string","description":"The ID of the invitation to reject"}},"required":["invitationId"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"invitation":{"type":"object"},"member":{"type":"object","nullable":true}}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/list-invitations":{"get":{"tags":["Organizations"],"security":[{"bearerAuth":[]}],"parameters":[],"responses":{"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/get-active-member":{"get":{"tags":["Organizations"],"description":"Get the member details of the active organization","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"organizationId":{"type":"string"},"role":{"type":"string"}},"required":["id","userId","organizationId","role"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/check-slug":{"post":{"tags":["Organizations"],"security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","description":"The organization slug to check. Eg: \"my-org\""}},"required":["slug"]}}}},"responses":{"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/remove-member":{"post":{"tags":["Organizations"],"description":"Remove a member from an organization","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"memberIdOrEmail":{"type":"string","description":"The ID or email of the member to remove"},"organizationId":{"type":"string","description":"The ID of the organization to remove the member from. If not provided, the active organization will be used. Eg: \"org-id\""}},"required":["memberIdOrEmail"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"member":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"organizationId":{"type":"string"},"role":{"type":"string"}},"required":["id","userId","organizationId","role"]}},"required":["member"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/update-member-role":{"post":{"tags":["Organizations"],"description":"Update the role of a member in an organization","operationId":"updateOrganizationMemberRole","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"The new role to be applied. This can be a string or array of strings representing the roles. Eg: [\"admin\", \"sale\"]"},"memberId":{"type":"string","description":"The member id to apply the role update to. Eg: \"member-id\""},"organizationId":{"type":"string","description":"An optional organization ID which the member is a part of to apply the role update. If not provided, you must provide session headers to get the active organization. Eg: \"organization-id\""}},"required":["role","memberId"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"member":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"organizationId":{"type":"string"},"role":{"type":"string"}},"required":["id","userId","organizationId","role"]}},"required":["member"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/leave":{"post":{"tags":["Organizations"],"security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","description":"The organization Id for the member to leave. Eg: \"organization-id\""}},"required":["organizationId"]}}}},"responses":{"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/list-user-invitations":{"get":{"tags":["Organizations"],"description":"List all invitations a user has received","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"role":{"type":"string"},"organizationId":{"type":"string"},"organizationName":{"type":"string"},"inviterId":{"type":"string","description":"The ID of the user who created the invitation"},"teamId":{"type":"string","description":"The ID of the team associated with the invitation","nullable":true},"status":{"type":"string"},"expiresAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","email","role","organizationId","organizationName","inviterId","status","expiresAt","createdAt"]}}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/list-members":{"get":{"tags":["Organizations"],"security":[{"bearerAuth":[]}],"parameters":[],"responses":{"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/get-active-member-role":{"get":{"tags":["Organizations"],"security":[{"bearerAuth":[]}],"parameters":[],"responses":{"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/create-role":{"post":{"tags":["Organizations"],"security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string"},"role":{"type":"string","description":"The name of the role to create"},"permission":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}},"description":"The permission to assign to the role"},"additionalFields":{"type":"object","properties":{}}},"required":["role","permission"]}}}},"responses":{"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/delete-role":{"post":{"tags":["Organizations"],"security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"organizationId":{"type":"string"}}},{"anyOf":[{"type":"object","properties":{"roleName":{"type":"string","minLength":1,"description":"The name of the role to delete"}},"required":["roleName"]},{"type":"object","properties":{"roleId":{"type":"string","minLength":1,"description":"The id of the role to delete"}},"required":["roleId"]}]}]}}}},"responses":{"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/list-roles":{"get":{"tags":["Organizations"],"security":[{"bearerAuth":[]}],"parameters":[],"responses":{"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/get-role":{"get":{"tags":["Organizations"],"security":[{"bearerAuth":[]}],"parameters":[],"responses":{"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/update-role":{"post":{"tags":["Organizations"],"security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"organizationId":{"type":"string"},"data":{"type":"object","properties":{"permission":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"roleName":{"type":"string"}}}},"required":["data"]},{"anyOf":[{"type":"object","properties":{"roleName":{"type":"string","minLength":1,"description":"The name of the role to update"}},"required":["roleName"]},{"type":"object","properties":{"roleId":{"type":"string","minLength":1,"description":"The id of the role to update"}},"required":["roleId"]}]}]}}}},"responses":{"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/organization/has-permission":{"post":{"tags":["Organizations"],"description":"Check if the user has permission","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"permission":{"type":"object","description":"The permission to check","deprecated":true},"permissions":{"type":"object","description":"The permission to check"}},"required":["permissions"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"success":{"type":"boolean"}},"required":["success"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/api-key/create":{"post":{"tags":["API Keys"],"description":"Create a new API key for a user","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"configId":{"type":"string","description":"The configuration ID to use for the API key. If not provided, the default configuration will be used."},"name":{"type":"string","description":"Name of the Api Key"},"expiresIn":{"type":["number","null"],"description":"Expiration time of the Api Key in seconds"},"prefix":{"type":"string","description":"Prefix of the Api Key"},"metadata":{},"organizationId":{"type":"string","description":"Organization Id of the organization that the Api Key belongs to. Eg: 'org-id'"}}}}}},"responses":{"200":{"description":"API key created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the API key"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp"},"name":{"type":"string","nullable":true,"description":"Name of the API key"},"prefix":{"type":"string","nullable":true,"description":"Prefix of the API key"},"start":{"type":"string","nullable":true,"description":"Starting characters of the key (if configured)"},"key":{"type":"string","description":"The full API key (only returned on creation)"},"enabled":{"type":"boolean","description":"Whether the key is enabled"},"expiresAt":{"type":"string","format":"date-time","nullable":true,"description":"Expiration timestamp"},"referenceId":{"type":"string","description":"ID of the reference owning the key"},"lastRefillAt":{"type":"string","format":"date-time","nullable":true,"description":"Last refill timestamp"},"lastRequest":{"type":"string","format":"date-time","nullable":true,"description":"Last request timestamp"},"metadata":{"type":"object","nullable":true,"additionalProperties":true,"description":"Metadata associated with the key"},"rateLimitMax":{"type":"number","nullable":true,"description":"Maximum requests in time window"},"rateLimitTimeWindow":{"type":"number","nullable":true,"description":"Rate limit time window in milliseconds"},"remaining":{"type":"number","nullable":true,"description":"Remaining requests"},"refillAmount":{"type":"number","nullable":true,"description":"Amount to refill"},"refillInterval":{"type":"number","nullable":true,"description":"Refill interval in milliseconds"},"rateLimitEnabled":{"type":"boolean","description":"Whether rate limiting is enabled"},"requestCount":{"type":"number","description":"Current request count in window"},"permissions":{"type":"object","nullable":true,"additionalProperties":{"type":"array","items":{"type":"string"}},"description":"Permissions associated with the key"}},"required":["id","createdAt","updatedAt","key","enabled","referenceId","rateLimitEnabled","requestCount"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/api-key/get":{"get":{"tags":["API Keys"],"description":"Retrieve an existing API key by ID","security":[{"bearerAuth":[]}],"parameters":[{"name":"configId","in":"query","schema":{"type":"string","description":"The configuration ID to use for the API key lookup. If not provided, the default configuration will be used."}},{"name":"id","in":"query","schema":{"type":"string","description":"The id of the Api Key"}}],"responses":{"200":{"description":"API key retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"ID"},"name":{"type":"string","nullable":true,"description":"The name of the key"},"start":{"type":"string","nullable":true,"description":"Shows the first few characters of the API key, including the prefix. This allows you to show those few characters in the UI to make it easier for users to identify the API key."},"prefix":{"type":"string","nullable":true,"description":"The API Key prefix. Stored as plain text."},"userId":{"type":"string","description":"The owner of the user id"},"refillInterval":{"type":"number","nullable":true,"description":"The interval in milliseconds between refills of the `remaining` count. Example: 3600000 // refill every hour (3600000ms = 1h)"},"refillAmount":{"type":"number","nullable":true,"description":"The amount to refill"},"lastRefillAt":{"type":"string","format":"date-time","nullable":true,"description":"The last refill date"},"enabled":{"type":"boolean","description":"Sets if key is enabled or disabled","default":true},"rateLimitEnabled":{"type":"boolean","description":"Whether the key has rate limiting enabled"},"rateLimitTimeWindow":{"type":"number","nullable":true,"description":"The duration in milliseconds"},"rateLimitMax":{"type":"number","nullable":true,"description":"Maximum amount of requests allowed within a window"},"requestCount":{"type":"number","description":"The number of requests made within the rate limit time window"},"remaining":{"type":"number","nullable":true,"description":"Remaining requests (every time api key is used this should updated and should be updated on refill as well)"},"lastRequest":{"type":"string","format":"date-time","nullable":true,"description":"When last request occurred"},"expiresAt":{"type":"string","format":"date-time","nullable":true,"description":"Expiry date of a key"},"createdAt":{"type":"string","format":"date-time","description":"created at"},"updatedAt":{"type":"string","format":"date-time","description":"updated at"},"metadata":{"type":"object","nullable":true,"additionalProperties":true,"description":"Extra metadata about the apiKey"},"permissions":{"type":"string","nullable":true,"description":"Permissions for the api key (stored as JSON string)"}},"required":["id","userId","enabled","rateLimitEnabled","requestCount","createdAt","updatedAt"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/api-key/update":{"post":{"tags":["API Keys"],"description":"Update an existing API key by ID","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"configId":{"type":"string","description":"The configuration ID to use for the API key lookup. If not provided, the default configuration will be used."},"keyId":{"type":"string","description":"The id of the Api Key"},"name":{"type":"string","description":"The name of the key"},"enabled":{"type":"boolean","description":"Whether the Api Key is enabled or not"},"remaining":{"type":"number","description":"The number of remaining requests"},"refillAmount":{"type":"number","description":"The refill amount"},"refillInterval":{"type":"number","description":"The refill interval"},"metadata":{},"expiresIn":{"type":["number","null"],"description":"Expiration time of the Api Key in seconds"},"rateLimitEnabled":{"type":"boolean","description":"Whether the key has rate limiting enabled."}},"required":["keyId"]}}}},"responses":{"200":{"description":"API key updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"ID"},"name":{"type":"string","nullable":true,"description":"The name of the key"},"start":{"type":"string","nullable":true,"description":"Shows the first few characters of the API key, including the prefix. This allows you to show those few characters in the UI to make it easier for users to identify the API key."},"prefix":{"type":"string","nullable":true,"description":"The API Key prefix. Stored as plain text."},"userId":{"type":"string","description":"The owner of the user id"},"refillInterval":{"type":"number","nullable":true,"description":"The interval in milliseconds between refills of the `remaining` count. Example: 3600000 // refill every hour (3600000ms = 1h)"},"refillAmount":{"type":"number","nullable":true,"description":"The amount to refill"},"lastRefillAt":{"type":"string","format":"date-time","nullable":true,"description":"The last refill date"},"enabled":{"type":"boolean","description":"Sets if key is enabled or disabled","default":true},"rateLimitEnabled":{"type":"boolean","description":"Whether the key has rate limiting enabled"},"rateLimitTimeWindow":{"type":"number","nullable":true,"description":"The duration in milliseconds"},"rateLimitMax":{"type":"number","nullable":true,"description":"Maximum amount of requests allowed within a window"},"requestCount":{"type":"number","description":"The number of requests made within the rate limit time window"},"remaining":{"type":"number","nullable":true,"description":"Remaining requests (every time api key is used this should updated and should be updated on refill as well)"},"lastRequest":{"type":"string","format":"date-time","nullable":true,"description":"When last request occurred"},"expiresAt":{"type":"string","format":"date-time","nullable":true,"description":"Expiry date of a key"},"createdAt":{"type":"string","format":"date-time","description":"created at"},"updatedAt":{"type":"string","format":"date-time","description":"updated at"},"metadata":{"type":"object","nullable":true,"additionalProperties":true,"description":"Extra metadata about the apiKey"},"permissions":{"type":"string","nullable":true,"description":"Permissions for the api key (stored as JSON string)"}},"required":["id","userId","enabled","rateLimitEnabled","requestCount","createdAt","updatedAt"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/api-key/delete":{"post":{"tags":["API Keys"],"description":"Delete an existing API key","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"keyId":{"type":"string","description":"The id of the API key to delete"}},"required":["keyId"]}}}},"responses":{"200":{"description":"API key deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Indicates if the API key was successfully deleted"}},"required":["success"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}},"/api/auth/api-key/list":{"get":{"tags":["API Keys"],"description":"List all API keys for the authenticated user or for a specific organization","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"API keys retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"apiKeys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"ID"},"name":{"type":"string","nullable":true,"description":"The name of the key"},"start":{"type":"string","nullable":true,"description":"Shows the first few characters of the API key, including the prefix. This allows you to show those few characters in the UI to make it easier for users to identify the API key."},"prefix":{"type":"string","nullable":true,"description":"The API Key prefix. Stored as plain text."},"userId":{"type":"string","description":"The owner of the user id"},"refillInterval":{"type":"number","nullable":true,"description":"The interval in milliseconds between refills of the `remaining` count. Example: 3600000 // refill every hour (3600000ms = 1h)"},"refillAmount":{"type":"number","nullable":true,"description":"The amount to refill"},"lastRefillAt":{"type":"string","format":"date-time","nullable":true,"description":"The last refill date"},"enabled":{"type":"boolean","description":"Sets if key is enabled or disabled","default":true},"rateLimitEnabled":{"type":"boolean","description":"Whether the key has rate limiting enabled"},"rateLimitTimeWindow":{"type":"number","nullable":true,"description":"The duration in milliseconds"},"rateLimitMax":{"type":"number","nullable":true,"description":"Maximum amount of requests allowed within a window"},"requestCount":{"type":"number","description":"The number of requests made within the rate limit time window"},"remaining":{"type":"number","nullable":true,"description":"Remaining requests (every time api key is used this should updated and should be updated on refill as well)"},"lastRequest":{"type":"string","format":"date-time","nullable":true,"description":"When last request occurred"},"expiresAt":{"type":"string","format":"date-time","nullable":true,"description":"Expiry date of a key"},"createdAt":{"type":"string","format":"date-time","description":"created at"},"updatedAt":{"type":"string","format":"date-time","description":"updated at"},"metadata":{"type":"object","nullable":true,"additionalProperties":true,"description":"Extra metadata about the apiKey"},"permissions":{"type":"string","nullable":true,"description":"Permissions for the api key (stored as JSON string)"}},"required":["id","userId","enabled","rateLimitEnabled","requestCount","createdAt","updatedAt"]}},"total":{"type":"number","description":"Total number of API keys"},"limit":{"type":"number","nullable":true,"description":"The limit used for pagination"},"offset":{"type":"number","nullable":true,"description":"The offset used for pagination"}},"required":["apiKeys","total"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Bad Request. Usually due to missing parameters, or invalid parameters."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"description":"Unauthorized. Due to missing or invalid authentication."},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Forbidden. You do not have permission to access this resource or to perform this action."},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Not Found. The requested resource was not found."},"429":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Too Many Requests. You have exceeded the rate limit. Try again later."},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"description":"Internal Server Error. This is a problem with the server that you cannot fix."}}}}},"components":{"schemas":{"CredentialSummary":{"type":"object","properties":{"id":{"type":"string"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Null for production."},"status":{"type":"string","enum":["active","degraded","reauth_required","config_error","audience_mismatch"]},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Machine reason for the status."},"statusDetail":{"anyOf":[{"type":"string"},{"type":"null"}]},"statusChangedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"sharing":{"type":"string","enum":["org","owner"],"description":"`owner`: a personal credential (Manufact authorization servers); `org`: shared with the organization."},"owner":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name"]},"canUse":{"type":"boolean","description":"Whether the requesting user may use this credential in the browser."},"account":{"type":"object","properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["email","name"]},"issuerHost":{"type":"string"},"resourceHost":{"anyOf":[{"type":"string"},{"type":"null"}]},"accessTokenExpiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"lastRefreshedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"nextRefreshAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"connectedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"connectedVia":{"type":"string","enum":["dashboard","deployment_session","connect_by_url","wallet","migration"]},"hasRefreshToken":{"type":"boolean"}},"required":["id","branch","status","reason","statusDetail","statusChangedAt","sharing","owner","canUse","account","issuerHost","resourceHost","accessTokenExpiresAt","lastRefreshedAt","nextRefreshAt","connectedAt","connectedVia","hasRefreshToken"]},"User":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"email":{"type":"string"},"emailVerified":{"type":"boolean","default":false,"readOnly":true},"image":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"role":{"type":"string","readOnly":true},"banned":{"type":"boolean","default":false,"readOnly":true},"banReason":{"type":"string","readOnly":true},"banExpires":{"type":"string","format":"date-time","readOnly":true}},"required":["id","name","email","emailVerified","createdAt","updatedAt"]},"Session":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"expiresAt":{"type":"string","format":"date-time"},"token":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"ipAddress":{"type":"string"},"userAgent":{"type":"string"},"userId":{"type":"string"},"activeOrganizationId":{"type":"string","readOnly":true},"impersonatedBy":{"type":"string","readOnly":true}},"required":["id","expiresAt","token","createdAt","updatedAt","userId"]},"Account":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"accountId":{"type":"string"},"providerId":{"type":"string"},"userId":{"type":"string"},"accessToken":{"type":"string"},"refreshToken":{"type":"string"},"idToken":{"type":"string"},"accessTokenExpiresAt":{"type":"string","format":"date-time"},"refreshTokenExpiresAt":{"type":"string","format":"date-time"},"scope":{"type":"string"},"password":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","accountId","providerId","userId","createdAt","updatedAt"]},"Verification":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"identifier":{"type":"string"},"value":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","identifier","value","expiresAt","createdAt","updatedAt"]},"Jwks":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"publicKey":{"type":"string"},"privateKey":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"alg":{"type":"string"},"crv":{"type":"string"}},"required":["id","publicKey","privateKey","createdAt"]},"OauthClient":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"clientId":{"type":"string"},"clientSecret":{"type":"string"},"clientDiscoveryId":{"type":"string"},"disabled":{"type":"boolean","default":false},"skipConsent":{"type":"boolean"},"enableEndSession":{"type":"boolean"},"subjectType":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"clientCredentialsScopes":{"type":"array","items":{"type":"string"},"default":[]},"userId":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"name":{"type":"string"},"uri":{"type":"string"},"icon":{"type":"string"},"contacts":{"type":"array","items":{"type":"string"}},"tos":{"type":"string"},"policy":{"type":"string"},"softwareId":{"type":"string"},"softwareVersion":{"type":"string"},"softwareStatement":{"type":"string"},"redirectUris":{"type":"array","items":{"type":"string"}},"postLogoutRedirectUris":{"type":"array","items":{"type":"string"}},"backchannelLogoutUri":{"type":"string"},"backchannelLogoutSessionRequired":{"type":"boolean"},"tokenEndpointAuthMethod":{"type":"string"},"applicationType":{"type":"string"},"jwks":{"type":"string"},"jwksUri":{"type":"string"},"grantTypes":{"type":"array","items":{"type":"string"}},"responseTypes":{"type":"array","items":{"type":"string"}},"requirePKCE":{"type":"boolean"},"dpopBoundAccessTokens":{"type":"boolean","default":false},"referenceId":{"type":"string"},"metadata":{"type":"json"}},"required":["id","clientId","redirectUris"]},"OauthResource":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"identifier":{"type":"string"},"name":{"type":"string"},"accessTokenTtl":{"type":"number"},"refreshTokenTtl":{"type":"number"},"signingAlgorithm":{"type":"string"},"signingKeyId":{"type":"string"},"allowedScopes":{"type":"array","items":{"type":"string"}},"customClaims":{"type":"json"},"dpopBoundAccessTokensRequired":{"type":"boolean","default":false},"disabled":{"type":"boolean","default":false},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"policyVersion":{"type":"number","default":1},"metadata":{"type":"json"}},"required":["id","identifier","name"]},"OauthClientResource":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"clientId":{"type":"string"},"resourceId":{"type":"string"},"metadata":{"type":"json"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","clientId","resourceId"]},"OauthRefreshToken":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"token":{"type":"string"},"clientId":{"type":"string"},"sessionId":{"type":"string"},"userId":{"type":"string"},"referenceId":{"type":"string"},"authorizationCodeId":{"type":"string"},"resources":{"type":"array","items":{"type":"string"}},"requestedUserInfoClaims":{"type":"array","items":{"type":"string"}},"expiresAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"revoked":{"type":"string","format":"date-time"},"rotatedAt":{"type":"string","format":"date-time"},"rotationReplayResponse":{"type":"string"},"rotationReplayExpiresAt":{"type":"string","format":"date-time"},"authTime":{"type":"string","format":"date-time"},"confirmation":{"type":"json"},"scopes":{"type":"array","items":{"type":"string"}}},"required":["id","token","clientId","userId","scopes"]},"OauthAccessToken":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"token":{"type":"string"},"clientId":{"type":"string"},"sessionId":{"type":"string"},"userId":{"type":"string"},"referenceId":{"type":"string"},"authorizationCodeId":{"type":"string"},"resources":{"type":"array","items":{"type":"string"}},"requestedUserInfoClaims":{"type":"array","items":{"type":"string"}},"refreshId":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"revoked":{"type":"string","format":"date-time"},"confirmation":{"type":"json"},"scopes":{"type":"array","items":{"type":"string"}}},"required":["id","clientId","scopes"]},"OauthConsent":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"clientId":{"type":"string"},"userId":{"type":"string"},"referenceId":{"type":"string"},"resources":{"type":"array","items":{"type":"string"}},"requestedUserInfoClaims":{"type":"array","items":{"type":"string"}},"scopes":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","clientId","scopes"]},"OauthClientAssertion":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"expiresAt":{"type":"string","format":"date-time"}},"required":["id","expiresAt"]},"Organization":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"slug":{"type":"string"},"logo":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"metadata":{"type":"string"},"description":{"type":"string"},"companyWebsite":{"type":"string"}},"required":["id","name","slug","createdAt"]},"OrganizationRole":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"organizationId":{"type":"string"},"role":{"type":"string"},"permission":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","role","permission","createdAt"]},"Member":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"organizationId":{"type":"string"},"userId":{"type":"string"},"role":{"type":"string","default":"member"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","userId","role","createdAt"]},"Invitation":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"organizationId":{"type":"string"},"email":{"type":"string"},"role":{"type":"string"},"status":{"type":"string","default":"pending"},"expiresAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"inviterId":{"type":"string"}},"required":["id","organizationId","email","status","expiresAt","createdAt","inviterId"]},"Apikey":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"configId":{"type":"string","default":"default","readOnly":true},"name":{"type":"string","readOnly":true},"start":{"type":"string","readOnly":true},"referenceId":{"type":"string","readOnly":true},"prefix":{"type":"string","readOnly":true},"key":{"type":"string","readOnly":true},"refillInterval":{"type":"number","readOnly":true},"refillAmount":{"type":"number","readOnly":true},"lastRefillAt":{"type":"string","format":"date-time","readOnly":true},"enabled":{"type":"boolean","default":true,"readOnly":true},"rateLimitEnabled":{"type":"boolean","default":true,"readOnly":true},"rateLimitTimeWindow":{"type":"number","default":60000,"readOnly":true},"rateLimitMax":{"type":"number","default":20000,"readOnly":true},"requestCount":{"type":"number","default":0,"readOnly":true},"remaining":{"type":"number","readOnly":true},"lastRequest":{"type":"string","format":"date-time","readOnly":true},"expiresAt":{"type":"string","format":"date-time","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true},"permissions":{"type":"string","readOnly":true},"metadata":{"type":"string"}},"required":["id","configId","referenceId","key","createdAt","updatedAt"]},"DeviceCode":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"deviceCode":{"type":"string"},"userCode":{"type":"string"},"userId":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"},"status":{"type":"string"},"lastPolledAt":{"type":"string","format":"date-time"},"pollingInterval":{"type":"number"},"clientId":{"type":"string"},"scope":{"type":"string"}},"required":["id","deviceCode","userCode","expiresAt","status"]}},"securitySchemes":{"apiKeyCookie":{"type":"apiKey","in":"cookie","name":"apiKeyCookie","description":"API Key authentication via cookie"},"bearerAuth":{"type":"http","scheme":"bearer","description":"Bearer token authentication"}}},"tags":[{"name":"AdminAuditLogs"},{"name":"AdminBrowserOps"},{"name":"AdminMonitoring"},{"name":"AdminTunnels"},{"name":"Agents"},{"name":"API Keys","description":"Create and manage API keys for users and organizations."},{"name":"AppSubmission"},{"name":"Auth","description":"Core authentication endpoints for managing user sessions, accounts, and security."},{"name":"Billing","description":"Subscriptions, plans, billing portal, and webhooks."},{"name":"Chat"},{"name":"Chats"},{"name":"Deployments"},{"name":"GitHub"},{"name":"Inspector"},{"name":"Integration Destinations"},{"name":"Magic-link"},{"name":"MCP connect"},{"name":"Models"},{"name":"Onboarding"},{"name":"Organizations","description":"Organizations, members, roles, and invitations."},{"name":"Permissions"},{"name":"Polls"},{"name":"Public"},{"name":"PublicChat"},{"name":"Server Alerts"},{"name":"Server credentials"},{"name":"Server Pools"},{"name":"ServerAudits"},{"name":"ServerEvals"},{"name":"Servers"},{"name":"User Preferences"},{"name":"Vibe"}]}