{"openapi":"3.0.0","info":{"title":"BlockAlt API","version":"0.3.0","description":"BlockAlt protects forms, sign-ins and data reads with a browser proof of work and single-use tokens that your backend verifies. Public endpoints: `/v1/siteverify` (your backend), `/v1/browser/*` (the browser script), `/v1/keys` and `/v1/script-manifest`. Console and management routes (`/v1/auth/*`, `/v1/console/*`) take a console session or a management API key; the scope each route needs is listed in its description. Guides: https://blockalt.click/docs"},"servers":[{"url":"https://blockalt.click","description":"BlockAlt API"}],"tags":[{"name":"Server","description":"Called by your backend"},{"name":"Browser","description":"Called by the browser script"},{"name":"Account","description":"Sign-in, account and security"},{"name":"Console","description":"Workspace management"}],"components":{"securitySchemes":{"siteSecret":{"type":"http","scheme":"bearer","description":"The site's secret key (`ba_sk_…`), from the console's Keys tab. Server-side only: never put it in a page or a repository."},"consoleSession":{"type":"apiKey","in":"cookie","name":"__Host-ba_session","description":"Console session cookie; changes also need the X-CSRF-Token header and the console Origin"},"managementKey":{"type":"http","scheme":"bearer","description":"Workspace management API key (ba_api_…) with scopes read, sites:write, keys:write, billing:read; see /docs/management-api"}},"schemas":{"ScriptManifest":{"type":"object","properties":{"version":{"type":"string"},"path":{"type":"string","example":"/v1/assets/blockalt.<sha256>.js"},"bytes":{"type":"integer"},"gzipBytes":{"type":"integer"},"gzipBudgetBytes":{"type":"integer"},"integrity":{"type":"string","description":"Subresource Integrity"}},"required":["version","path","bytes","gzipBytes","gzipBudgetBytes","integrity"]},"ConfigPublicKeys":{"type":"object","properties":{"configPublicKeys":{"type":"array","items":{"type":"string"}},"current":{"type":"object","properties":{"ed25519":{"type":"string"},"p256":{"type":"string"}},"required":["ed25519","p256"]},"standby":{"type":"array","items":{"type":"string"}}},"required":["configPublicKeys","current","standby"]},"VerificationResult":{"type":"object","properties":{"success":{"type":"boolean"},"reason":{"type":"string","enum":["accepted","invalid_token","expired_token","wrong_site","wrong_hostname","wrong_action","already_used","site_disabled","invalid_secret","invalid_request","origin_denied","action_denied","stale_config","policy_unavailable","service_unavailable","domain_unverified","rule_blocked","rate_limited","challenge_required","invalid_proof","challenge_expired","challenge_used","unpaid","paused","wrong_client","suspended"]},"id":{"type":"string","format":"uuid"},"action":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,64}$"},"hostname":{"type":"string","minLength":1,"maxLength":253,"pattern":"^[a-z0-9.-]+$"},"issuedAt":{"type":"string","format":"date-time"},"test":{"type":"boolean","enum":[true]}},"required":["success","reason","id"]},"ChallengeRequest":{"type":"object","properties":{"siteKey":{"type":"string","pattern":"^ba_pk_[a-zA-Z0-9_-]{16,64}$"},"action":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,64}$"},"configVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true},"v":{"type":"number","enum":[2]}},"required":["siteKey","action","configVersion"],"additionalProperties":false},"ConfigResponse":{"type":"object","properties":{"signed":{"type":"string"},"p256":{"type":"string"},"state":{"type":"string","enum":["active","paused","open"]},"challenge":{"$ref":"#/components/schemas/ChallengeV2"}},"required":["signed"]},"ChallengeV2":{"type":"object","properties":{"challenge":{"type":"string"},"difficulty":{"type":"integer"},"expiresIn":{"type":"integer"},"puzzles":{"type":"integer"},"bits":{"type":"integer"},"seed":{"type":"string"}},"required":["challenge","difficulty","expiresIn","puzzles","bits","seed"]},"IssueRequest":{"type":"object","properties":{"siteKey":{"type":"string","pattern":"^ba_pk_[a-zA-Z0-9_-]{16,64}$"},"action":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,64}$"},"configVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true},"proof":{"anyOf":[{"type":"object","properties":{"challenge":{"type":"string","minLength":1,"maxLength":4096},"nonce":{"type":"string","pattern":"^\\d{1,12}$"}},"required":["challenge","nonce"],"additionalProperties":false},{"type":"object","properties":{"challenge":{"type":"string","minLength":1,"maxLength":1024},"nonces":{"type":"array","items":{"type":"integer","minimum":0,"maximum":4294967295},"minItems":1,"maxItems":32}},"required":["challenge","nonces"],"additionalProperties":false}]}},"required":["siteKey","action","configVersion"],"additionalProperties":false},"VerifyRequest":{"type":"object","properties":{"token":{"type":"string","maxLength":4096},"hostname":{"type":"string","minLength":1,"maxLength":253,"pattern":"^[a-z0-9.-]+$"},"action":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,64}$"},"remoteip":{"anyOf":[{"type":"string","format":"ip"},{"type":"string","format":"ip"}]},"idempotencyKey":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"}},"required":["token","hostname","action"],"additionalProperties":false},"ConsoleError":{"type":"object","properties":{"error":{"type":"string","example":"reauthentication_required"},"message":{"type":"string"},"id":{"type":"string","format":"uuid"}},"required":["error","message","id"]}},"parameters":{}},"paths":{"/v1/script-manifest":{"get":{"tags":["Browser"],"summary":"Current browser script","description":"The content-addressed path of the current script under `/v1/assets/`, its size and its Subresource Integrity hash. Files under `/v1/assets/` are immutable and kept across releases.","responses":{"200":{"description":"The current script release","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScriptManifest"}}}},"503":{"description":"This server has no built script","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["script_not_built"]}},"required":["error"]}}}}}}},"/v1/keys":{"get":{"tags":["Browser"],"summary":"Configuration keys to pin","description":"The public keys that sign site configurations: the current Ed25519 and P-256 keys, then standby keys for a rotation. Pin every key of `configPublicKeys` in the script tag or `createClient`. Public, cacheable for five minutes.","responses":{"200":{"description":"Public configuration keys to pin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigPublicKeys"}}}}}}},"/v1/browser/challenge":{"post":{"tags":["Browser"],"summary":"Proof-of-work challenge (version 1 scripts)","description":"Called by the browser script, never by your backend. Version 2 scripts receive their challenge with the configuration (`v=2&action=`); version 1 scripts pinned before still ask here. The Origin header must be one of the site's origins. Bodies may be sent as `text/plain` (a CORS simple request).","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeRequest"}}}},"responses":{"200":{"description":"Proof-of-work challenge","content":{"application/json":{"schema":{"type":"object","properties":{"challenge":{"type":"string"},"difficulty":{"type":"number"},"expiresIn":{"type":"number"}},"required":["challenge","difficulty","expiresIn"]}}}},"400":{"description":"`invalid_request`: the body does not match the schema or is not JSON","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}},"403":{"description":"Refused: `origin_denied`, `action_denied`, `stale_config`, `rule_blocked`, `domain_unverified`…","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}},"413":{"description":"`invalid_request`: the body is larger than 8 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}},"415":{"description":"`invalid_request`: the body is not sent as JSON","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}},"429":{"description":"`rate_limited`: too many requests; wait `Retry-After` seconds","headers":{"Retry-After":{"description":"Seconds to wait before trying again","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}},"503":{"description":"`service_unavailable` or `policy_unavailable`: a temporary failure, retry with backoff","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}}}}},"/v1/browser/config/{siteKey}":{"get":{"tags":["Browser"],"summary":"Signed site configuration","description":"Called by the browser script. Returns the short-lived configuration signed with Ed25519 (`signed`) and P-256 (`p256`); with `v=2&action=` also the proof-of-work challenge for that action. `state` says whether the site is checked (`active`) or lets actions through unchecked (`paused`, `open` for a priced workspace without credit).","parameters":[{"schema":{"type":"string","pattern":"^ba_pk_[a-zA-Z0-9_-]{16,64}$"},"required":true,"name":"siteKey","in":"path"},{"schema":{"type":"string","enum":["2"]},"required":false,"name":"v","in":"query"},{"schema":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,64}$"},"required":false,"name":"action","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sdk","in":"query"}],"responses":{"200":{"description":"Signed short-lived site configuration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigResponse"}}}},"400":{"description":"`invalid_request`: a path or query value is malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}},"403":{"description":"Refused: unknown site key (`invalid_request`), `origin_denied`, `domain_unverified`, `rule_blocked`…","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}},"429":{"description":"`rate_limited`: too many requests; wait `Retry-After` seconds","headers":{"Retry-After":{"description":"Seconds to wait before trying again","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}},"503":{"description":"`service_unavailable` or `policy_unavailable`: a temporary failure, retry with backoff","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}}}}},"/v1/browser/token":{"post":{"tags":["Browser"],"summary":"Single-use token for a solved challenge","description":"Called by the browser script with the solved proof of work. The token is valid for 120 seconds and once: send it to your backend, which verifies it with `/v1/siteverify`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueRequest"}}}},"responses":{"200":{"description":"Single-use token issued","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string"},"expiresIn":{"type":"number","enum":[120]}},"required":["token","expiresIn"]}}}},"400":{"description":"`invalid_request`: the body does not match the schema or is not JSON","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}},"403":{"description":"Refused: `invalid_proof`, `challenge_expired`, `challenge_used`, `stale_config`, `origin_denied`, `rule_blocked`…","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}},"413":{"description":"`invalid_request`: the body is larger than 8 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}},"415":{"description":"`invalid_request`: the body is not sent as JSON","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}},"429":{"description":"`rate_limited`: too many requests; wait `Retry-After` seconds","headers":{"Retry-After":{"description":"Seconds to wait before trying again","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}},"503":{"description":"`service_unavailable` or `policy_unavailable`: a temporary failure, retry with backoff","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}}}}},"/v1/siteverify":{"post":{"tags":["Server"],"summary":"Verify a token on your backend","description":"Call it from your backend, with the site's secret key as a bearer token, for every protected action. Allow the action only when `success` is true: the reason is then `accepted`, `paused` (protection paused) or `unpaid` (a priced workspace without credit: reachable, not checked). Every other reason refuses it; treat reasons you do not know as refusals. A token works once; repeat a verification safely with `idempotencyKey`.","security":[{"siteSecret":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyRequest"}}}},"responses":{"200":{"description":"The decision: `success` true (accepted, paused, unpaid) or false with the refusal reason","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}},"400":{"description":"`invalid_request`: the body does not match the schema or is not JSON","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}},"401":{"description":"`invalid_secret`: the secret key is missing, wrong or revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}},"413":{"description":"`invalid_request`: the body is larger than 8 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}},"415":{"description":"`invalid_request`: the body is not sent as JSON","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}},"429":{"description":"`rate_limited`: too many requests; wait `Retry-After` seconds","headers":{"Retry-After":{"description":"Seconds to wait before trying again","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}},"503":{"description":"`service_unavailable` or `policy_unavailable`: a temporary failure, retry with backoff","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}}}}},"/v1/auth/challenge":{"post":{"summary":"Proof of work for an account form","tags":["Account"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"purpose":{"type":"string","enum":["login","register","reset"]},"email":{"type":"string","maxLength":254,"format":"email"}},"required":["purpose"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/register":{"post":{"summary":"Start a sign-up (emails a link)","tags":["Account"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email"},"proof":{"type":"object","properties":{"challenge":{"type":"string","maxLength":400},"nonces":{"type":"array","items":{"type":"integer","minimum":0,"maximum":4294967295},"maxItems":32}},"required":["challenge","nonces"],"additionalProperties":false}},"required":["email"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/registration":{"post":{"summary":"Check a sign-up link","tags":["Account"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":1,"maxLength":128}},"required":["token"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/complete-registration":{"post":{"summary":"Choose the password from the link","tags":["Account"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":1,"maxLength":128},"password":{"type":"string","minLength":12,"maxLength":128}},"required":["token","password"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/login":{"post":{"summary":"Sign in","tags":["Account"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email"},"password":{"type":"string","minLength":12,"maxLength":128},"code":{"type":"string","maxLength":128,"default":""},"proof":{"type":"object","properties":{"challenge":{"type":"string","maxLength":400},"nonces":{"type":"array","items":{"type":"integer","minimum":0,"maximum":4294967295},"maxItems":32}},"required":["challenge","nonces"],"additionalProperties":false},"passkey":{"type":"object","properties":{"id":{"type":"string","maxLength":4096,"pattern":"^[A-Za-z0-9_-]*$"},"response":{"type":"object","properties":{"clientDataJSON":{"type":"string","maxLength":4096,"pattern":"^[A-Za-z0-9_-]*$"},"authenticatorData":{"type":"string","maxLength":4096,"pattern":"^[A-Za-z0-9_-]*$"},"signature":{"type":"string","maxLength":4096,"pattern":"^[A-Za-z0-9_-]*$"},"userHandle":{"type":"string","nullable":true,"maxLength":4096,"pattern":"^[A-Za-z0-9_-]*$"}},"required":["clientDataJSON","authenticatorData","signature"]}},"required":["id","response"]}},"required":["email","password"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/me":{"get":{"summary":"The signed-in account and its workspaces","tags":["Account"],"security":[{"consoleSession":[]}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/verify-email":{"post":{"summary":"Confirm the email address","tags":["Account"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":1,"maxLength":128}},"required":["token"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/resend-verification":{"post":{"summary":"Send the confirmation email again","tags":["Account"],"security":[{"consoleSession":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/reset-request":{"post":{"summary":"Email a password reset link","tags":["Account"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email"},"proof":{"type":"object","properties":{"challenge":{"type":"string","maxLength":400},"nonces":{"type":"array","items":{"type":"integer","minimum":0,"maximum":4294967295},"maxItems":32}},"required":["challenge","nonces"],"additionalProperties":false}},"required":["email"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/reset-password":{"post":{"summary":"Choose a new password from the link","tags":["Account"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":1,"maxLength":128},"password":{"type":"string","minLength":12,"maxLength":128},"code":{"type":"string","maxLength":128,"default":""}},"required":["token","password"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/mfa/setup":{"post":{"summary":"Start setting up an authenticator","tags":["Account"],"security":[{"consoleSession":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","maxLength":128,"default":""}},"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/mfa/confirm":{"post":{"summary":"Confirm the authenticator","tags":["Account"],"security":[{"consoleSession":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","pattern":"^\\d{6}$"}},"required":["code"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/reauthenticate":{"post":{"summary":"Confirm a second factor for sensitive changes","tags":["Account"],"security":[{"consoleSession":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","maxLength":128,"default":""},"passkey":{"type":"object","properties":{"id":{"type":"string","maxLength":4096,"pattern":"^[A-Za-z0-9_-]*$"},"response":{"type":"object","properties":{"clientDataJSON":{"type":"string","maxLength":4096,"pattern":"^[A-Za-z0-9_-]*$"},"authenticatorData":{"type":"string","maxLength":4096,"pattern":"^[A-Za-z0-9_-]*$"},"signature":{"type":"string","maxLength":4096,"pattern":"^[A-Za-z0-9_-]*$"},"userHandle":{"type":"string","nullable":true,"maxLength":4096,"pattern":"^[A-Za-z0-9_-]*$"}},"required":["clientDataJSON","authenticatorData","signature"]}},"required":["id","response"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/recovery-codes":{"get":{"summary":"Recovery codes left","tags":["Account"],"security":[{"consoleSession":[]}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}},"post":{"summary":"Create new recovery codes","tags":["Account"],"security":[{"consoleSession":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/passkeys/options":{"post":{"summary":"Options for a passkey ceremony","tags":["Account"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"purpose":{"type":"string","enum":["register","login","fresh"]},"email":{"type":"string","maxLength":254,"format":"email"}},"required":["purpose"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/passkeys":{"get":{"summary":"List passkeys","tags":["Account"],"security":[{"consoleSession":[]}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}},"post":{"summary":"Add a passkey","tags":["Account"],"security":[{"consoleSession":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"credential":{"type":"object","properties":{"id":{"type":"string","maxLength":4096,"pattern":"^[A-Za-z0-9_-]*$"},"response":{"type":"object","properties":{"clientDataJSON":{"type":"string","maxLength":4096,"pattern":"^[A-Za-z0-9_-]*$"},"attestationObject":{"type":"string","maxLength":4096,"pattern":"^[A-Za-z0-9_-]*$"}},"required":["clientDataJSON","attestationObject"]}},"required":["id","response"]}},"required":["name","credential"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/passkeys/remove":{"post":{"summary":"Remove a passkey","tags":["Account"],"security":[{"consoleSession":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/password":{"post":{"summary":"Change the password","tags":["Account"],"security":[{"consoleSession":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"current":{"type":"string","minLength":1,"maxLength":128},"password":{"type":"string","minLength":12,"maxLength":128}},"required":["current","password"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/email":{"post":{"summary":"Change the email address","tags":["Account"],"security":[{"consoleSession":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email"}},"required":["email"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/email/confirm":{"post":{"summary":"Confirm a new email address","tags":["Account"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":1,"maxLength":128}},"required":["token"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/email/revert":{"post":{"summary":"Undo an email change","tags":["Account"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":1,"maxLength":128}},"required":["token"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/sessions":{"get":{"summary":"List console sessions","tags":["Account"],"security":[{"consoleSession":[]}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/sessions/revoke":{"post":{"summary":"End sessions","tags":["Account"],"security":[{"consoleSession":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/logout":{"post":{"summary":"Sign out","tags":["Account"],"security":[{"consoleSession":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"all":{"type":"boolean","default":false}},"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/invitations":{"get":{"summary":"Pending invitations for this account","tags":["Account"],"security":[{"consoleSession":[]}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/invitations/decline":{"post":{"summary":"Decline an invitation","tags":["Account"],"security":[{"consoleSession":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/invitation-preview":{"post":{"summary":"What an invitation link is for","tags":["Account"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":1,"maxLength":128}},"required":["token"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/account/delete":{"post":{"summary":"Ask to delete the account (emails a link)","tags":["Account"],"security":[{"consoleSession":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/auth/confirm-deletion":{"post":{"summary":"Confirm an account or workspace deletion","tags":["Account"],"security":[{"consoleSession":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":1,"maxLength":128}},"required":["token"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/sites":{"get":{"summary":"List sites with their setup health","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `read` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}},"post":{"summary":"Create a site (returns its first secret key)","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `sites:write` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"origins":{"type":"array","items":{"type":"string","maxLength":300},"minItems":1,"maxItems":20},"actions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,64}$"},"minItems":1,"maxItems":64},"policy":{"type":"object","properties":{"mode":{"type":"string","enum":["pow","block"]},"difficulty":{"type":"integer","minimum":8,"maximum":16},"ratePerMinute":{"type":"integer","minimum":1,"maximum":600},"blockedActions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,64}$"},"maxItems":64}},"required":["mode","difficulty","ratePerMinute","blockedActions"],"additionalProperties":false},"enabled":{"type":"boolean"},"name":{"type":"string","minLength":1,"maxLength":100}},"required":["origins","actions","policy","enabled","name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/sites/{id}":{"get":{"summary":"A site with keys, hostnames and versions","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `read` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/sites/{id}/draft":{"post":{"summary":"Save a settings draft","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `sites:write` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"origins":{"type":"array","items":{"type":"string","maxLength":300},"minItems":1,"maxItems":20},"actions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,64}$"},"minItems":1,"maxItems":64},"policy":{"type":"object","properties":{"mode":{"type":"string","enum":["pow","block"]},"difficulty":{"type":"integer","minimum":8,"maximum":16},"ratePerMinute":{"type":"integer","minimum":1,"maximum":600},"blockedActions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,64}$"},"maxItems":64}},"required":["mode","difficulty","ratePerMinute","blockedActions"],"additionalProperties":false},"enabled":{"type":"boolean"},"expectedVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true}},"required":["origins","actions","policy","enabled","expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/sites/{id}/publish":{"post":{"summary":"Publish a settings version","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `sites:write` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"integer","minimum":0,"exclusiveMinimum":true},"expectedVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true}},"required":["version","expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/sites/{id}/state":{"post":{"summary":"Resume, pause or lock down protection","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"state":{"type":"string","enum":["active","paused","lockdown"]},"expectedVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true}},"required":["state","expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/sites/{id}/verify-domain":{"post":{"summary":"Check a hostname's DNS TXT record","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `sites:write` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hostname":{"type":"string","pattern":"^[a-z0-9.-]{1,253}$"}},"required":["hostname"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/sites/{id}/keys":{"post":{"summary":"Create a server key (shown once)","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `keys:write` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","nullable":true,"minLength":1,"maxLength":60}},"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/sites/{id}/revoke-key":{"post":{"summary":"Revoke a server key","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `keys:write` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"keyId":{"type":"string","format":"uuid"}},"required":["keyId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/sites/{id}/key-label":{"post":{"summary":"Name a server key","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `keys:write` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"keyId":{"type":"string","format":"uuid"},"label":{"type":"string","nullable":true,"minLength":1,"maxLength":60}},"required":["keyId","label"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/sites/{id}/rename":{"post":{"summary":"Rename a site","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `sites:write` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/sites/{id}/delete":{"post":{"summary":"Delete a site","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"confirm":{"type":"string","maxLength":200}},"required":["confirm"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/sites/{id}/alerts":{"post":{"summary":"Set the site's alert rules","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `sites:write` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"verificationPerMinute":{"type":"integer","nullable":true,"minimum":1,"maximum":100000},"issuancePerMinute":{"type":"integer","nullable":true,"minimum":10,"maximum":1000000},"silentHours":{"type":"integer","nullable":true,"minimum":1,"maximum":72}},"required":["verificationPerMinute","issuancePerMinute","silentHours"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/sites/{id}/live":{"get":{"summary":"Installation check: recent verifications","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `read` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/sites/{id}/events":{"get":{"summary":"Decision log (seven days)","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `read` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/sites/{id}/refusals":{"get":{"summary":"Refusals counted per minute (seven days): browser side, or phase=verification","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `read` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/sites/{id}/analytics":{"get":{"summary":"Daily decision counts","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `read` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/sites/{id}/events.csv":{"get":{"summary":"Decision log as CSV","tags":["Console"],"description":"Console session, or a management API key with the `read` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"CSV file","content":{"text/csv":{"schema":{"type":"string"}}}}}}},"/v1/console/sites/{id}/analytics.csv":{"get":{"summary":"Daily decision counts as CSV","tags":["Console"],"description":"Console session, or a management API key with the `read` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"CSV file","content":{"text/csv":{"schema":{"type":"string"}}}}}}},"/v1/console/sites/{id}/usage":{"get":{"summary":"Accepted verifications per day","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `read` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/billing":{"get":{"summary":"Wallet, plan, usage and forecast","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `billing:read` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/billing/status":{"get":{"summary":"Billing state for banners and badges","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `billing:read` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/billing/ledger":{"get":{"summary":"Credit ledger","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `billing:read` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/billing/orders":{"get":{"summary":"Top-up orders","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `billing:read` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/billing/orders/{id}":{"get":{"summary":"A top-up receipt","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `billing:read` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/billing/statements":{"get":{"summary":"Months with a statement","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `billing:read` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/billing/statement":{"get":{"summary":"A month's statement","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `billing:read` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/billing/export":{"get":{"summary":"Ledger or usage as CSV","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `billing:read` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/billing/topups":{"post":{"summary":"Start a top-up (WayCash checkout)","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","format":"uuid"},"amountCents":{"type":"integer","minimum":1,"maximum":10000000}},"required":["orderId","amountCents"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/billing/threshold":{"post":{"summary":"Set the low-balance warning","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lowBalanceCents":{"type":"integer","nullable":true,"minimum":0,"maximum":10000000}},"required":["lowBalanceCents"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/sites/{id}/ledger":{"get":{"summary":"Ledger rows of one site (legacy)","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `billing:read` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/sites/{id}/topups":{"post":{"summary":"Top up from a site page (legacy)","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","format":"uuid"},"amountCents":{"type":"integer","minimum":1,"maximum":10000000}},"required":["orderId","amountCents"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/workspace":{"get":{"summary":"The workspace's name and your role","tags":["Console"],"description":"Console session (owner or admin for changes), or a management API key with the `read` scope.","security":[{"consoleSession":[]},{"managementKey":[]}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}},"post":{"summary":"Rename the workspace","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/members":{"get":{"summary":"List members","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/invitations":{"get":{"summary":"List pending invitations","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}},"post":{"summary":"Invite someone","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email"},"role":{"type":"string","enum":["admin","member"]}},"required":["email","role"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/invitations/revoke":{"post":{"summary":"Revoke an invitation","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/accept-invitation":{"post":{"summary":"Accept an invitation","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","maxLength":128},"id":{"type":"string","format":"uuid"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/members/remove":{"post":{"summary":"Remove a member","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","format":"uuid"}},"required":["userId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/members/role":{"post":{"summary":"Change a member's role","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","format":"uuid"},"role":{"type":"string","enum":["admin","member"]}},"required":["userId","role"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/leave":{"post":{"summary":"Leave the workspace","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/transfer-ownership":{"post":{"summary":"Transfer ownership to an admin","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","format":"uuid"}},"required":["userId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/audit":{"get":{"summary":"Audit log","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/audit/actors":{"get":{"summary":"People and keys in the audit log","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/export":{"get":{"summary":"Export the workspace as JSON","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/workspace/delete":{"post":{"summary":"Ask to delete the workspace (emails a link)","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/api-keys":{"get":{"summary":"List management API keys","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}},"post":{"summary":"Create a management API key (shown once)","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"scopes":{"type":"array","items":{"type":"string","enum":["read","sites:write","keys:write","billing:read"]},"minItems":1,"maxItems":4},"expiresInDays":{"anyOf":[{"type":"number","enum":[7]},{"type":"number","enum":[30]},{"type":"number","enum":[90]},{"type":"number","enum":[365]},{"nullable":true}],"default":90}},"required":["name","scopes"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/api-keys/revoke":{"post":{"summary":"Revoke a management API key","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/notifications":{"get":{"summary":"Notification destinations and delivery","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"401":{"description":"Not signed in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: role or API key scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}},"post":{"summary":"Add a notification destination (webhook secret shown once)","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["email"]},"label":{"type":"string","minLength":1,"maxLength":100},"recipients":{"type":"string","enum":["managers","members"],"default":"managers"}},"required":["kind","label"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["slack","discord","siem"]},"label":{"type":"string","minLength":1,"maxLength":100},"url":{"type":"string","maxLength":2000,"format":"uri"}},"required":["kind","label","url"],"additionalProperties":false}]}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/notifications/{id}/toggle":{"post":{"summary":"Enable or disable a destination","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"}},"required":["enabled"],"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/notifications/{id}/delete":{"post":{"summary":"Delete a destination","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}},"/v1/console/notifications/test":{"post":{"summary":"Send a test notification","tags":["Console"],"description":"Console session only: management API keys get `403 session_required`.","security":[{"consoleSession":[]},{"managementKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"endpointId":{"type":"string","format":"uuid"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Response","content":{"application/json":{"schema":{"nullable":true}}}},"400":{"description":"Invalid request or values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"401":{"description":"Not signed in, or a refused password or code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"403":{"description":"Refused: origin, CSRF token, role, scope, or `reauthentication_required` (confirm a second factor and retry)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"404":{"description":"Not found in this workspace","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"409":{"description":"Conflict: a version changed, or a quota is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleError"}}}}}}}}}